資源描述:
《matlab微分方程邊值問題.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、個人收集整理勿做商業(yè)用途我知道微分方程邊值問題,把微分變成差分,然后解方程組可解.但是這個問題邊界值不是函數(shù)的邊界值,而是函數(shù)導數(shù)的邊界值,請問怎么處理?看了2本書,也沒答案比如y’’+y'+y=f(x)a1〈=x<=a2y’(a1)=b1,y'(a2)=b22011—5—1408:23最佳答案這個方程最簡單的方法是用shootingmethod??蓋iki之。主要就假設一個y(a1),然后看,y'(a2)是否等于b2.可以用matlab寫兩個小函數(shù),一個用在ode45(fun1),然后y(a1)的值可以用fzero(fun2
2、)。fun1就是把二階微分化成一階方程組,fun2就是調(diào)用ode45并返回y’(a2)—b2.這樣會自動求出初值的。別外這個方程可能有解析解??梢岳酶窳趾瘮?shù)來解,得到一個積分形式的解。給你看一個我以前寫的例子吧。適當改下就行了.functionout=fdif(eta,f)out=zeros(size(f));out(1)=f(2);out(2)=f(3);out(3)=f(2)^2—1-f(1)*f(3);functionresult=soldif(x)[etaout,fout]=ode45(’fdif',[0,10],[
3、0,0,x]);result=fout(end,2)—1;追問您好,最近看了一下shootingmethod,發(fā)現(xiàn)我這個問題似乎不能應用此辦法,我的方程齊次項是y''+9/4y=0,shootingmethod是把原方程分解為y=u+c*v,c是常數(shù),v就是齊次方程.x的區(qū)間是[—pi,pi],這就導致了一個問題,因為shootingmethod要求v‘(—pi)=0,所以v’(pi)=0,c無法求解。我看的shootingmethod例子邊界條件是y=..。而不是y‘=。。.請問我該如何處理,兩邊求導?回答你對shootin
4、gmethod的理解好像不太對(或者說和我說的不一樣)。對于齊次方程,比如你說的y’’+9/4y=f(x)。應該像我之前說的先變成一次微分方程組。y1'=y2;(y2)’+9/4y1=f(x)所以下面函數(shù)改成functionout=fdif(eta,f)個人收集整理勿做商業(yè)用途out=zeros(size(f));out(1)=f(2);out(2)=f(x)-9/4*f(1);//注意這個f(x)改成相應的,如f(x)=x^2;then改成eta^2這樣就可以調(diào)用ode45.把下面代碼改成functionresult=sol
5、dif(x)[etaout,fout]=ode45('fdif',[-pi,pi],[x,0]);//[x,0]分別為假設初如值及其一階導數(shù)result=fout(end,2)—0;//這里的0是最后一點導數(shù)。最后利用fzero就可以求解,試試吧。Goodluck追問您好,解二階初值問題微分方程的方法我知道,也就是ode45之前我都知道。但是我看書上和wiki百科,關(guān)于線性問題,y=y1(t)+(y1-y1(t))/2*y2(t),(篇幅太長,您可以自己上wiki上看看)。但是我這個問題y2(t)=0,所以我就不知道如何處理了
6、。wiki百科上第一部分說的和您一樣,是要解方程的根,但是我不知道是解什么方程的跟,他上邊寫的是:F(a)=y(t1;a)-y1,其中y(t0)=y0,y(t1)=y1,假設初值是y(t0)=y0,y’(t0)=a.回答wiki那個問題是已經(jīng)知道兩個端點的值。所以先假設一個端點的值y0,一階導數(shù)值為a,這樣求解程后,會得到另一個端點的值,和已知的端點值y1比較,直到差為0。我上面替你改的程序可以直接用的.只要改下f(x)。為什么這樣我大體說了。fzero就是求那個F(a)的。追問您還是沒明白我的意思,我取了個特殊情況,能求出解
7、析解,發(fā)現(xiàn)解里確實有個不確定常數(shù),所以shootingmethod里的(y1—y1(t))/2*y2(t)確實求不出來,換成常數(shù)就能和解析解對應上.THX,anyway