0

我完全被我的一组问题困住了。

我应该使用 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 方法。我已经做了很长一段时间了,但甚至不知道从哪里开始——这就是为什么我真的没有任何代码可以给你看。我一直在做很多谷歌搜索,但没有结果。

如果有人可以帮我一把,将不胜感激!

4

1 回答 1

0

阅读 mathworks 提供的友好手册,了解ODE 求解器的使用和调用特定求解器的语法。这里的经典方式是

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])
于 2015-05-06T09:14:34.913 回答