700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 隐式欧拉解常微分方程c语言 利用欧拉方法求常微分方程近似数值解.doc

隐式欧拉解常微分方程c语言 利用欧拉方法求常微分方程近似数值解.doc

时间:2019-05-20 12:07:17

相关推荐

隐式欧拉解常微分方程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

欧拉法的特点

单步,显式,一阶求导精度,截断误差阶欧拉法的缺点

欧拉法简单地取切线的端点作为下一步的起点进行计算,当步数增多时,误差会因积累而越来越大。因此欧拉格式一般不用于实际计算。

改进欧拉格式

为提高精度,需要在欧拉格式的基础上进行改进。采用区间两端的函数值的平均值作为直线方程的斜率。改进欧拉法的精度为二阶。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。