《常微分方程》实验报告.docx

上传人:b****2 文档编号:23078894 上传时间:2023-04-30 格式:DOCX 页数:23 大小:49.73KB
下载 相关 举报
《常微分方程》实验报告.docx_第1页
第1页 / 共23页
《常微分方程》实验报告.docx_第2页
第2页 / 共23页
《常微分方程》实验报告.docx_第3页
第3页 / 共23页
《常微分方程》实验报告.docx_第4页
第4页 / 共23页
《常微分方程》实验报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

《常微分方程》实验报告.docx

《《常微分方程》实验报告.docx》由会员分享,可在线阅读,更多相关《《常微分方程》实验报告.docx(23页珍藏版)》请在冰豆网上搜索。

《常微分方程》实验报告.docx

《常微分方程》实验报告

 

福建农林大学计算机与信息学院

(数学类课程)

 

课程实习报告

课程名称:

常微分方程课程实习

实习题目:

常微分方程数值求解问题的实习

姓名:

颜博文

系:

应用数学

专业:

数学与应用数学

年级:

2009

学号:

091153021

指导教师:

陈永雪

职称:

讲师

 

2010年11月27日

福建农林大学计算机与信息学院数学类

课程实习报告结果评定

评语:

成绩:

指导教师签字:

评定日期:

目录

1.实习的目的和任务……………………………………………………………1

2.实习要求………………………………………………………………………1

3.实习地点………………………………………………………………………1

4.主要仪器设备…………………………………………………………………1

5.实习内容………………………………………………………………………1

5.1用欧拉方法、改进欧拉方法、4阶龙格—库塔方法分别求微分方程的初值……………………………………………………………………………………1

5.1.1求精确解…………………………………………………………1

5.1.2用欧拉法求解……………………………………………………3

5.1.3用改进欧拉法求解………………………………………………5

5.1.4用4阶龙格—库塔求解…………………………………………7

5.1.5问题讨论与分析…………………………………………………9

5.2用欧拉方法取不同步长h=0.05,0.2分别求微分方程的初值………13

5.2.1h=0.2时与精确解的比较………………………………………13

5.2.2h=0.05时与精确解的比较……………………………………14

5.2.3问题讨论与分析………………………………………………18

6.结束语…………………………………………………………………………18

常微分方程课程实习

1.实习的目的和任务

目的:

通过课程实习能够应用MATLAB软来计算微分方程(组)的数值解;了解常微分方程数值解。

任务:

通过具体的问题,利用MATLAB软件来计算问题的结果,分析问题的结论。

2.实习要求

能够从案例的自然语言描述中,抽象出其中的数学模型;能够熟练应用所学的数值解计算方法;能够熟练使用MATLAB软件;对常微分方程数值解有所认识,包括对不同算法有所认识和对步长有所认识。

3.实习地点

数学实验室

4.主要仪器设备

计算机、MicrosoftWindowsXP、Matlab6.5

5.实习内容

5.1用欧拉方法、改进欧拉方法、4阶龙格—库塔方法分别求下面微分方程的初值:

5.1.1求精确解

首先可以求得其精确解为:

在MATLAB输入以下程序:

>>x=0:

0.1:

2;

>>y=exp(-cos(x))

>>plot(x,y,'b*-');

>>Data=[x',y']

y=

Columns1through3

0.36790.36970.3753

Columns4through6

0.38470.39810.4158

Columns7through9

0.43810.46540.4982

Columns10through12

0.53710.58260.6353

Columns13through15

0.69600.76530.8437

Columns16through18

0.93171.02961.1375

Columns19through21

1.25511.38171.5161

Data=

00.3679

0.10000.3697

0.20000.3753

0.30000.3847

0.40000.3981

0.50000.4158

0.60000.4381

0.70000.4654

0.80000.4982

0.90000.5371

1.00000.5826

1.10000.6353

1.20000.6960

1.30000.7653

1.40000.8437

1.50000.9317

1.60001.0296

1.70001.1375

1.80001.2551

1.90001.3817

2.00001.5161

图5.1.1

5.1.2用欧拉法求解

程序如下:

建立函数文件cwfa1.m

function[x,y]=cwfa1(fun,x_span,y0,h)

x=x_span

(1):

h:

x_span

(2);

y

(1)=y0;

forn=1:

length(x)-1

y(n+1)=y(n)+h*feval(fun,x(n),y(n));

end

x=x';y=y';

在MATLAB输入以下程序:

>>clearall

>>fun=inline('y*sin(x)');

>>[x,y]=cwfa1(fun,[0,2],1/exp

(1),0.1);

>>[x,y]

>>plot(x,y,'r*-')

结果及其图象:

ans=

00.3679

0.10000.3679

0.20000.3716

0.30000.3789

0.40000.3901

0.50000.4053

0.60000.4248

0.70000.4487

0.80000.4776

0.90000.5119

1.00000.5520

1.10000.5985

1.20000.6518

1.30000.7125

1.40000.7812

1.50000.8582

1.60000.9438

1.70001.0381

1.80001.1411

1.90001.2522

2.00001.3707

图5.1.2

5.1.3用改进欧拉法求解

程序如下:

建立函数文件cwfa2.m

function[x,y]=cwfa2(fun,x_span,y0,h)

x=x_span

(1):

h:

x_span

(2);

y

(1)=y0;

forn=1:

length(x)-1

k1=feval(fun,x(n),y(n));

y(n+1)=y(n)+h*k1;

k2=feval(fun,x(n+1),y(n+1));

y(n+1)=y(n)+h*(k1+k2)/2;

end

x=x';y=y';

在MATLAB输入以下程序:

>>clearall

>>fun=inline('y*sin(x)');

>>[x,y]=cwfa2(fun,[0,2],1/exp

(1),0.1);

>>[x,y]

>>plot(x,y,'r+-')

结果及其图象:

ans=

00.3679

0.10000.3697

0.20000.3753

0.30000.3847

0.40000.3980

0.50000.4157

0.60000.4380

0.70000.4652

0.80000.4980

0.90000.5368

1.00000.5821

1.10000.6347

1.20000.6953

1.30000.7643

1.40000.8424

1.50000.9300

1.60001.0275

1.70001.1349

1.80001.2520

1.90001.3779

2.00001.5117

图5.1.3

5.1.4用4阶龙格—库塔求解

程序如下:

建立函数文件cwfa3.m

function[x,y]=cwfa3(fun,x_span,y0,h)

x=x_span

(1):

h:

x_span

(2);

y

(1)=y0;

forn=1:

length(x)-1

k1=feval(fun,x(n),y(n));

k2=feval(fun,x(n)+h/2,y(n)+h/2*k1);

k3=feval(fun,x(n)+h/2,y(n)+h/2*k2);

k4=feval(fun,x(n+1),y(n)+h*k3);

y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;

end

x=x';y=y';

在MATLAB输入以下程序:

>>clearall

>>fun=inline('y*sin(x)');

>>[x,y]=cwfa3(fun,[0,2],1/exp

(1),0.1);

>>[x,y]

>>plot(x,y,'b+-')

结果及其图象:

ans=

00.3679

0.10000.3697

0.20000.3753

0.30000.3847

0.40000.3981

0.50000.4158

0.60000.4381

0.70000.4654

0.80000.4982

0.90000.5371

1.00000.5826

1.10000.6353

1.20000.6960

1.30000.7653

1.40000.8437

1.50000.9317

1.60001.0296

1.70001.1375

1.80001.2551

1.90001.3817

2.00001.5161

图5.1.4

5.1.5问题讨论与分析

由以上数值分析结果绘制表格:

精确解

欧拉方法

改进的欧拉方法

四阶龙格-库塔方法

xi

yi

yi

误差

yi

误差

yi

误差

0

0.3679

0.3679

0

0.3679

0

0.3679

0

0.1

0.3697

0.3679

0.0018

0.3697

0

0.3697

0

0.2

0.3753

0.3716

0.0037

0.3753

0

0.3753

0

0.3

0.3847

0.3789

0.0058

0.3847

0

0.3847

0

0.4

0.3981

0.3901

0.0080

0.3980

0.0001

0.3981

0

0.5

0.4158

0.4053

0.0105

0.4157

0.0001

0.4158

0

0.6

0.4381

0.4248

0.0133

0.4380

0.0001

0.4381

0

0.7

0.4654

0.4487

0.0167

0.4652

0.0002

0.4654

0

0.8

0.4982

0.4776

0.0206

0.4980

0.0002

0.4982

0

0.9

0.5371

0.5119

0.0252

0.5368

0.0003

0.5371

0

1.0

0.5826

0.5520

0.0306

0.5821

0.0005

0.5826

0

1.1

0.6353

0.5985

0.0368

0.6347

0.0006

0.6353

0

1.2

0.6960

0.6518

0.0442

0.6953

0.0007

0.6960

0

1.3

0.7653

0.7125

0.0528

0.7643

0.0010

0.7653

0

1.4

0.8437

0.7812

0.0625

0.8424

0.0013

0.8437

0

1.5

0.9317

0.8582

0.0735

0.9300

0.0017

0.9317

0

1.6

1.0296

0.9438

0.0858

1.0275

0.0021

1.0296

0

1.7

1.1375

1.0381

0.0994

1.1349

0.0026

1.1375

0

1.8

1.2551

1.1411

0.1140

1.2520

0.0031

1.2551

0

1.9

1.3817

1.2522

0.1295

1.3779

0.0038

1.3817

0

2.0

1.5161

1.3707

0.1454

1.5117

0.0044

1.5161

0

x=0:

0.1:

2;

y1=[0.36790.36970.37530.38470.39810.41580.43810.46540.49820.53710.58260.63530.69600.76530.84370.93171.02961.13751.25521.38171.5161];

>>y1=[0.36790.36970.37530.38470.39810.41580.43810.46540.49820.53710.58260.63530.69600.76530.84370.93171.02961.13751.25521.38171.5161];

>>y2=[0.36790.36790.37160.37890.39010.40530.42480.44870.47760.51190.55200.59850.65180.71250.78120.85820.94381.03811.14111.25221.3707];

>>y3=[0.36790.36970.37530.38470.39800.41570.43800.46520.49800.53680.58210.63470.69530.76430.84240.93001.02751.13491.25201.37791.5117];

>>y4=[0.36790.36970.37530.38470.39810.41580.43810.46540.49820.53710.58260.63530.69600.76530.84370.93171.02961.13751.25521.38171.5161];

>>plot(x,y1,'r+-')

>>holdon,plot(x,y2,'b-')

>>plot(x,y1,'r+-')

>>holdon,plot(x,y3,'b-')

>>plot(x,y1,'r+-')

>>holdon,plot(x,y3,'g-')

>>plot(x,y1,'r+-')

>>holdon,plot(x,y4,'b-')

精确接与欧拉方法比较

精确解与改进的欧拉方法的比较

精确解与四阶龙格—库塔方法比较

由上表和图可以看出欧拉法误差最大,而改进欧拉和龙格—库塔方法误差相对较小,并且龙格—库塔方法误差最小且大部分值都跟精确值相同。

由欧拉图与精确图相比可清晰看到,随着x的增加,函数值与精确值的偏差越来越大。

5.2用欧拉方法取不同步长h=0.05,0.2分别求下面微分方程的初值:

5.2.1h=0.2时与精确解的比较

在MATLAB输入以下程序:

>>clearall

>>fun=inline('y*sin(x)');

>>[x,y]=cwfa1(fun,[0,2],1/exp

(1),0.2);

>>[x,y]

>>y1=exp(-cos(x))

>>plot(x,y,'m*-')

>>holdon,plot(x,y1,'b-')

结果及其图象:

y=

00.3679

0.20000.3679

0.40000.3825

0.60000.4123

0.80000.4588

1.00000.5247

1.20000.6130

1.40000.7272

1.60000.8706

1.80001.0446

2.00001.2481

y1=

00.3679

0.20000.3753

0.40000.3981

0.60000.4381

0.80000.4982

1.00000.5826

1.20000.6960

1.40000.8437

1.60001.0296

1.80001.2551

2.00001.5161

图5.2.1

5.2.2h=0.05时与精确解的比较

在MATLAB输入以下程序:

>>clearall

>>fun=inline('y*sin(x)');

>>[x,y]=cwfa1(fun,[0,2],1/exp

(1),0.05);

>>[x,y]

>>y1=exp(-cos(x))

>>plot(x,y,'m*-')

>>holdon,plot(x,y1,'b-')

结果及其图象:

y=

00.3679

0.05000.3679

0.10000.3688

0.15000.3706

0.20000.3734

0.25000.3771

0.30000.3818

0.35000.3874

0.40000.3941

0.45000.4017

0.50000.4105

0.55000.4203

0.60000.4313

0.65000.4435

0.70000.4569

0.75000.4716

0.80000.4877

0.85000.5052

0.90000.5242

0.95000.5447

1.00000.5668

1.05000.5907

1.10000.6163

1.15000.6438

1.20000.6731

1.25000.7045

1.30000.7379

1.35000.7735

1.40000.8112

1.45000.8512

1.50000.8935

1.55000.9380

1.60000.9849

1.65001.0341

1.70001.0857

1.75001.1395

1.80001.1956

1.85001.2538

1.90001.3141

1.95001.3762

2.00001.4402

y1=

00.3679

0.05000.3683

0.10000.3697

0.15000.3720

0.20000.3753

0.25000.3795

0.30000.3847

0.35000.3909

0.40000.3981

0.45000.4064

0.50000.4158

0.55000.4263

0.60000.4381

0.65000.4511

0.70000.4654

0.75000.4811

0.80000.4982

0.85000.5169

0.90000.5371

0.95000.5590

1.00000.5826

1.05000.6080

1.10000.6353

1.15000.6647

1.20000.6960

1.25000.7296

1.30000.7653

1.35000.8033

1.40000.8437

1.45000.8865

1.50000.9317

1.55000.9794

1.60001.0296

1.65001.0823

1.70001.1375

1.75001.1951

1.80001.2551

1.85001.3173

1.90001.3817

1.95001.4480

2.00001.5161

图5.2.2

5.2.3问题讨论与分析

比较图5.2.1和图5.2.2可以看出,步长越小,欧拉方法的误差也越小。

6.结束语

通过这次实习,我了解到了同一个问题会有好多种不同的解法,而且其结果也不尽相同。

因此,我们平常应该多思考。

同时,我也体会到了数学在实践中的重要性。

理论与实践相结合,数学才更有活力。

所以,我们应该经常把理论的数学拿到现实中去实践。

参考文献

[1]刘卫国《MATLAB程序设计与应用》高等教育出版社

[2]王高雄等《常微分方程》高等教育出版社

[3]石瑞青等《常微分方程全程导学及习题全解》中国时代经济出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1