隐式欧拉解常微分方程c语言,利用欧拉方法求常微分方程近似数值解.doc
利用歐拉方法求常微分方程近似數值解,歐拉微分方程,歐拉運動微分方程,歐拉平衡微分方程,歐拉型微分方程,微分方程的歐拉算法,微分方程的歐拉解法,歐拉型常微分方程,偏微分方程數值解,微分方程數值解法
利用歐拉方法求常微分方程近似數值解
實 驗 報 告
實驗名稱
(教師填寫)
利用歐拉方法求常微分方程近似數值解
實驗目的
(教師填寫)1.學會利用歐拉方法求微分方程的數值解。
2.觀察歐拉顯式方法的收斂性。
3.觀察歐拉顯式方法的數值不穩定性。
實驗題目
(教師填寫)完成第一題。(第二題選作。)
1.取用歐拉顯式方法求解一階線性微分方程:
計算到并與精確解比較。
2.取用歐拉顯式方法求解線性微分方程:
并畫出曲線。用改進的歐拉方法(或歐拉隱式方法)重復求解上述問題。試解釋你所觀察到的現象。
實驗報告要求
(教師填寫)
實驗內容與步驟
(學生填寫)歐拉法
#include"stdio.h"
#include"math.h"
void main()
{
int i;
double y,h,x,m,z;
printf("輸入步長h");
scanf("%f",&h);
printf("h=%f\n",h);
m=1.0/h;
y=1.0;
x=1.0;
for(i=0;i
{
y=y+h*(x+i*h)*pow(y,1.0/3.0);
}
printf("y(2)=%f\n",y);
z=pow((2*2.0+2)/3.0,3.0/2.0);
printf("精確解");
printf("y(2)=%f",z);
}
改進歐拉法
#include"stdio.h"
#include"math.h"
void main()
{
int i;
double y,y0,z,h,x,m;
printf("輸入步長h");
scanf("%f",&h);
printf("h=%f\n",h);
m=1.0/h;
y=1.0;
x=1.0;
for(i=0;i
{
y0=y+h*(x+i*h)*pow(y,1.0/3.0);
y=y+h/2*((x+i*h)*pow(y,1.0/3.0)+(x+i*h+h)*pow(y0,1.0/3.0));
}
printf("y(2)=%f\n",y);
z=pow((2*2.0+2)/3.0,3.0/2.0);
printf("精確解");
printf("y(2)=%f",z);
}
實驗結果與實驗結論
(學生填寫)歐拉法
h=0.1, y(2)=2.723877
h=0.05, y(2)=2.775436
h=0.01, y(2)=2.817713
改進歐拉法
h=0.1, y(2)=2.827609
h=0.05, y(2)=2.828219
h=0.01, y(2)=2.828419
精確解
y(2)=2.828427
歐拉法的特點
單步,顯式,一階求導精度,截斷誤差階歐拉法的缺點
歐拉法簡單地取切線的端點作為下一步的起點進行計算,當步數增多時,誤差會因積累而越來越大。因此歐拉格式一般不用于實際計算。
改進歐拉格式
為提高精度,需要在歐拉格式的基礎上進行改進。采用區間兩端的函數值的平均值作為直線方程的斜率。改進歐拉法的精度為二階。
總結
以上是生活随笔為你收集整理的隐式欧拉解常微分方程c语言,利用欧拉方法求常微分方程近似数值解.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今目标文荣演讲:主线+连接一切的力量
- 下一篇: 2022 智简魔方 天迹第三方邮件接口插