数值分析经典例题

数值分析经典例题

1. y' = y , x [0,1] ,y (0) =1 , h = 0.1。

1求解析解。

2 Eular法

3 R-K法

1解析法 ○

在MATLAB 命令窗口执行

clear

>> x=0:0.1:1;

>> y=exp(x);

>> c=[y]'

c =

1.[**************]

1.[**************]

1.[**************]

1.[**************]

1.[**************]

1.[**************]

1.[**************]

2.[**************]

2.[**************]

2.[**************]

2.[**************]

2Euler 法 ○

在Matlab 中建立M 文件如下:

function [x,y]=euler1(dyfun,xspan,y0,h)

x=xspan(1):h:xspan(2);y(1)=y0;

for n=1:length(x)-1

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

end

x=x';y=y'

在MATLAB 命令窗口执行

clear

>> dyfun=inline('y+0*x');

>> [x,y]=euler1(dyfun,[0,1],1,0.1);

>> [x,y]

得到

ans =

0 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 2.[**************]

0.[**************] 2.[**************]

1.[**************] 2.[**************]

3R-K 法(龙格-库塔法) ○

在本题求解中,采用经典4阶龙格-库塔法

首先在Matlab 的M 文件窗口对4阶龙格-库塔算法进行编程:

function [x,y]=RungKutta41(dyfun,x0,y0,h,N)

x=zeros(1,N+1);y=zeros(1,N+1);x(1)=x0;y(1)=y0;

for n=1:N

x(n+1)=x(n)+h;

k1=h*feval(dyfun,x(n),y(n));

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

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

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

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

end

在MATLAB 命令窗口执行

clear

>> dyfun=inline('y','x','y');

>> [x,y]=RungKutta41(dyfun,0,1,0.1,10);

>> c=[x;y]'

得到

c =

0 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 2.[**************]

0.[**************] 2.[**************]

0.[**************] 2.[**************]

1.[**************] 2.[**************]

4绘图 ○

' 解析法','Euler 法','R-K 法' 绘制如下

在MATLAB 命令窗口执行

clear

>> x=0:0.1:1;

>> y1=exp(x);

>> dyfun=inline('y+0*x');

>> [x,y2]=euler1(dyfun,[0,1],1,0.1);

>> dyfun=inline('y','x','y');

>> [x,y3]=RungKutta41(dyfun,0,1,0.1,10);

>> plot(x,y1,'*')

hold on

plot(x,y2,'g','LineWidth',2)

plot(x,y3,'b','LineWidth',2)

legend('解析法','Euler 法','R-K 法')

2. 一个具有1400kg 初始重量的小火箭,带有1040kg 的燃料,点燃后垂直向上运动,火箭内的燃料以18kg/s的速率燃烧,提供31000N 的推力。试求燃料燃尽之前火箭的运动规律。(高度h ,速度v ,加速度a 随时间变化的情况)假定空气阻

22力D ∝ v , D=k*v, k=0.3822 N*S2/m2 。

解:

本题利用Matlab 求解过程如下:

在MATLAB 命令窗口执行

>> clear

>> a=0;

>> v=0;

>> h=0;

>> aa(1:59)=0;

>> vv(1:59)=0;

>> hh(1:59)=0;

>> for t=0:58

aa(t+1)=a;

vv(t+1)=v;

hh(t+1)=h;

l1=(9.8*18*t-0.3822*v^2+31000-1400*9.8)/( 1400-18*t);

l2=(9.8*18*(t+0.5)-0.3822*(v+0.5*l1)^2+31000-1400*9.8)/(1400-18*(t+0.5)); l3=(9.8*18*(t+0.5)-0.3822*(v+0.5*l2)^2+31000-1400*9.8)/(1400-18*(t+0.5)); l4=(9.8*18*(t+1)-0.3822*(v+l3)^2+31000-1400*9.8)/( 1400-18*(t+1)); h=h+v+(l1+l2+l3)/6;

v=v+(l1+2*l2+2*l3+l4)/6;

a=l1;

end

>> t=0:1:58;

○1输入命令

>> plot(t, aa,'r','LineWidth',2)

得燃料燃尽前火箭飞行加速度变化曲线

运行

>> [t;aa]'

得火箭飞行中加速度具体数据

ans =

0 0

1.[**************] 12.[**************]

2.[**************] 12.[**************]

3.[**************] 12.[**************]

4.[**************] 12.[**************]

5.[**************] 12.[**************]

6.[**************] 12.[**************]

7.[**************] 12.[**************]

8.[**************] 12.[**************]

9.[**************] 11.[**************]

10.[**************] 11.[**************]

11.[**************] 10.[**************]

12.[**************] 10.[**************]

13.[**************] 9.[**************]

14.[**************] 9.[**************]

15.[**************] 8.[**************]

16.[**************] 7.[**************]

17.[**************]

7.[**************]

18.[**************] 6.[**************]

19.[**************] 6.[**************]

20.[**************] 5.[**************]

21.[**************] 5.[**************]

22.[**************] 4.[**************]

23.[**************] 4.[**************]

24.[**************] 3.[**************]

25.[**************] 3.[**************]

26.[**************] 3.[**************]

27.[**************]

28.[**************]

29.[**************]

30.[**************]

31.[**************]

32.[**************]

33.[**************]

34.[**************]

35.[**************]

36.[**************]

37.[**************]

38.[**************]

39.[**************]

40.[**************]

41.[**************]

42.[**************]

43.[**************]

44.[**************]

45.[**************]

46.[**************]

47.[**************]

48.[**************]

49.[**************]

50.[**************]

51.[**************]

52.[**************]

53.[**************]

54.[**************]

55.[**************]

56.[**************]

57.[**************]

58.[**************]

○2输入命令 2.[**************] 2.[**************] 2.[**************] 2.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************]

plot(t, vv,'g','LineWidth',2)

得燃料燃尽前火箭飞行速度变化曲线

运行

>> [t;vv]'

得火箭飞行中速度具体数据

ans =

0 0 1 12.[1**********]38 2 25.[1**********]97 3 37.[1**********]46 4 50.[1**********]84 5 63.[1**********]58 6 76.[1**********]68 7 88.[1**********]62 8 100.[1**********] 9 112.[1**********]8 10 123.[1**********]1 11 133.[1**********] 12

143.[1**********]3

13 153.[1**********]5 14 161.[1**********]2 15 170.[1**********]3 16 177.[1**********]6 17 184.[1**********]9 18 190.[1**********]2 19 196.[1**********]1 20 201.[1**********]5 21 206.[1**********]1 22 211.[1**********]1 23 214.[1**********]3 24 218.[1**********]7 25 221.[1**********]9 26 224.[1**********]6 27 227.[1**********]2 28 229.[1**********]4 29 231.[1**********]5 30 233.[1**********]9 31 235.[1**********]9 32 237.[1**********]1 33 239.[1**********]9 34 240.[1**********]7 35 242.[1**********]8 36 243.[1**********]4 37 244.[1**********]1 38 245.[1**********]5 39 247.[1**********]2 40 248.[1**********]4 41 249.[1**********]7 42 250.[1**********]8 43 251.[1**********]2 44 252.[1**********]3 45 253.[1**********]3 46 254.[1**********]2 47 255.[1**********]5 48 256.[1**********]4 49 257.[1**********]7 50 258.[1**********]6 51 259.[1**********]1 52 260.[1**********]9 53 261.[1**********] 54 262.[1**********]2 55 263.[1**********]7 56 264.[1**********]6

57 265.[1**********]2 58 266.[1**********]1 3输入命令 ○

>> plot(t, hh,'b','LineWidth',2)

得燃料燃尽前火箭飞行高度时间变化曲线

运行

>> [t;hh]'

得火箭飞行过程中高度具体数据

ans =

0 0 1 6.[1**********]771 2 25.[1**********]62 3 56.[1**********]49 4 100.[1**********]5 5 158.[1**********]4 6 227.[1**********]1 7 310.[1**********] 8

404.[1**********]7

10 628.[1**********]6 11 757.[1**********]4 12 895.[1**********]7 13 1044.[1**********] 14 1202.[1**********] 15 1368.[1**********] 16 1542.[1**********] 17 1723.1584828712 18 1910.[1**********] 19 2104.[1**********] 20 2304.[1**********] 21 2508.[1**********] 22 2717.[1**********] 23 2930.[1**********] 24 3147.[1**********] 25 3367.[1**********] 26 3590.[1**********] 27 3816.[1**********] 28 4045.[1**********] 29 4276.[1**********] 30 4509.[1**********] 31 4743.[1**********] 32 4980.[1**********] 33 5218.[1**********] 34 5458.[1**********] 35 5699.[1**********] 36 5942.[1**********] 37 6186.[1**********] 38 6431.[1**********] 39 6678.[1**********] 40 6926.[1**********] 41 7174.[1**********] 42 7424.[1**********] 43 7675.[1**********] 44 7928.[1**********] 45 8181.[1**********] 46 8435.508981705 47 8690.[1**********] 48 8947.[1**********] 49 9204.[1**********] 50 9462.[1**********] 51 9721.[1**********] 52 9982.2660536508

54 10505.8206883216 55 10769.0654797243 56 11033.2819028965 57 11298.4652041564 58 11564.6107884638

数值分析经典例题

1. y' = y , x [0,1] ,y (0) =1 , h = 0.1。

1求解析解。

2 Eular法

3 R-K法

1解析法 ○

在MATLAB 命令窗口执行

clear

>> x=0:0.1:1;

>> y=exp(x);

>> c=[y]'

c =

1.[**************]

1.[**************]

1.[**************]

1.[**************]

1.[**************]

1.[**************]

1.[**************]

2.[**************]

2.[**************]

2.[**************]

2.[**************]

2Euler 法 ○

在Matlab 中建立M 文件如下:

function [x,y]=euler1(dyfun,xspan,y0,h)

x=xspan(1):h:xspan(2);y(1)=y0;

for n=1:length(x)-1

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

end

x=x';y=y'

在MATLAB 命令窗口执行

clear

>> dyfun=inline('y+0*x');

>> [x,y]=euler1(dyfun,[0,1],1,0.1);

>> [x,y]

得到

ans =

0 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 2.[**************]

0.[**************] 2.[**************]

1.[**************] 2.[**************]

3R-K 法(龙格-库塔法) ○

在本题求解中,采用经典4阶龙格-库塔法

首先在Matlab 的M 文件窗口对4阶龙格-库塔算法进行编程:

function [x,y]=RungKutta41(dyfun,x0,y0,h,N)

x=zeros(1,N+1);y=zeros(1,N+1);x(1)=x0;y(1)=y0;

for n=1:N

x(n+1)=x(n)+h;

k1=h*feval(dyfun,x(n),y(n));

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

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

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

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

end

在MATLAB 命令窗口执行

clear

>> dyfun=inline('y','x','y');

>> [x,y]=RungKutta41(dyfun,0,1,0.1,10);

>> c=[x;y]'

得到

c =

0 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 1.[**************]

0.[**************] 2.[**************]

0.[**************] 2.[**************]

0.[**************] 2.[**************]

1.[**************] 2.[**************]

4绘图 ○

' 解析法','Euler 法','R-K 法' 绘制如下

在MATLAB 命令窗口执行

clear

>> x=0:0.1:1;

>> y1=exp(x);

>> dyfun=inline('y+0*x');

>> [x,y2]=euler1(dyfun,[0,1],1,0.1);

>> dyfun=inline('y','x','y');

>> [x,y3]=RungKutta41(dyfun,0,1,0.1,10);

>> plot(x,y1,'*')

hold on

plot(x,y2,'g','LineWidth',2)

plot(x,y3,'b','LineWidth',2)

legend('解析法','Euler 法','R-K 法')

2. 一个具有1400kg 初始重量的小火箭,带有1040kg 的燃料,点燃后垂直向上运动,火箭内的燃料以18kg/s的速率燃烧,提供31000N 的推力。试求燃料燃尽之前火箭的运动规律。(高度h ,速度v ,加速度a 随时间变化的情况)假定空气阻

22力D ∝ v , D=k*v, k=0.3822 N*S2/m2 。

解:

本题利用Matlab 求解过程如下:

在MATLAB 命令窗口执行

>> clear

>> a=0;

>> v=0;

>> h=0;

>> aa(1:59)=0;

>> vv(1:59)=0;

>> hh(1:59)=0;

>> for t=0:58

aa(t+1)=a;

vv(t+1)=v;

hh(t+1)=h;

l1=(9.8*18*t-0.3822*v^2+31000-1400*9.8)/( 1400-18*t);

l2=(9.8*18*(t+0.5)-0.3822*(v+0.5*l1)^2+31000-1400*9.8)/(1400-18*(t+0.5)); l3=(9.8*18*(t+0.5)-0.3822*(v+0.5*l2)^2+31000-1400*9.8)/(1400-18*(t+0.5)); l4=(9.8*18*(t+1)-0.3822*(v+l3)^2+31000-1400*9.8)/( 1400-18*(t+1)); h=h+v+(l1+l2+l3)/6;

v=v+(l1+2*l2+2*l3+l4)/6;

a=l1;

end

>> t=0:1:58;

○1输入命令

>> plot(t, aa,'r','LineWidth',2)

得燃料燃尽前火箭飞行加速度变化曲线

运行

>> [t;aa]'

得火箭飞行中加速度具体数据

ans =

0 0

1.[**************] 12.[**************]

2.[**************] 12.[**************]

3.[**************] 12.[**************]

4.[**************] 12.[**************]

5.[**************] 12.[**************]

6.[**************] 12.[**************]

7.[**************] 12.[**************]

8.[**************] 12.[**************]

9.[**************] 11.[**************]

10.[**************] 11.[**************]

11.[**************] 10.[**************]

12.[**************] 10.[**************]

13.[**************] 9.[**************]

14.[**************] 9.[**************]

15.[**************] 8.[**************]

16.[**************] 7.[**************]

17.[**************]

7.[**************]

18.[**************] 6.[**************]

19.[**************] 6.[**************]

20.[**************] 5.[**************]

21.[**************] 5.[**************]

22.[**************] 4.[**************]

23.[**************] 4.[**************]

24.[**************] 3.[**************]

25.[**************] 3.[**************]

26.[**************] 3.[**************]

27.[**************]

28.[**************]

29.[**************]

30.[**************]

31.[**************]

32.[**************]

33.[**************]

34.[**************]

35.[**************]

36.[**************]

37.[**************]

38.[**************]

39.[**************]

40.[**************]

41.[**************]

42.[**************]

43.[**************]

44.[**************]

45.[**************]

46.[**************]

47.[**************]

48.[**************]

49.[**************]

50.[**************]

51.[**************]

52.[**************]

53.[**************]

54.[**************]

55.[**************]

56.[**************]

57.[**************]

58.[**************]

○2输入命令 2.[**************] 2.[**************] 2.[**************] 2.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************]

plot(t, vv,'g','LineWidth',2)

得燃料燃尽前火箭飞行速度变化曲线

运行

>> [t;vv]'

得火箭飞行中速度具体数据

ans =

0 0 1 12.[1**********]38 2 25.[1**********]97 3 37.[1**********]46 4 50.[1**********]84 5 63.[1**********]58 6 76.[1**********]68 7 88.[1**********]62 8 100.[1**********] 9 112.[1**********]8 10 123.[1**********]1 11 133.[1**********] 12

143.[1**********]3

13 153.[1**********]5 14 161.[1**********]2 15 170.[1**********]3 16 177.[1**********]6 17 184.[1**********]9 18 190.[1**********]2 19 196.[1**********]1 20 201.[1**********]5 21 206.[1**********]1 22 211.[1**********]1 23 214.[1**********]3 24 218.[1**********]7 25 221.[1**********]9 26 224.[1**********]6 27 227.[1**********]2 28 229.[1**********]4 29 231.[1**********]5 30 233.[1**********]9 31 235.[1**********]9 32 237.[1**********]1 33 239.[1**********]9 34 240.[1**********]7 35 242.[1**********]8 36 243.[1**********]4 37 244.[1**********]1 38 245.[1**********]5 39 247.[1**********]2 40 248.[1**********]4 41 249.[1**********]7 42 250.[1**********]8 43 251.[1**********]2 44 252.[1**********]3 45 253.[1**********]3 46 254.[1**********]2 47 255.[1**********]5 48 256.[1**********]4 49 257.[1**********]7 50 258.[1**********]6 51 259.[1**********]1 52 260.[1**********]9 53 261.[1**********] 54 262.[1**********]2 55 263.[1**********]7 56 264.[1**********]6

57 265.[1**********]2 58 266.[1**********]1 3输入命令 ○

>> plot(t, hh,'b','LineWidth',2)

得燃料燃尽前火箭飞行高度时间变化曲线

运行

>> [t;hh]'

得火箭飞行过程中高度具体数据

ans =

0 0 1 6.[1**********]771 2 25.[1**********]62 3 56.[1**********]49 4 100.[1**********]5 5 158.[1**********]4 6 227.[1**********]1 7 310.[1**********] 8

404.[1**********]7

10 628.[1**********]6 11 757.[1**********]4 12 895.[1**********]7 13 1044.[1**********] 14 1202.[1**********] 15 1368.[1**********] 16 1542.[1**********] 17 1723.1584828712 18 1910.[1**********] 19 2104.[1**********] 20 2304.[1**********] 21 2508.[1**********] 22 2717.[1**********] 23 2930.[1**********] 24 3147.[1**********] 25 3367.[1**********] 26 3590.[1**********] 27 3816.[1**********] 28 4045.[1**********] 29 4276.[1**********] 30 4509.[1**********] 31 4743.[1**********] 32 4980.[1**********] 33 5218.[1**********] 34 5458.[1**********] 35 5699.[1**********] 36 5942.[1**********] 37 6186.[1**********] 38 6431.[1**********] 39 6678.[1**********] 40 6926.[1**********] 41 7174.[1**********] 42 7424.[1**********] 43 7675.[1**********] 44 7928.[1**********] 45 8181.[1**********] 46 8435.508981705 47 8690.[1**********] 48 8947.[1**********] 49 9204.[1**********] 50 9462.[1**********] 51 9721.[1**********] 52 9982.2660536508

54 10505.8206883216 55 10769.0654797243 56 11033.2819028965 57 11298.4652041564 58 11564.6107884638


相关内容

  • [转]振动相关经典书籍
  • 1  传统教材及其更新 对我国振动教学的影响影响很大的国外教材当推Timoshenko等的<工程中的振动问题>(S. Timoshenko, S. H. Young, W. Weaver. Vibration Problems in Engineering (4th ed.). John ...

  • 第十六章电压和电阻经典例题
  • 九年级第十六章电压 电阻经典例题 第一节.电压 一. 电压数值及换算 典型例题一.一节新干电池的电压是( A ) A .1.5 V B.15 V C.36 V D.220 V 小贴士:常见的电压值:(1)一节干电池.电子手表用氧化银电池.小计算器用银锌电池两极间的电压均为:1.5V :(2)一个铅蓄 ...

  • 测量平差基础例题和习题选择方案
  • 2004年 第7期 测 绘 通 报 57 文章编号:049420911(2004) 0720057203 中图分类号:P207. 2+ 文献标识码:B 测量平差基础例题和习题选择方案 姚吉利, 孔维华 (山东理工大学建筑工程学院, 山东淄博255091) Selection of Instances ...

  • 连续时间系统的时域分析
  • 第二章 连续时间系统的时域分析 §2-1 引 言 线性连续时间系统的时域分析,就是一个建立和求解线性微分方程的过程. 一.建立数学模型 主要应用<电路分析>课程中建立在KCL 和KVL 基础上的各种方法. 线性时不变系统的微分方程的一般形式可以为: d n d n -1d r (t ) ...

  • 2014年会计电算化教材重点归纳
  • 我国会计电算化化工作经历了以下阶段: 模拟手工记账的探索起步阶段 与企业其他业务相结合的推广发展阶段 引入会计专业判断的渗透事例阶段 与内部控制相结合建立ERP系统的集成管理阶段 (一)模拟手工记账的探索起步(自发发展阶段) (二)与其他业务结合的推广发展 (三)引入会计专业判断的渗透融合(了解) ...

  • 清华大学结构力学求解器简介
  • §16-6 用求解器求极限荷载 §16-6 用求解器求极限荷载 求解器可以计算一般平面结构的极限荷载并能静态或动画显示破坏机构的单向运动模态.荷载可以是集中荷载或者均布荷载.由于极限荷载和各个杆件刚度无关,因此可以不输入杆件刚度(当然输入也无妨).因此,除了按常规输入结构体系外,还要输入各杆的极限弯 ...

  • 第六章 原子的电子结构
  • 第六章 原子的电子结构 Dalton的原子论为十九世纪化学的迅速发展奠定了基础.有了这种理论,使我们对于化学式和化学反应过程中质量关系.能量关系的理解大为简便.分子运动论(分子动理论)是建基于原子论的,它使我们把气体的性能同组成气体分子的性质联系起来.现在准备将原子论再向另一个方向引伸,着眼于解释分 ...

  • 八年级科学大气压的存在经典例题
  • 考点1:大气压强的存在 1)大气压的定义:空气受到重力作用, 而且空气能流动, 因此空气内部向各个方向都有压强, 这个压强就叫大气压强 2)产生的原因:包围地球的空气由于受到重力的作用,而且能够流动,因而空气对浸在它里面的物体产生压强,空气内部向各个方向都有压强,且空气中某一点向各个方向的压强大小相 ...

  • 统计方法和数据
  • 统计方法部分 第一章 统计和数据 主讲人:宋玉峰 本部分考点: 1. 统计学中的几个基本概念(变量.数据.数据类型) 2. 了解数据来源的主要渠道 3. 掌握常用搜集数据的方法.特点及应用条件. 第一节 统计学的含义 一.什么是统计学 统计学是一门研究数据的科学,按大百科全书的定义:统计学是用以收集 ...