在matlab中求解大型ODE系统

时间:2017-06-09 15:05:24

标签: matlab

我是matlab的新手,我正在尝试用数字方式解决以下系统:

enter image description here

我可以解决单个S的问题,但是我需要在N = 1000(我从1到N运行)的情况下解决它,我不知道如何扩展我的代码。

clearvars;
tSpan = [0 10];

S0 = [1/2*sind(45)*cosd(45) 1/2*sind(45)*sind(45)  1/2*cosd(45)];

[t,S] = ode45(@eom,tSpan,S0);

plot(t,S(:,1),t,S(:,2),t,S(:,3))
legend('Sx','Sy','Sz')

%plot(S(:,1),S(:,2));

在文件eom.m中

function dSdt = eom(t,S)
    G=5;
    k=1;
    deltax = -G*k*S(1);
    deltay =-G*k*S(2);
    B(1) = 2*k*deltax;
    B(2) = 2*k*deltay;
    B(3) = k*k;

    dSdt = [B(2)*S(3)-B(3)*S(2);B(3)*S(1)-B(1)*S(3);B(1)*S(2)-B(2)*S(1)];
end

0 个答案:

没有答案