我完全陷入了我的一个问题集。
我应该使用Matlab解决以下ODE系统:
o'(u) = R-acos(u)/sqrt(b^2 + (R-acosu)^2)
e'(u) = Rcos(o)
n'(u) = Rsin(o)
R,a,b are constants
u goes from 0 to 2pi
我应该使用Runge Kutta方法,我之前没有尝试过。 我已经有一段时间了,但是甚至不知道从哪里开始 - 这就是为什么我没有任何代码可以告诉你。我一直在做很多googleing但没有结果。
如果有人能帮助我,我将不胜感激!
答案 0 :(得分:0)
阅读math use of ODE solvers和syntax of calling a specific solver上提供的友好手册。这里的经典方式是
function yprime = odefunc(u,y,R,a,b)
o=y(1); e=y(2); n=y(3);
oprime = R-a*cos(u)/sqrt(b^2 + (R-a*cos(u))^2);
eprime = R*cos(o);
nprime = R*sin(o);
yprime = [oprime; eprime; nprime ];
end //function
在定义初始条件,时间范围和参数后,将其称为
[t,y] = ode45(@(t,y) odefunc(t,y,R,a,b), [t0, tf], [o0; e0; n0])