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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

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

2、通过使用常用的求解方法二分法和Newton法及改进的Newton法处理几个题目,分析并总结不同方法处理问题的优缺点。观察迭代次数,收敛速度及初值选取对迭代的影响。用Newton法计算下列方程 (1) , 初值分别为,; (2) 其三个根分别为。当选择初值时给出结果并分析现象,当,迭代停止。二 数学原理对于方程f(x)=0,如果f(x)是线性函数,则它的求根是很容易的。牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。设已知方程f(x)=0有近似根xk(假定) ,将函数f(x)在点xk进行泰勒展开,有于是方程f(x)=0可近似的表示为这是个线性方

3、程,记其根为xk+1,则xk+1的计算公式为 ,k=0,1,2,这就是牛顿迭代法或简称牛顿法。三 程序设计(本程序由Fortran语言编制)(1)对于,按照上述数学原理,编制的程序如下 program newtonimplicit nonereal : x(0:50),fx(0:50),f1x(0:50)!分别为自变量x,函数f(x)和一阶导数f1(x)integer : kwrite(*,*) x(0)=read(*,*) x(0) !输入变量:初始值x(0) open(10,file=1.txt)do k=1,50,1 fx(k)=x(k-1)*3-x(k-1)-1 f1x(k)=3*x(

4、k-1)*2-1 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,(I3,1x,f11.6) k,x(k) !输出变量:迭代次数k及x的值 write(10,(I3,1x,f11.6) k,x(k) if(abs(x(k)-x(k-1)1e-6) exit !终止迭代条件end dostopend(2)对于,按照上述数学原理,编制的程序如下program newtonimplicit nonereal : x(0:50),fx(0:50),f1x(0:50)!分别为自变量x,函数f(x)和一阶导数f1(x)integer : kwrite(*,*) x(0)=rea

5、d(*,*) x(0) !输入变量:初始值x(0) open(10,file=1.txt)do k=1,50,1 fx(k)=x(k-1)*3+94*x(k-1)*2-389*x(k-1)+294 f1x(k)=3*x(k-1)*2+188*x(k-1)-389 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,(I3,1x,f11.6) k,x(k) !输出变量:迭代次数k及x的值 write(10,(I3,1x,f11.6) k,x(k) if(abs(x(k)-x(k-1)d) then d=abs(a(i,j) js(k)=j is=i end if end

6、do end do !把行绝对值最大的元素换到主元位置 if (d+1.0=1.0) then l=0 else !最大元素为0无解 if(js(k)/=k) then do i=1,n t=a(i,k) a(i,k)=a(i,js(k) a(i,js(k)=t end do !最大元素不在K行,K行 end if if(is/=k) then do j=k,n t=a(k,j) a(k,j)=a(is,j) a(is,j)=t !交换到K列 end do t=b(k) b(k)=b(is) b(is)=t end if !最大元素在主对角线上 end if !消去 if (l=0) then

7、 write(*,100) return end if do j=k+1,n a(k,j)=a(k,j)/a(k,k) end do b(k)=b(k)/a(k,k) !求三角矩阵 do i=k+1,n do j=k+1,n a(i,j)=a(i,j)-a(i,k)*a(k,j) end do b(i)=b(i)-a(i,k)*b(k) end do end do if (abs(a(n,n)+1.0=1.0) then l=0 write(*,100) return end if x(n)=b(n)/a(n,n) do i=n-1,1,-1 t=0.0 do j=i+1,n t=t+a(i,

8、j)*x(j) end do x(i)=b(i)-t end do100 format(1x,fail) js(n)=n do k=n,1,-1 if (js(k)/=k) then t=x(k) x(k)=x(js(k) x(js(k)=t end if end do return end四 结果分析和讨论由程序计算的各个杆的受力如下:f1f2f3f4f5f6f7-28.2820.0010.00-30.0014.1420.000.00f8f9f10f11f12f13-30.007.0725.0020.00-35.3625.00结果分析与讨论:列方程时假定各杆均受拉力,得到的结果有负值,说明力

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

10、d(*,*) x(0) !输入变量:初始值x(0) open(10,file=1.txt)do k=1,50,1 fx(k)=x(k-1)*3-x(k-1)-1 f1x(k)=3*x(k-1)*2-1 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,(I3,1x,f11.6) k,x(k) !输出变量:迭代次数k及x的值 write(10,(I3,1x,f11.6) k,x(k) if(abs(x(k)-x(k-1)1e-6) exit !终止迭代条件end dostopend(2)program newtonimplicit nonereal : x(0:50),

11、fx(0:50),f1x(0:50)!分别为自变量x,函数f(x)和一阶导数f1(x)integer : kwrite(*,*) x(0)=read(*,*) x(0) !输入变量:初始值x(0) open(10,file=1.txt)do k=1,50,1 fx(k)=x(k-1)*3+94*x(k-1)*2-389*x(k-1)+294 f1x(k)=3*x(k-1)*2+188*x(k-1)-389 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,(I3,1x,f11.6) k,x(k) !输出变量:迭代次数k及x的值 write(10,(I3,1x,f11.

12、6) k,x(k) if(abs(x(k)-x(k-1)d) then d=abs(a(i,j) js(k)=j is=i end if end do end do !把行绝对值最大的元素换到主元位置 if (d+1.0=1.0) then l=0 else !最大元素为0无解 if(js(k)/=k) then do i=1,n t=a(i,k) a(i,k)=a(i,js(k) a(i,js(k)=t end do !最大元素不在K行,K行 end if if(is/=k) then do j=k,n t=a(k,j) a(k,j)=a(is,j) a(is,j)=t !交换到K列 end

13、 do t=b(k) b(k)=b(is) b(is)=t end if !最大元素在主对角线上 end if !消去 if (l=0) then write(*,100) return end if do j=k+1,n a(k,j)=a(k,j)/a(k,k) end do b(k)=b(k)/a(k,k) !求三角矩阵 do i=k+1,n do j=k+1,n a(i,j)=a(i,j)-a(i,k)*a(k,j) end do b(i)=b(i)-a(i,k)*b(k) end do end do if (abs(a(n,n)+1.0=1.0) then l=0 write(*,100) return end if x(n)=b(n)/a(n,n) do i=n-1,1,-1 t=0.0 do j=i+1,n t=t+a(i,j)*x(j) end do x(i)=b(i)-t end do100 format(1x,fail) js(n)=n do k=n,1,-1 if (js(k)/=k) then t=x(k) x(k)=x(js(k) x(js(k)=t end if end do return end

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

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