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

欧拉法的特点

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

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

改进欧拉格式

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值