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