MATLAB求解非線性高階微分方程組方法

時間 2021-08-30 23:44:03

1樓:信科濱

參考

回答的一樣的問題,還有下面的程式

function dy=odefun(t,y)

%y(1) x

%y(2) x'

%y(3) y

%y(4) y'

%y(5) z

%y(6) z'

u=9.8*1;

dy=zeros(6,1);

dy(1)=y(2);

dy(2)=-u*y(1)/sqrt(y(1)^2+y(3)^2+y(5)^2)^3;

dy(3)=y(4);

dy(4)=-u*y(3)/sqrt(y(1)^2+y(3)^2+y(5)^2)^3;

dy(5)=y(6);

dy(6)=-u*y(5)/sqrt(y(1)^2+y(3)^2+y(5)^2)^3;

end命令列中

tspan=[0,50];

y0=[909;-156;173;445;173;445];

[t,y]=ode45(@odefun,[0,10],y0);

注意:u=gm需要自己修改

tspan為你的時間區間

y(end,:),就為你50s的解。

2樓:匿名使用者

只會mathematica的路過……話說你的μ忘了給啊。

3樓:匿名使用者

回答的一樣的問題,還有下面的程式

function dy=odefun(t,y)%y(1) x

%y(2) x'

%y(3) y

%y(4) y'

%y(5) z

%y(6) z'

u=9.8*1;

dy=zeros(6,1);

dy(1)=y(2);

dy(2)=-u*y(1)/sqrt(y(1)^2+y(3)^2+y(5)^2)^3;

dy(3)=y(4);

dy(4)=-u*y(3)/sqrt(y(1)^2+y(3)^2+y(5)^2)^3;

dy(5)=y(6);

dy(6)=-u*y(5)/sqrt(y(1)^2+y(3)^2+y(5)^2)^3;

end命令列中

tspan=[0,50];

y0=[909;-156;173;445;173;445];

[t,y]=ode45(@odefun,[0,10],y0);

注意:u=gm需要自己修改

tspan為你的時間區間

y(end,:),就為你50s的解。

如何用matlab求解非線性微分方程組

4樓:匿名使用者

使用符號運算工具。

首先定義變數符號

syms s x t;

使用字串定義公式

eq1 = 'diff(x, t) = 0.11*s*x/(0.06*x+s)';

eq2 = 'diff(s, t) = (-1)*0.029*x-0.234*s/(0.006*x+s)-s/(30*s^2+300*s+0.03)';

接下來是求解 比如現在要求解s,下面的**可以給出s的表示式solution = solve(eq1, eq2, s);

接下來求值

首先給變數賦值

x = 1;

t = 1;

之後執行

result = eval(solution);

可以求出解。

我現在寫出的**可能有錯誤,不過思路是這樣的。我沒除錯。詳細情況可以搜尋 matlab 符號運算。

5樓:梨子也發飆了

若求解析解,沒有解,過程如下:

dsolve('dx=0.11*s*x/(0.006*x+s)','ds=-0.

029*x-0.234*s/(0.006*x+s)-s/(30*s^2+300*s+0.

003)','t')

warning: explicit solution could not be found.

> in dsolve at 101

ans =

[ empty sym ]

若求數值解,過程如下:

m函式定義:

function dy=f7(t,y)

dy=[0.11*y(1)*y(2)/(0.006*y(1)+y(2));-0.

029*y(1)-0.234*y(2)/(0.006*y(1)+y(2))-y(2)/(30*y(2)^2+300*y(2)+0.

003)];

主程式:

[t,y]=ode45('f7',[0,20],[0;0])t =0

0.5000

1.0000

1.5000

2.0000

2.5000

3.0000

3.5000

4.0000

4.5000

5.0000

5.5000

6.0000

6.5000

7.0000

7.5000

8.0000

8.5000

9.0000

9.5000

10.0000

10.5000

11.0000

11.5000

12.0000

12.5000

13.0000

13.5000

14.0000

14.5000

15.0000

15.5000

16.0000

16.5000

17.0000

17.5000

18.0000

18.5000

19.0000

19.5000

20.0000

y =0 0

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

nan nan

貌似也不理想,不知道是不是初值設的不好的原因!

matlab如何解非線性常微分方程組,一共二十個方程。

6樓:望涵滌

這個方程要解出來還要初始條件吧

不妨設(x(0),y(0))=(a,b);

還有用ode45只能得到數值解,不能給出解析式表達那麼先建立一個函式檔案

test_fun.m

function dx=tsst_fun(x,t)dx(1)= c-b*x(1)-w*x(1)*x(2);

dx(2)=w*x(1)*x(2)-(b+m)*x(2);

那麼呼叫ode45

x0=(0,0);

t0=0:0.01:10;

;%根據你所想要的求得值設定t0,間隔是任意的,與求解所用的步長無關,

[x,t]=ode45(@test_fun,t0,x0);得到了

如何matlab解三元二階非線性微分方程組?

7樓:匿名使用者

三元二階非線性微分方程組用matlab解,可以按下列思路求解。

首先,自定義微分方程組函式,其內容:

dy(1)=x(2);%降階

dy(2)=0.6615-(0.3*x(2)+2848*x(1)+0.

0025*x(3)+1.227e3*(x(1)^3+x(1))/(x(1)^2-1e-4))/0.0675

dy(3)=(0.025*x(2)-x(3)/2e5)/2.135其二,確定初值,x0=[0,0,0];

其三,確定時間變數範圍,t【0,10】

其四,用ode45函式求解。其命令格式

[t,x]=ode45(@func,tspan,x0)其五,用plot函式繪製t—x(t)、t—dx/dt、t—v(t)執行結果,可以發現,該方程似乎為振動型方程,其x的振幅為±3.8,vx速度為±800,vx速度為±4e-3

用matlab求非線性微分方程問題

手機使用者 順序書這樣的 syms xa t pe 34.1952 1 xa 356.452 37.477 xa 1.529731063 ps 31.801 xa 0.0208 356.452 37.477 xa 1.529731063 ph 38.982 xa 356.452 37.477 xa ...

matlab中nlinfit非線性擬合求引數

袁怡圃 補充回答 資料不好 建立函式檔案 function y myfun beta,x y 2.350176 beta 1 1 1 beta 2 1 1 x 1 1 beta 2 beta 2 2.x 1 1 beta 2 1 beta 2 x 1 1 beta 2 0.5 x 2 執行 x 0....

matlab擬合非線性函式,如何用matlab進行已知函式的非線性擬合

兔子和小強 線性模型 非線性模型是以待優化引數w為參考 而不是看x y w x 表示轉置 描述的是線性模型。題目中要擬合的函式是 y w0 w1 cos a wn cosna,它同樣符合y w x,其中x 1 cosa cosna 設x構成的集合是x,y構成的集合是y,可依據最小二乘法求出w xx ...