
Anubis написа:Ако напишеш началните условия, ще мога да реша уравнението ти числено.

clear all
clc
tic
%===================================
% ЗАДАВАНЕ НА МРЕЖАТА
%===================================
x0 = 0; xend = 3; h = (xend-x0)/100;
x = x0 : h : xend;
N = length(x);
y = zeros(1,N);
%===================================
% ФУНКЦИЯТА f(t)
%===================================
f = inline('t^2');
%===================================
% НАЧАЛНИ УСЛОВИЯ
%===================================
alpha1 = 0.5;
alpha2 = 0;
y(1) = alpha1;
y(2) = y(1)- h^2 / 2 * y(1) * ...
f(x(1)) + alpha2;
%===================================
% ПРЕСМЯТАНЕ НА РЕШЕНИЕТО ЧРЕЗ
% ДИФЕРЕНЧНА СХЕМА С ЛОКАЛНА ГРЕШКА НА
% АПРОКСИМАЦИЯТА O(h^2)
%===================================
for i = 2 : N-1
y(i+1) = -h^2 * y(i) * f(x(i)) + ...
2 * y(i) - y(i-1);
end
%===================================
% НАМИРАНЕ НА ТОЧНОТО РЕШЕНИЕ
%===================================
sol = dsolve('D2u+u*t^2=0','u(0)=alpha1,Du(0)=alpha2');
sol1 = subs(sol,'alpha1',alpha1);
sol2 = subs(sol1,'alpha2',alpha2);
tt = x;
solExact = subs(sol2,'t',tt);
%===================================
% ЧЕРТЕЖ НА РЕШЕНИЯТА
%===================================
plot(x,y,'b','LineWidth',3)
hold on
grid on
plot(tt,solExact,'g--','LineWidth',3)
set(gca,'FontName','Times','FontSize',12)
xlabel('$$ t \in [0; \, 3] $$','interpreter','latex')
ylabel('$$ x(t) $$','interpreter','latex')
legend('\it{Approximated}','\it{Exact}')
title('\it{Nonlinear second-ordered ODE}')
toc

pretty(dsolve('Dx+x^2=t^(w(t))','x(0)=x0','t'))
Назад към Диференциални уравнения
Регистрирани потребители: Google [Bot]