ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:45.58KB ,
资源ID:4749299      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4749299.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈尔滨工程大学数值分析大作业附fortran程序.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈尔滨工程大学数值分析大作业附fortran程序.docx

1、哈尔滨工程大学数值分析大作业附fortran程序B班大作业要求:1使用统一封皮;2.上交大作业内容包含:一摘要二数学原理三程序设计(必须对输入变量、输出变量进行说明;编程无语言要求,但程序要求通过)四结果分析和讨论五完成题目的体会与收获3提交大作业的时间:本学期最后一次课,或考前答疑;过期不计入成绩;4提交方式:打印版一份;或手写大作业,但必须使用A4纸。5.撰写的程序需打印出来作为附录。纟爾滅N燈2 4镌程设计课程名称:目:学 号:姓 名:完成时间:题目一:非线性方程求根一摘要非线性方程的解析解通常很难给出,因此非线性方程的数值解就尤为重要。本实验通过使用常 用的求解方法二分法和Newton

2、法及改进的Newton法处理几个题目,分析并总结不同方法处理问 题的优缺点。观察迭代次数,收敛速度及初值选取对迭代的影响。用Newton法计算下列方程(1)疋7-1 = 0 ,初值分别为列 i ,入)=0.45, % =0.65;(2)x3+94x2-389x +294 = 0其三个根分别为1,3,-98。当选择初值.v0 = 2时给出结果并分析现 象,当 = 5xl(r迭代停止。二数学原理对于方程f(x)=0,如果f(x)是线性函数,则它的求根是很容易的。牛顿迭代法实质上是一种线 性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。设已知方程f(x)=O有近似根Xk(

3、假定F(xQHO),将函数f(x)在点Xk进行泰勒展开,有f(x) 2 f(xk)+f(xk)(x-xk)+ 于是方程f(x)=O可近似的表示为f(xk)+f(xk)(x-xk)=0这是个线性方程,记其根为Xk+1,贝心紳的计算公式为k=09lv这就是牛顿迭代法或简称牛顿法。三程序设计(本程序由Fortran语言编制)(1)对于/-尤-1 = ,按照上述数学原理,编制的程序如下program newtonimplicit nonereal: x(0:50),fx(0:50),flx(0:50)!分别为自变量 x,函数 f(x)和一阶导数 fl(x)integer : kwrite(*,*) ,

4、fx(0)=tfread(*,*) x(0)输入变量:初始值x(0)open(10,flle=,l.txt,)do k=l,50,lfx(k)=x(k-l)*3-x(k.l)-lflx(k)=3*x(k-l)*2-lx(k)=x(k-l)-fx(k)/flx(k)!牛顿法write(铝(I3,lxH6门 k,x(k) !输出变量:迭代次数k及x的值wHte(lV(I3Jx,fn.6)J k,x(k)if(abs(x(k)-x(k-l) do k=b50Jfx(k)=x(k-l)*3+94*x(k-l)*2-389*x(k-l)+294flx(k)=3*x(k-l)*2+188*x(k-l)-3

5、89x(k)=x(k-l)-fx(k)/flx(k)!牛顿法writeLUai)(十 口)kx(k) !输出变量:迭代次数k及x的值k/X(k)if(abs(x(k)-x(k-l)5e-6)exit !终止迭代条件end doend四结果分析和讨论(Q对于方程尤7-1 = 0,当初值分别为x0 = l,列=0.45,兀=0.65时,所得结果如下kXk初始值1初始值2初始值3()xo10.450.651XI1.500000-3.0121025.7915912X21.347826-2.0465173.9098533X31.325200-1.3958492.6869634X41.324718-0.9

6、162361.9264205X51.324718-0.3545281.5097046X6-1.4622501.3501837X7-0.9701851.3253028X8-0.4531211.3247189X9-2.1193701.32471810X10-1.44601211xn-0.95718212X12-0.43116813X13-1.89852714X14-1.29275915X15-0.82741716X16-0.12613717X17-1.04590918X18-0.56460119X19-14.65421020X20-9.78310721X21-6.54137022X22-4.387

7、30123X23-2.95878924X24-2.01102125X25-1.37128326X26-0.89570027X27 0.31076928X28-1.32340729X29-0.85459830X30-0.20847031X31-1.12909032X32-0.66518233X331.25644434X341.32950635X351.32473936X361.32471837X371.324718结果分析与讨论:从计算结果可以看到,当取的初始值不同时,虽然均得到了近似解 x*=1.324718,但收敛速度明显不同。当初始值xo充分接近于方程的单根时,可保证迭代序列快速 收敛。在

8、本例中,初始值1、0.65和045距方程的单根越来越远,故收敛速度越来越慢。(2)对于方程?+94?-389x+ 294 = 0,当初始值xo=2时计算结果如下kXk初始值0xo21XI-98.0000002X2-98.000000结果分析与讨论:牛顿法有明显的几何解释,方程f(x)=O的根X*可解释为曲线y=f(x)与X轴的 交点的横坐标。设xk是根的某个近似值,过曲线y=f(x)横坐标为xk的点Pk引曲线y=f(x)的切 线,并将该切线与x轴的交点坐标xk+i作为x*的新的近似值。在本例中,当初始值xo=2时,在这 个点的切线方程与x轴的交点恰为方程的一个根x=9&故迭代了两次就得到了结果

9、。五完成题目的体会与收获对于牛顿法,当初始值xo充分接近于方程的单根时,可保证迭代序列快速收敛。当方程有不 止一个根时,所得结果与初始值的选取有关。题目二:线性方程组求解一摘要对于实际的工程问题,很多问题归结为线性方程组的求解。本实验通过实际题目掌握求解线性 方程组的数值解法,直接法或间接法。有一平面机构如图所示,该机构共有13条梁(图中标号的线段)由8个较接点(图中标号的 圈)联结在一起。上述结构的1号较接点完全固定,8号较接点竖立方向固定,并在2号、5号和 6号较接点,分别有如图所示的吨、15吨和20吨的负载,在静平衡的条件下,任何一个较接点 上水平和竖立方向受力都是平衡的,以此计算每个梁

10、的受力情况。101520令a = U迈,假设/为各个梁上的受力,例如对8号枝接点有+d) thend=abs(a(ij)js(k)=jis=iend ifend doend do !把行绝对值最大的元素换到主元位置if (d+1.0=1.0) then1=0else !最大元素为0无解if(js(k)/=k) thendo i=l,nt=a(i9k)a(l,k)=a(IJs(k)a(ijs(k)=tend do !最大元素不在K行,K行end ifif(is/=k) thendo j=k,nt=a(kj)a(kj)=a(isj)a(isj)=t 咬换到K列end dot=b(k)b(k)=b(

11、is)b(is)=tend if !最大元素在主对角线上end if !消去if (l=0) thenwrlte(*,100)returnend ifdo j=k+l,na(kj)=a(kj)/a(k,k)end dob(k)=b(k)/a(k,k) !求三角矩阵do i=k+l,ndo j=k+l,na(ij)=a(ij)-a(i,k)*a(kj)end dob(i)=b(i)-a(i,k)*b(k)end doend doif (abs(a(n,n)+1.0=1.0) then1=0write(*400)returnend ifx(n)=b(n)/a(nji)do i=n-lj,-lt=0

12、.0do j=i+l,nt=t+a(ij)*x(j)end dox(i)=b(i)-tend do100 format(lx/fair)js(n)=ndo k=njlif (js(k)/=k) thent=x(k)x(k)=x(js(k)x(js(k)=tend ifend doreturnend四结果分析和讨论由程序计算的各个杆的受力如下:flf2f3f4fsf7-28.2820.0010.00-30.0014.1420.000.00f8f9fiofnfl2fl3-30.007.0725.0020.00 35.3625.00结果分析与讨论:列方程时假定各杆均受拉力,得到的结果有负值,说明力与

13、假设方向相反。 五完成题目的体会与收获高斯消去法虽然能够执行,但随便用akk(k)作为主元,有时会扩大误差,导致结果不可靠,甚 至严重失真,而高斯列主元消去法则不会有这种情况发生。最初采用的是高斯赛德尔迭代法解此矩阵,但是发现很难得到收敛解。因为必须满足迭代条件才可以,而找到满足条件的迭代矩阵非常困难,故最终选取了没有收敛限制的直接法解此矩阵。附录题目一程序:(1)program newtonimplicit nonereal: x(0:50)亦(O:5O),fBc(O:5O)!分别为自变量 x,函数 f(x)和一阶导数 fl(x)integer: kwrite(*?) ,lx(0)=Mrea

14、d(*/) x(0) !输入变量:初始值刈0)open(10,file=,l.txt,)do k=l/50/lfx(k)=x(k-l)3-x(k-l)-l!牛顿法flx(k)=3#x(k-l)*t2-lx( k)=x(k-l)-fx(k)/flx(k)write(叮(13幼1久6门 k,x(k)!输出变量:迭代次数k及x的值!终止迭代条件write(V(l3JxjM6) k,x(k)if(abs(x(k)-x(k-l)le-6) exit end do stopend(2)program newt onimplicit nonereal: x(0:50)x(0:50),flx(0:50)!分别

15、为自变量 x,函数 f(x)和一阶导数 fl(x)integer: kwrite(*/) ,x(0)=,1readC?) x(0) !输入变量:初始值刈0)open(10,file=,l.txt,)do k=l/50/lfx(k)=x(k-l)#*3+94*x(k-l)t*2-389#x(k-l)+294flx(k)=3#x(k-l)*t2+188*x(k-l)-389x(k)=x(kl)-fx(k)/flx(k) !牛顿法!输出变量:迭代次数k及)(的值!终止迭代条件write(MV(l3J)(Jll6) k,x(k)if(abs(x(k)-x(k-l)0.,0./1/0/0/-1/&0,0

16、,0000,00,0,00,&0,0,0/)j)m0jm0 &0,0,0oood0,0,0,0mi /b=0. !输入量:方程的右边项b(3)=10.b(9)=15.b(ll)=20.write(叮(13(13(f52x)r) (a(ij)沪 1山3)启 1J3) !输出矩阵call agausfaxJJs)if (l/=0) thenwri9(3(5f82,/)r)(:) !输出结果 end ifstop end subroutine agaus(a,bnx,js)dimension a(n,n),x(n),b(n),js(n)double precision a,b,x,t1=1 !逻辑变

17、fi:do k=l,n-ld=0.0do i=k,ndo j=k,nif (abs(a(ij)d) thend=abs(a(ijjs(k)=jis=iend ifend doend do !把行绝对值最大的元素换到主元位置if (d+1.0=1.0) then1=0else !最大元素为0无解if(js(k)/=k) thent=a(i,k)a(i/k)=a(ijs(k)a(i,js(k)=tend do !最大元素不在K行,K行end iflf(is/=k) thendot=a(k,j)a(k,j)=a(is,j)a(isj)=t 咬换到K列end dot=b(k)b(k)=b(is)b(i

18、s)=tend if !最大元素在主对角线上end if !消去if (l=0) thenwrit 屮 JOO)returnend ifdo j=k+l,na(kj)=a(kj)/a(k,k)end dob(k)=b(k)/a(k,k) !求三角矩阵do j=k+l/na(i/j)=a(M)-a(i/kra(kJ)end dob(i)=b(i)a(i* 广 b(k)end doend doif (abs(a(n,n)+1.0=1.0) then1=0write(*,100)returnend ifx(n)=b(n)/a(n/n)do 1=01,1,1t=0.0do j=i+l/nend dox(i)=b(i)-tend do100 format(lx/faila)js(n)=ndo k=n/l/-lif (js(k)/=k) thent=x(k)x(js(k)=tend if end do returnend精品文档word文档可以编借!谢谢下载!

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

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