日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

方程求解的实验 matlab,matlab 实验四 求微分方程的解

發布時間:2023/12/14 循环神经网络 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方程求解的实验 matlab,matlab 实验四 求微分方程的解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實際應用問題通過數學建模所歸納而得到的方程,絕大多數都是微分方程,真正能得到代數方程的機會很少.另一方面,能夠求解的微分方程也是十分有限的,特別是高階方程和偏微分方程(組).這就要求我們必須研究微分方程(組)的解法,既要研究微分方程(組)的解析解法(精確解),更要研究微分方程(組)的數值解法(近似解).

對微分方程(組)的解析解法(精確解),Matlab有專門的函數可以用,本實驗將作一定的介紹.

本實驗將主要研究微分方程(組)的數值解法(近似解),重點介紹Euler折線法.

1.dsolve('equ1','equ2',…):Matlab求微分方程的解析解.equ1、equ2、…為方程(或條件).寫方程(或條件)時用Dy表示y關于自變量的一階導數,用用D2y表示y關于自變量的二階導數,依此類推.

2.simplify(s):對表達式s使用maple的化簡規則進行化簡.

例如:

syms x

simplify(sin(x)^2 + cos(x)^2)

ans=1

3.[r,how]=simple(s):由于Matlab提供了多種化簡規則,simple命令就是對表達式s用各種規則進行化簡,然后用r返回最簡形式,how返回形成這種形式所用的規則.

例如:

syms x

[r,how]=simple(cos(x)^2-sin(x)^2)

r = cos(2*x)

how = combine

4.[T,Y] = solver(odefun,tspan,y0)求微分方程的數值解.

說明:

(1)其中的solver為命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb之一.

(2) odefun是顯式常微分方程:

(3)在積分區間tspan=

上,從到,用初始條件求解.

(4)要獲得問題在其他指定時間點上的解,則令tspan=

(要求是單調的).

(5)因為沒有一種算法可以有效地解決所有的ODE問題,為此,Matlab提供了多種求解器Solver,對于不同的ODE問題,采用不同的Solver.

求解器

Solver

ODE類型

特點

說明

ode45

非剛性

單步算法;4、5階Runge-Kutta方程;累計截斷誤差達

大部分場合的首選算法

ode23

非剛性

單步算法;2、3階Runge-Kutta方程;累計截斷誤差達

使用于精度較低的情形

ode113

非剛性

多步法;Adams算法;高低精度均可到

計算時間比ode45短

ode23t

適度剛性

采用梯形算法

適度剛性情形

ode15s

剛性

多步法;Gear's反向數值微分;精度中等

若ode45失效時,可嘗試使用

ode23s

剛性

單步法;2階Rosebrock算法;低精度

當精度較低時,計算時間比ode15s短

ode23tb

剛性

梯形算法;低精度

當精度較低時,計算時間比ode15s短

(6)要特別的是:ode23、ode45是極其常用的用來求解非剛性的標準形式的一階常微分方程(組)的初值問題的解的Matlab的常用程序,其中:

ode23采用龍格-庫塔2階算法,用3階公式作誤差估計來調節步長,具有低等的精度.

ode45則采用龍格-庫塔4階算法,用5階公式作誤差估計來調節步長,具有中等的精度.

5.ezplot(x,y,[tmin,tmax]):符號函數的作圖命令.x,y為關于參數t的符號函數,[tmin,tmax]為t的取值范圍.

6.inline():建立一個內聯函數.格式:inline('expr', 'var1', 'var2',…),注意括號里的表達式要加引號.

例:Q = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi).

1.幾個可以直接用Matlab求微分方程精確解的例子:

例1:求解微分方程,并加以驗證.

求解本問題的Matlab程序為:

syms x y ?????????????????????????????????%line1

y=dsolve('Dy+2*x*y=x*exp(-x^2)','x')???????? ?%line2

diff(y,x)+2*x*y-x*exp(-x^2)???????????????? ?%line3

simplify(diff(y,x)+2*x*y-x*exp(-x^2))???????? ?%line4

說明:

(1)行line1是用命令定義x,y為符號變量.這里可以不寫,但為確保正確性,建議寫上;

(2)行line2是用命令求出的微分方程的解:

1/2*exp(-x^2)*x^2+exp(-x^2)*C1

(3)行line3使用所求得的解.這里是將解代入原微分方程,結果應該為0,但這里給出:

-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)

(4)行line4用simplify()函數對上式進行化簡,結果為0,表明的確是微分方程的解.

例2:求微分方程在初始條件下的特解,并畫出解函數的圖形.

求解本問題的Matlab程序為:

syms x y

y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')

ezplot(y)

微分方程的特解為:y=1/x*exp(x)+1/x* exp (1)(Matlab格式),即,解函數的圖形如圖1:

圖1

例3:求微分方程組在初始條件下的特解,并畫出解函數的圖形.

求解本問題的Matlab程序為:

syms x y t

[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t')

simple(x);

simple(y);

ezplot(x,y,[0,1.3]);axis auto

微分方程的特解(式子特別長)以及解函數的圖形均略.

2.用ode23、ode45等求解非剛性的標準形式的一階常微分方程(組)的初值問題的數值解(近似解).

例4:求解微分方程初值問題的數值解,求解范圍為區間[0, 0.5].

fun=inline('-2*y+2*x^2+2*x','x','y');

[x,y]=ode23(fun,[0,0.5],1);

x';

y';

plot(x,y,'o-')

>> x'

ans =

0.0000 ??0.0400 ??0.0900? ?0.1400? ?0.1900 ??0.2400

0.2900 ??0.3400 ??0.3900 ??0.4400 ??0.4900? ?0.5000

>> y'

ans =

1.0000 ??0.9247 ??0.8434 ??0.7754 ??0.7199 ??0.6764

0.6440? ?0.6222 ??0.6105 ??0.6084? ?0.6154 ??0.6179

圖形結果為圖2.

圖2

例5:求解描述振蕩器的經典的Ver der Pol微分方程

分析:令則

先編寫函數文件verderpol.m:

function xprime = verderpol(t,x)

global mu;

xprime = [x(2);mu*(1-x(1)^2)*x(2)-x(1)];

再編寫命令文件vdp1.m:

global mu;

mu = 7;

y0=[1;0]

[t,x] = ode45('verderpol',[0,40],y0);

x1=x(:,1);x2=x(:,2);

plot(t,x1)

圖形結果為圖3.

圖3

3.用Euler折線法求解

前面講到過,能夠求解的微分方程也是十分有限的.下面介紹用Euler折線法求微分方程的數值解(近似解)的方法.

Euler折線法求解的基本思想是將微分方程初值問題

化成一個代數方程,即差分方程,主要步驟是用差商替代微商,于是:

記,從而,則有

例6:用Euler折線法求解微分方程初值問題

的數值解(步長h取0.4),求解范圍為區間[0,2].

解:本問題的差分方程為

相應的Matlab程序見附錄1.

數據結果為:

0 ????????1.0000

0.4000??? 1.4000

0.8000??? 2.1233

1.2000??? 3.1145

1.6000??? 4.4593

2.0000??? 6.3074

圖形結果見圖4:

圖4

特別說明:本問題可進一步利用四階Runge-Kutta法求解,讀者可將兩個結果在一個圖中顯示,并和精確值比較,看看哪個更“精確”?(相應的Matlab程序參見附錄2).

1.求微分方程的通解.

2.求微分方程的通解.

3.求微分方程組

在初始條件下的特解,并畫出解函數的圖形.

4.分別用ode23、ode45求上述第3題中的微分方程初值問題的數值解(近似解),求解區間為.利用畫圖來比較兩種求解器之間的差異.

5.用Euler折線法求解微分方程初值問題

的數值解(步長h取0.1),求解范圍為區間[0,2].

6.用四階Runge-Kutta法求解微分方程初值問題

的數值解(步長h取0.1),求解范圍為區間[0,3].

四階Runge-Kutta法的迭代公式為(Euler折線法實為一階Runge-Kutta法):

相應的Matlab程序參見附錄2.試用該方法求解第5題中的初值問題.

7.用ode45方法求上述第6題的常微分方程初值問題的數值解(近似解),從而利用畫圖來比較兩者間的差異.

總結

以上是生活随笔為你收集整理的方程求解的实验 matlab,matlab 实验四 求微分方程的解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。