Я пытаюсь создать программу для решения следующей системы с ode23
:
2y’ + z’–y + 2z = 0
y’ + 3z’ –3y +z = 0
с начальными значениями:
y(0) = 1
z(0) = 0
и аналитическое решение:
y = cos (x)
z = sin (x)
но когда я меняю переменную 4:
function dy = eqdif2(t,y)
%2y’ + z’ –y + 2z = 0;
%y’ + 3z’ –3y +z = 0
% y(0) = 1, Z(0) = 0
% y=y(1), z=y(2), y'=y(3), z'=y(4)
dy = [-2*y(3)+y(1)-2*y(2);3*y(1)-y(2)-3*y(4)];
У меня проблема с ode23
, сообщаю только о 2 решениях:
clc,clear;
yp = [1 0]; %initial values
options = odeset('RelTol', 1e-4);
[t,y]= ode23('eqdif2',[0 20],yp,options);
ya=cos(x);
za=sin(x);
figure;
plot(t,y(:,1),'-');
figure;
plot(t,ya,t,za);
y
иdy
- 2 на 1, но вы по какой-то причине пытаетесь проиндексировать вy(3)
иy(4)
. Я предполагаю, что ваш код выдает ошибку? Если да, укажите это в вопросе. У вас есть два ODE первого порядка. Вам нужно будет их разъединить. Вектор состояния составляет всего 2 на 1. Также отформатируйте свой вопрос. Я уже один раз убирал. - person horchler   schedule 27.05.2015