1
我想学习如何使用MATLAB解微分方程(Lorenz系统)的系统,并绘制每个解决方案作为t的函数常微分方程的系统解决在使用ODE45
X’ = −σx + σy
Y’ = ρx − y − xz
Z’ = −βz + xy
其中σ = 10
,β = 8/3
和ρ = 28
以及x(0) = −8
,y(0) = 8
和z(0) = 27
。
这里是我使用的代码:
function xprime = example(t,x)
sig = 10;
beta = 8/3;
rho = 28;
xprime = [-sig*x(1) + sig*x(2);
rho*x(1) - x(2) - x(1)*x(3);
-beta*x(3) + x(1)*x(2)];
x0 = [-8 8 27];
tspan = [0 20];
[t,x] = ode45(@example, tspan, x0);
figure
plot(t,x(:,1)), hold on
plot(t,x(:,2)), hold on
plot(t,x(:,3)), hold off
然而,这会产生一个错误,我该如何解决这个问题?我不确定哪些输入参数丢失或哪里出错。我感谢任何帮助,谢谢。
输入参数不足。
示例中的错误(第9行) xprime = [ - sig x(1)+ sig x(2); (1) - x(2) - x(1)x(3); -βeta x(3)+
x(1)* x(2)];
你递归 - 是故意的,还是...? –
也许,我只是因为我不知道写一个更好的方法。 – Tina