数值分析自主上机题.docx

上传人:b****1 文档编号:13447042 上传时间:2023-06-14 格式:DOCX 页数:15 大小:231.98KB
下载 相关 举报
数值分析自主上机题.docx_第1页
第1页 / 共15页
数值分析自主上机题.docx_第2页
第2页 / 共15页
数值分析自主上机题.docx_第3页
第3页 / 共15页
数值分析自主上机题.docx_第4页
第4页 / 共15页
数值分析自主上机题.docx_第5页
第5页 / 共15页
数值分析自主上机题.docx_第6页
第6页 / 共15页
数值分析自主上机题.docx_第7页
第7页 / 共15页
数值分析自主上机题.docx_第8页
第8页 / 共15页
数值分析自主上机题.docx_第9页
第9页 / 共15页
数值分析自主上机题.docx_第10页
第10页 / 共15页
数值分析自主上机题.docx_第11页
第11页 / 共15页
数值分析自主上机题.docx_第12页
第12页 / 共15页
数值分析自主上机题.docx_第13页
第13页 / 共15页
数值分析自主上机题.docx_第14页
第14页 / 共15页
数值分析自主上机题.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数值分析自主上机题.docx

《数值分析自主上机题.docx》由会员分享,可在线阅读,更多相关《数值分析自主上机题.docx(15页珍藏版)》请在冰点文库上搜索。

数值分析自主上机题.docx

数值分析自主上机题

2016级数值分析上机实践报告

机械工程学院2016021910吴臻

标准题:

迭代格式的比较

设方程f(x)=x

-3x–1=0有三个实根x

=1.8793,x

=-0.34727,x

=-1.53209现采用下面三种不同计算格式,求f(x)=0的根x

或x

1、x=

2、x=

3、x=

数学原理:

简单迭代法是根据f(x)=0这个方程,对其进行等价变换化为x=ψ(x)并由该式产生逼近解x*的迭代数列{xk},这就是简单迭代法的思想。

对于同一f(x)=0可以等价变换出不同的x=ψ(x)而且它们各自的收敛性不同。

程序设计:

#include

#include

#include

usingnamespacestd;

doublef(doublei)//外调函数f(x),每次更新新的函数

{//以第一种迭代方式为例子

doublek,m,sum;

k=3*i+1;

m=pow(i,2.0);

sum=k/m;

returnsum;

}

intmain()

{

doublex,x0;

intN;//最大迭代次数

intk;

cout<<"输入初解:

";

cin>>x0;

cout<<"输入最大迭代次数:

";

cin>>N;

for(k=1;k<=N;k++)

{

x=f(x0);

if(fabs(x-x0)<0.0000001)

{

cout<<"迭代次数:

"<

cout<<"输出得到的解:

"<

system("pause");

return0;

}

elsex0=x;

}

cout<<"已达到最大迭代次数:

"<

cout<<"输出得到的解:

"<

system("pause");

return0;

}

实验结果:

 

程序运行结果讨论和分析:

对于第一种迭代格式,收敛区间[-8.2-0.4],在该收敛区间内迭代收敛于-1.53209,只能求得方程的一个根;

对于第二种迭代格式,收敛区间[-1.51.8],在该收敛区间内迭代收敛于-0.34730,同样只能求得方程的一个根;

对于第三种迭代格式,收敛区间[-0.3+∞),在该收敛区间内迭代收敛于1.87937,只能求得方程的一个根;

由以上结果很容易发现,初值的选取对迭代敛散性有很大影响。

以第一种迭代格式为例,当初值大于等于-0.3时,迭代格式发散;当初值小于等于-8.3时,迭代格式也发散;只有初值在-0.3和-8.3之间时,迭代格式才收敛于—1.53209。

其他迭代格式也有这样的性质,即收敛于某个数值区间,超出这个区间迭代格式就是发散的,这就是所谓迭代格式的收敛性。

自主题:

机械运动的数值仿真

背景:

描述物理学里把物体位置的变化叫机械运动。

如我们所知,力的作用效果有:

改变物体的运动状态改变物体的形状改变物的运动状态大多会引起物体的位置变化,引起机械运动。

改变物体的形状而不改变它的运动状态就叫是非机械运动中的一种。

在工程实际与生产生活中我们常常需要对特定对象的机械运动进行研究分析得出其机械运动的规律,然后将该规律应用于对人们有益的方面。

实例:

如下图1(左)所示,假设有一烟花火箭,其初始条件为零。

将其放在地方然后点火,该烟花火箭的初始质量为

,其中粉末燃料占

经过实验得知,燃料的持续时间为

燃料所产生的恒定推力为

这也说明燃料的消耗率恒定。

空气产生的阻力和烟花火箭的速度的平方成正比:

这里,要求选择一种数值方法对其运动过程进行仿真并且其截断误差为

或者更高。

要求计算出该烟花火箭的最高高度,同时计算出从燃料消耗到该烟花火箭运动到最高点的时间延迟。

数学原理及数学模型:

该实际问题要求其截断误差要求大于或等于

,这就使得较为简单的欧拉法,中点法不适合本例。

龙格-库塔法以其优异的数值特性成为解决本问题的首选。

图1烟花火箭的机械运动的数值仿真(左)和结构力学问题的数值求解(右)

很显然,该问题属于变质量的运动学问题,在该运动过程中,其前两秒是在驱动力和阻力的共同作用下加速上升的,而后的时间内,该烟花火箭是在空气的阻力下减速上升的,同时注意到空气的阻力和速度的平方成正比。

为了对该运动过程进行数值仿真,那么必须建立相应的微分方程组。

分析该运动过程可知,应该将该运动过程分为两部分:

加速上升过程和减速上升过程。

从而得到相应的微分方程组。

加速上升过程:

(1)

减速上升过程:

(2)

式中,

为上升的高度,

为上升过程的速度,

为重力加速度。

表示加速上升过程的最终高度,

表示加速上升过程的最终速度。

使用龙格-库塔法求解如上的微分方程组。

该系统的数值仿真结果如图2所示。

图2(左)是该烟花火箭的上升过程高度的数值仿真,图2(右)是其上升过程速度的数值仿真。

同时亦可以得到烟花火箭上升的最大高度和问题中所需的时间延迟:

从如上的分析和仿真可知,使用数值方法进行机械运动的数值仿真,可以简化本身复杂变化的物理运动过程。

同时注意到,即使改变机械运动的初始条件或者系统的某些特征,其对应的仿真只需要进行简单的调整。

而且其仿真精度也可以得以预见。

图2烟花火箭的上升过程高度(左)和速度(右)的数值仿真

编程过程:

加速上升过程

f[x_,y_]:

=5200/(120-35t)-0.4x^2/(120-35t)-10;

g[x_,y_]:

=x;

{x,y}={0,0};

h=0.1;

t=0.1;

xx=Table[0,{i,1,70}];

yy=Table[0,{i,1,70}];

tt=Table[0,{i,1,70}];

Do[a=f[x,y];xa=x+h(a+f[x+h,y+h*a])/2;

b=g[x,y];ya=y+h(b+g[x+h,y+h*b])/2;

Print[k,"",t,"",xa,"",ya];

{t,x,y,xx[[k]],yy[[k]],tt[[k]]}={t+h,xa,ya,xa,ya,t+h},{k,1,20}]

tt

{0.6,1.1,1.6,2.1,2.6,3.1,3.6,4.1,4.6,5.1,5.6,6.1,6.6,7.1,7.6}

xx

{17.3174,37.9564,61.2759,85.0712,104.674,113.404,109.842,75.5189,8.73997,-59.2801,-96.8113,-111.485,-117.825,-121.341,-123.752}

yy

{0.125,8.90869,28.0119,58.7749,101.435,153.898,210.725,265.771,303.655,308.15,278.635,230.354,174.737,115.949,55.4041}

ListPlot[Table[{tt[[i]],xx[[i]]},{i,1,20}],PlotStyle®PointSize[0.02]]

ListPlot[Table[{tt[[i]],xx[[i]]},{i,1,20}],PlotStyle®PointSize[0.02]]

ListPlot[Table[{tt[[i]],xx[[i]]},{i,1,20}],PlotJoined®True]

ListPlot[Table[{tt[[i]],yy[[i]]},{i,1,20}],PlotStyle®PointSize[0.02]]

ListPlot[Table[{tt[[i]],yy[[i]]},{i,1,20}],PlotJoined®True]

减速上升过程

f[x_,y_]:

=-0.4x^2/(120-35*2)-10;

g[x_,y_]:

=x;

{x,y}={85.3977,78.2347};

h=0.1;

t=2.1;

Do[a=f[x,y];xa=x+h(a+f[x+h,y+h*a])/2;

b=g[x,y];ya=y+h(b+g[x+h,y+h*b])/2;

Print[k,"",t,"",xa,"",ya];

{t,x,y,xx[[20+k]],yy[[20+k]],tt[[20+k]]}={t+h,xa,ya,xa,ya,t+h},{k,1,50}]

ListPlot[Table[{tt[[i]],xx[[i]]},{i,1,61}],PlotStyle®PointSize[0.02]]

ListPlot[Table[{tt[[i]],yy[[i]]},{i,1,61}],PlotStyle®PointSize[0.02]]

ListPlot[Table[{tt[[i]],xx[[i]]},{i,1,61}],PlotJoined®True]

ListPlot[Table[{tt[[i]],yy[[i]]},{i,1,61}],PlotJoined®True]

结果讨论和分析:

通过以上的编程计算我们可以看到数值分析在实际中的应用,综合运用数值分析知识和相关软件可以快速便捷的解决实际问题并且能够给出直观的,让人一目了然的结果,对促进科学研究具有重要意义。

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

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2