Matlab常微分方程數值解法(1)


實驗目的

Matlab實現歐拉法、后退歐拉法、梯形方法和改進歐拉公式

實驗要求

1. 給出歐拉法、后退歐拉法、梯形方法和改進歐拉公式算法

2. Matlab實現歐拉法、后退歐拉法、梯形方法和改進歐拉公式

實驗內容

 實驗步驟

  (1)歐拉法算法,

  

  MATLAB實現,

 1 %數值解常微分方程歐拉算法
 2 %例子:dyfun=inline('y-2*x/y');[x,y]=euler2(dyfun,[0,1],1,0.2);
 3 %輸入:函數dfun(x,y),求解區間xspan[x0,xN],初值y0,步長h
 4 %輸出:節點x,數值解y
 5 function [x,y]=euler2(dyfun,xspan,y0,h)
 6 x=xspan(1):h:xspan(2);y(1)=y0;
 7 for n=1:length(x)-1
 8     y(n+1)=y(n)+h*feval(dyfun,x(n),y(n));
 9 end
10 x=x';y=y';
11 end
euler2

  求解【題目】,

 (2)后退歐拉法算法,

  MATLAB實現

 1 %數值解常微分后退歐拉法算法
 2 %例子:dfun=inline('x+y','x','y');[x,y]=eulerh1(dfun,0,1,0.02,5)
 3 %輸入:函數dfun(x,y),初值x0,y0,步長h,維度N
 4 %輸出:結點x和數值解y
 5 function [x,y]=eulerh1(dfun,x0,y0,h,N)
 6 x=zeros(1,N+1);
 7 y=zeros(1,N+1);
 8 x(1)=x0;y(1)=y0;
 9 for n=1:N
10     x(n+1)=x(n)+h;
11     z0=y(n)+h*dfun(x(n),y(n));
12     for k=1:3
13         z1=y(n)+h*dfun(x(n+1),z0);
14         if abs(z1-z0)<1e-6
15             break;
16         end
17         z0=z1;
18     end
19     y(n+1)=z1;
20 end
eulerh1

  求解【題目】,

  

 (3)梯形方法算法,

   MATLAB實現,

 1 %數值解常微分梯形歐拉法算法
 2 %例子:dfun=inline('x+y','x','y');[x,y]=eulert(dfun,0,1,0.02,5)
 3 %輸入:函數dfun(x,y),初值x0,y0,步長h,維度N
 4 %輸出:結點x和數值解y
 5 function [x,y]=eulert(dfun,x0,y0,h,N)
 6 x=zeros(1,N+1);
 7 y=zeros(1,N+1);
 8 x(1)=x0;y(1)=y0;
 9 for n=1:N
10     x(n+1)=x(n)+h;
11     z0=y(n)+h*dfun(x(n),y(n));
12     for k=1:3
13         z1=y(n)+(h/2)*(dfun(x(n),y(n))+dfun(x(n+1),z0));
14         if abs(z1-z0)<1e-6
15             break;
16         end
17         z0=z1;
18     end
19     y(n+1)=z1;
20 end
eulert

   求解【題目】,

   

(2)改進歐拉公式算法,

   MATLAB實現,

 1 %數值解常微分改進歐拉法算法
 2 %例子:dfun=inline('x+y','x','y');[x,y]=eulerh1(dfun,0,1,0.02,5)
 3 %輸入:函數dfun(x,y),初值x0,y0,步長h,維度N
 4 %輸出:結點x和數值解y
 5 function [x,y]=eulerg2(dfun,x0,y0,h,N)
 6 x=zeros(1,N+1);
 7 y=zeros(1,N+1);
 8 x(1)=x0;y(1)=y0;
 9 for n=1:N
10     x(n+1)=x(n)+h;
11     ybar=y(n)+h*dfun(x(n),y(n));
12     y(n+1)=y(n)+(h/2)*(dfun(x(n),y(n))+dfun(x(n+1),ybar));
13 end
14 end
eulerg2

  求解【題目】,

  

求解結果,

  

 小結

  就給定的題目並沒有體現出這些算法之間的差異。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM