2016-04-28 2 views
0

Я новичок в MATLAB, и я пытаюсь найти решение дифференциального уравнения. Мое уравнение: d^2x/dt^2 - sin (t) * (dx/dt) = x. Я пытаюсь решить при t = 10 и предположить, что начальные значения указаны для t = 0. Я понятия не имею, с чего начать с этой помощью.Дифференциальное уравнение MATLAB2

+0

[ 'ode45' пример] (HTTP: //www.mathworks.com/help/matlab/ref/ode45.html#bu3uj8b). – TroyHaskin

+0

Вы можете найти [это сообщение в блоге] (http://blogs.mathworks.com/loren/2013/06/10/from-symbolic-differential-equations-to-their-numeric-solution/) из инструктивного материала MathWorks. – horchler

ответ

0

Я рекомендую использовать синтаксис моделирования состояний, где мы рассматриваем x как вектор нашей переменной состояния (x) и ее последующей производной.

Вот пример кода для решения вашей начальной задачи:
(я использовал Freemat, но он должен быть одинаковым для MATLAB)

function [] = ode() 

% Time 
t_start = 0.0; 
t_final = 10.0; 

% Lets treat x as a vector 
% x(1) = x 
% x(2) = dx/dt (first derivative of x) 
x0 = [0.1; 0]; % Initial conditions 

options = odeset('AbsTol',1e-12,'RelTol',1e-6,'InitialStep',1e-6,'MaxStep',1e-2); % stepping tolerances 
[t,x] = ode45(@system, [t_start t_final], x0, options); % Run the differential equation solver 

hold on 
plot(t,x(:,1),'r-') 
plot(t,x(:,2),'b-') 
hold off 

end 

% Define the differential equation 
function dxdt = system(t,x) 

dxdt = [x(2); ... % derivative of x(1) is x(2) 
x(1) + sin(t)*x(2)]; % derivative of x(2) is x + sin(t)*dx/dt 

end 

Resulting plot

Смежные вопросы