MATLAB求解微分方程數值解,MATLAB解常微分方程的數值解

2021-03-03 21:12:47 字數 2960 閱讀 4239

1樓:匿名使用者

結果:**

回:答clear all

clcf=@(x,y)([y(2);

0.357*y(1)-0.1905*y(1)*y(2)]);

[x,y]=ode45(f,[0 100],[3 0]);

plot(x,y(:,1),x,y(:,2)),legend('y','dy/dt')

xlabel('x')

matlab解常微分方程的數值解

2樓:匿名使用者

使用matlab的dsolve()函式,可以解得其微分方程的解析解。

y =- lambertw(0, -exp(-x^2)) - 1式中:62616964757a686964616fe58685e5aeb931333363373663 lambertw()是朗伯w函式,w*exp(w) = x.

【x y】

1.0000 -0.0000

1.1000 -0.5163

1.2000 -0.6707

1.3000 -0.7671

1.4000 -0.8336

1.5000 -0.8813

1.6000 -0.9159

1.7000 -0.9410

1.8000 -0.9592

1.9000 -0.9722

2.0000 -0.9813

2.1000 -0.9877

2.2000 -0.9920

2.3000 -0.9949

2.4000 -0.9968

2.5000 -0.9981

2.6000 -0.9988

2.7000 -0.9993

2.8000 -0.9996

2.9000 -0.9998

3.0000 -0.9999

3.1000 -0.9999

3.2000 -1.0000

3.3000 -1.0000

3.4000 -1.0000

3.5000 -1.0000

3.6000 -1.0000

3.7000 -1.0000

3.8000 -1.0000

3.9000 -1.0000

4.0000 -1.0000

。。。。。

圖形及**如下:

用matlab解微分方程數值解並作圖

3樓:高等數學答案

先定義個函

bai數:

function f=fffff(t,y)f=[y(2);cos(y(1))];

然後du

[t,y]=ode45(@fffff,[0,2],[0,0]);

plot(t,y(:,1),'r',t,y(:,2),'b')即可。我給你設了初值zhi【0,0】,你可以自己定dao義。紅線版為y,藍線為y'.

你先把權上面的函式fffff寫成m檔案,儲存到你的matlab工作目錄裡,然後再在命令視窗輸入:

[t,y]=ode45(@fffff,[0,2],[0,0]);

plot(t,y(:,1),'r',t,y(:,2),'b')我作過,能做出影象的。

matlab微分方程數值解如何精確定位特定一點處的解

4樓:匿名使用者

但是並不需要將整個範圍的結果都算出來再插值

這個時候可以設定觸發事件函式在一定條件下停止計算

用odeset可以為ode45求解器設定觸發事件的函式

詳細的用法要仔細檢視matlab的幫助檔案,這裡我以你的題目,舉個例子

微分方程還是用你的函式fun

在用ode45解方程之前,再寫一個函式:事件觸發函式eventfun,

它的格式固定要返回三個值,這三個值的意思是

當第一個值vaule的值到達0時,時間會觸發

而根據第二個值isterminal設定,觸發時間會否終止求解

第三個值是設定觸發過0的方向

function [value,isterminal,direction] = eventfun(t,x)

value=x(1)-100; %觸發時間,當其值為0的時候,時間會觸發

isterminal=1; %設為1時會,觸發時間會停止求解器,設0時觸發不影響工作

direction=1; %觸發方向設1時是上升觸發,設-1是下降觸發,設0是雙向觸發

end寫好fun和eventfun之後,你就可以呼叫ode45解方程了

但用ode45之前記得先用odeset,將觸發函式加入哦

op=odeset('events',@eventfun);

[t,x,tend,xend,evennum]=ode45(@fun,[0,15],[0 0],op);

這樣你看看,到達100米時,求解器就停住了

細心的你注意,ode45多返回了tend,xend,evennum三個引數

第一個tend是觸發事件發生的時間

第二個xend是觸發時間發生時刻的x

第三個evenum是標識觸發事件的編號

由於這裡只設定了一個觸發事件,所以編號肯定是1

其實你也可以將該時間isterminal設為0

那麼求解器不會因為觸發事件而停止15秒內的解都會算出

你仍舊可以根據tend 和 xend得到到達100米時的時間和狀態

額外提示,有時候你不知道到底取多大的時間範圍才能夠等到你要的觸發時間

那麼你可以用迴圈判斷的方法,先設一個時間範圍,然後求解

到最後都沒有等到觸發事件(tend和xend都是空矩陣)

那麼適當延長求解時間區間,將上次的最後時刻和狀態作為初始狀態

再一次求解時間範圍更大的解,如此直到找到觸發事件才停止

解微分方程,解一個微分方程

第一步,為可分離變數的微分方程。dy 2e xdx 第二步,對等式兩邊分別求不定積分。y c1 2e x c2 y 2e x c 一階線性微分方程解的結構如下 形如y p x y q x 的微分方程稱為一階線性微分方程,q x 稱為自由項。一階,指的是方程中關於y的導數是一階導數。線性,指的是方程簡...

偏微分方程組的matlab求解,matlab解偏微分方程組,如何程式設計

你為什麼不bai在matlab裡用du doc pdepe 命令看這個函式的幫助文zhi件呢?第一個例子dao足夠回答你回的所有問題,按照matlab 所需 答要的格式 pl ul exp t ql 0 pr ur exp 1 t qr 0 matlab解偏微分方程組,如何程式設計 你要是用有限復差...

全微分方程,高數,在高數解微分方程的時候,全微分方程的求解公式是怎麼來的望達人告知一下推導過程感激不盡

因為那些和前面的重複了啊,你的是格林公式那邊的吧,對y積分的結果是3x 2y 2 2 xy 3 y 3 3,是和對x的是重複了 大一高數,求解全微分方程,求幫助 你合併錯了。我明天給你寫詳細過程。不對,要是換個來話不是同一個減法。在高數解微分方程的時候,全微分方程的求解公式是怎麼來的?望達人告知一下...