Matlab解ODE,需要有例子說明,方法多者優

時間 2021-05-07 20:01:40

1樓:匿名使用者

這是最簡單的單步euler方法解初值ode的**。其中,diffeq是微分方程右端,是一個需要你自己編寫的m檔案

在matlab中,你可以使用ode23或是ode45來進行常微分方程求解。這是自適應方法,效率很高。

最後附上euler方法,中點法以及4階runge-kutta方法解ode的**

matlab 程式中 ode 都有哪些? 比如ode15、ode23 ode45,各有什麼優缺點?適用範圍有哪些?

2樓:

這張圖來自於matlab 技術論壇,這是一個非常有價值的**,裡面高手雲集,希望你可以進去看看,裡面有非常詳細的關於ode的介紹

matlab 用ode23 解方程舉例

3樓:匿名使用者

算微分方程的

有ode23、ode45等等好多種

都是 龍格-庫塔 方法但是ode45個精確一些用法例如

[t,y] = ode23(@f,[0 2*pi],2)第一引數是迭代函式

第二個引數是t的取值範圍

第三個引數是y的初值

matlab中ode45的例子如何執行

4樓:求雅韻

1、第一步將下面的檔案命令儲存為rigid.m的檔案。

function dy = rigid(t,y)

dy = zeros(3,1); % a column vector

dy(1) = y(2) * y(3);

dy(2) = -y(1) * y(3);

dy(3) = -0.51 * y(1) * y(2);

2、在command視窗輸入

options = odeset('reltol',1e-4,'abstol',[1e-4 1e-4 1e-5]);

[t,y] = ode45(@rigid,[0 12],[0 1 1],options);

plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.')

matlab ode45 與ode15s 有什麼區別 應該怎麼選擇?

5樓:匿名使用者

以下是我個人的一些理解,供參考:

matlab提供了7個常微分方程求解器(solver),分別是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3個適用於求解非剛性(nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。

ode45基於顯式4-5階龍格庫塔公式,其演算法屬於單步法;ode15s是一個變階求解器,用的是多步法。

對於很多問題,這些求解器都是可以使用的,儘管可能存在一些效率和精度方面的差異。

但是,這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,matlab也沒必要提供這麼多求解器。

要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。matlab在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。

如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據matlab的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。

6樓:地表最帥

matlab提供了7個常微分方程求解器(solver),分別是ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb,其中前3個適用於求解非剛性(nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。

這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,matlab也沒必要提供這麼多求解器。

要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。matlab在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。

如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據matlab的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。

matlab中ode45方法求解微分方程組 20

7樓:匿名使用者

使用ode45解微分方程組,可以用下列格式來求解。

[t,x]=ode45(odefun,tspan,x0)式中:odefun——給定微分方程組的自定義函式;tspan——自變數t的範圍,即【t0,tf】;x0——x的初值向量,即x1(0),x1'(0),x2(0),x2'(0),x3(0),x3'(0)

由於沒有給出自變數t的範圍和x的初值,所以不能得到其x1,x2,x3的值。

8樓:來自天湖山嫋嫋娜娜的黑耳鳶

我想問一下**中的方程組,右邊若採用三角函式該怎麼程式設計序求解,能不能指導一下,謝謝

matlab中ode45解微分方程後,怎樣獲取函式值

9樓:我的小名叫仙女

示例如下:bai

odefun=@(t,y) (y+3*t)/t^2; %定義函式tspan=[0 2.3]; !

y0=-2; %初值

du[t,y]=ode45(odefun,tspan,y0);

其中求解zhi區間為0~

dao2.3,那麼最後結果的y的最後一個

專y(length(y))

屬就是y(2.3)

怎樣用matlab中用ode45求解帶有分段引數的微分方程組

10樓:匿名使用者

分段函式的一個簡單方法就是分了幾段就寫幾個函式:

定義一個主調函式、兩個子函式

最後一個主調程式呼叫

function dx=fun(t,x)

dx=zeros(2,1);

f=;dc(t)=diff('f','t');%f就是你的c(t)dx(1)=x(2)*dc(t);

dx(2)=x(1)+6*t^2;%0<=t<=2ode45(@fun,[0 2],[初值])

matlab ode45和ode23有什麼區別

11樓:

引用一下matlab論壇裡大神的回答:

總得來說:二者演算法相似,只不過ode45比ode23精度要高一點,其它沒什麼差別。

具體ode是matlab專門用於解微分方程的功能函式;solver有變步長(variable-step)和定步長(fixed-step)兩種型別,不同型別有著不同的求解器。ode45求解器屬於變步長的一種,採用runge-kutta演算法;和他採用相同演算法的變步長求解器還有ode23。ode45表示採用四階,五階runge-kutta單步演算法,截斷誤差為(δx)3。

解決的是nonstiff(非剛性)的常微分方程.是解決數值解問題的首選方法,若長時間沒結果,應該就是剛性的,換用ode23來解。

12樓:匿名使用者

ode23 是 bogacki 和 shampine 的顯式 runge-kutta (2,3) 對的實現。在容

差較寬鬆且剛度適中的情況下,它可能比 ode45 更加有效。ode23 是單步求解器,是求解非剛性微分方程的低階方法。(在數學中,剛性方程是指一個微分方程,其數值分析的解只有在時間間隔很小時才會穩定,只要時間間隔略大,其解就會不穩定。

目前很難去精確地去定義哪些微分方程是剛性方程,但是大體的想法是:這個方程的解包含有快速變化的部分。)

參考其中ode23和ode45的對比網頁連結

關於matlab的ode45用法

渠振鍾離傲冬 3.6.2 龍格 庫塔方法 改進的尤拉法比尤拉法精度高的原因在於,它在確定平均斜率時,多取了一個點的斜 率值。這樣,如果我們在 xi,x i 1 上多取幾個點的斜率值,然後對它們作線性組合得到平均 斜率,則有可能構造出精度更高的計算方法。這就是龍格 庫塔法的基本思想。龍格 庫塔 法可看...

MATLAB關於一段ode45的程式報錯

劉復民 我給你執行了一下沒錯啊 這是一部分資料 不過你在第一個函式儲存時函式名應該是 hj把 266.7452 266.7543 266.7634 266.7725 266.7816 266.7907 266.7997 266.8088 266.8179 266.8270 266.8361 266....

matlab的符號解是什麼,matlab的符號解是什麼

符號解即對有符號的代數式子,用符號進行推導,得出的結果中含有代數符號,比如 求解方程 a x 2 b x c 0 solve a x 2 b x c ans 1 2 a b b 2 4 a c 1 2 1 2 a b b 2 4 a c 1 2 是符號,你應該把符號轉換為變數處理。 x的多項式,那麼...