資源描述:
《二階非線性常微分方程的打靶法.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、二階非線性常微分方程的打靶法計算思路主要分為以下五步:給定容許誤差ε,迭代初始值γ1,對k=1,2,...做:(1)用四階Runge-Kutta方法求解初值問,得出u1之后取其在γk的值,從而得到F(γk)=u1(b,γk)-β(2)若
2、F(γk)
3、<ε,則u1即為所求,跳出循環(huán)。否則:(3)用四階Runge-Kutta方法求解初值問題由此得到F'(γk)=v1(b,γk)(4)用牛頓迭代計算γk+1,即(5)置k+1→k,轉(zhuǎn)(1)直到誤差在范圍內(nèi)。綜上,實現(xiàn)了打靶法對非線性方程的擬合。接下來是每一步的代碼:程序開頭各變量的設(shè)置functionys=n
4、dbf(f,g,a,b,alfa,beta,n,eps,s0)%f為二階導(dǎo)數(shù),y''=f(x,y,y'),g為f對y求偏導(dǎo)后的%(a,b)為自變量迭代區(qū)間%alfa,beta為給定的邊值條件%eps題目規(guī)定的精度%n為迭代次數(shù)%選取適當(dāng)?shù)膕0的初值循環(huán)第一步x0=[alfa,s0];%選取合適的迭代初值y0=RK4(f,a,b,h,x0);%龍格庫塔算出u1(γk)constant=y0(n,1)-beta;這里的y0(n,1)即是u1(γk,b),constant即為F(γk)循環(huán)第二步檢驗誤差以跳出ifabs(constant)5、否合題意break;循環(huán)第三步得到F函數(shù)的導(dǎo)數(shù)u0=[0,1];u1=NRK4(g,a,b,h,u0,y0);通過偏導(dǎo)數(shù)求得的F’。循環(huán)第四步用牛頓迭代算出新的初值s0=s0-constant/u1(n,1);之后把所有的步奏放進一個while循環(huán),跳出的條件即是constant小于給定的誤差數(shù)值實驗微分方程得到圖像可以看出精度還是蠻高的與matlab自帶函數(shù)的比較分別用Bvp4c函數(shù)和打靶法解微分方程:得到結(jié)論:圖像上的擬合度差不多,但是具體做數(shù)值誤差之后Bvp4c函數(shù)的精確度比較高。Bvp4c大概為1.0e-10,打靶法只有1.0e-4再改變迭代方
6、法進行比較用二分法迭代γk此時不用再求F的導(dǎo)數(shù),所以也不用輸入偏導(dǎo)數(shù)g同樣解上面的微分方程:圖像的擬合度也比較高。數(shù)值誤差方面和牛頓迭代在同一數(shù)量級,所以相差不大。算法總結(jié)牛頓打靶法精度比較高但是對于初值的選取要求很高,需要在精確值附近而且在開頭需要手動輸入偏導(dǎo)數(shù)謝謝觀賞,祝大家期末滿績!