一元非线性方程的数值解法.doc_第1页
一元非线性方程的数值解法.doc_第2页
一元非线性方程的数值解法.doc_第3页
一元非线性方程的数值解法.doc_第4页
一元非线性方程的数值解法.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实习题目:一元非线性方程的数值解法【实习目的】1 通过实习进一步掌握牛顿迭代法和弦截法的基本思想;2 通过实习进一步掌握牛顿迭代法和弦截法的计算步骤,并能灵活应用;3 通过上机调试运行,对方程求根的牛顿迭代法和弦截法程序进行改进,逐步培养解决实际问题的编程能力;【实习要求】 1 熟悉Turbo C 的编译环境;2 实习前复习牛顿迭代法和弦截法的基本思想和过程;3 实习前复习牛顿迭代法和弦截法的计算步骤。【实习设备】1 硬件设备:单机或网络环境下的微型计算机一台; 2 软件设备:DOS3.3以上操作系统,Turbo C 2.0编译器。【实习内容】1)实习一 牛顿迭代法(1)用牛顿迭代法求方程在x=2.0附近的一个实根,精度要求为。要求设置一个最大迭代次数N , 如果迭代次数超过预先设定的最大次数N , 但仍然达不到精度要求时,则认为方法失败,并给出失败信息。 成功的情况下,要求输出的格式为如下形式: i=1 x1=2.000 000 失败的情况下,要求输出的格式为如下形式:After % d repeate , no solved程序为:# include# include# define N 10# define k 0.000001double f(double x)return exp(x)-x-3;double g(double x) return exp(x)-1; void main() int i;double x2,x1=2.0; for(i=1;ik) x1=x2; else printf(When i=%d,x=%.6fn,i,x2); break; if(iN) printf(After %d repeate,no solved and if you want to obtain the more accurate value,please use another means!,N); 运行结果截图为:(2)思考题 牛顿迭代法的基本思想是什么?牛顿迭代法是以微分为基础的,微分就是用直线来代替曲线,由于曲线不规则,那么研究直线代替曲线后,剩下的差值是不是高阶无穷小,如果是高阶无穷小,那么这个差值就可以扔到不管了,只用直线就可以了,这就是微分的意义。牛顿法是牛顿在17世纪提出的一种求解方程f(x)=0.多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。 牛顿迭代法是取x0之后,在这个基础上,找到比x0更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。 设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y=f(x0)+f(x0)(x-x0),求出L与x轴交点的横坐标 x1=x0-f(x0)/f(x0),称x1为r的一次近似值,过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x轴的横坐标 x2=x1-f(x1)/f(x1)称x2为r的二次近似值,重复以上过程,得r的近似值序列Xn,其中Xn+1=Xn-f(Xn)/f(Xn),称为r的n+1次近似值。上式称为牛顿迭代公式。 若将题中的 ,将其取更大一点的值 ,迭代次数是否会发生变化?迭代次数会发生变化。2)实习二 弦截法(1)用弦截法求方程的一个实根,初始近似值分别去0.5和10.6,精度要求为。(2)要求: 推导求出x的式子x=f(x) 。 程序中要求设置一个最大迭代次数N 。 对于输入的初始近似值x0 , x1要求加以判断,即如果f(x0)f(x1)0 ,则继续使用弦截法求方程的根 ;否则重新选取x0 , x1 , 直到f(x0)f(x1) 0 。 方程无解的情况下,要求输出方程无解的信息。 方程有解的情况下,请写出程序运行的结果。程序编写为:#include#include#define eps 0.00001float f(float x)return x*exp(x)-1;void main()float x0,x1,x2;int i;printf(input x0,x1=);scanf(%f,%f,&x0,&x1);for(i=1;i=100;i+)x2=x1-(f(x1)*(x1-x0)/(f(x1)-f(x0);if(fabs(x2-x1)eps|fabs(f(x2)eps)printf(nRoot of equation is:%8.6f,%dn,x2,i);return;x0=x1; x1=x2;printf(nAfter %d repeat,no solved.n,i);程序运行结果截图为:(3)思考题 弦截法的基本思想是什么? 弦截法求方程的根是一种解方程得基本方法,在计算机编程中常用。他的思路是这样的:任取两个数,判断这两个数的函数值,如果函数值是同号,换两个数再试,直到两个数x1,x2对应的函数值为异号时为止,这时方程的解肯定在这两个数x1,x2之间。连接这两点所对应的函数值,连线与x轴的交点为新的x,若f(x)与f(x1)同号,则把x当作新的x1,将新的x1与x2连接,如此循环如果f(x)与f(x1)异号,则把把x当作新的x2,将x1与新的x2连接,循环 方程的根是多少?见程序运行截图。 当最大迭代次数N 取100 ,初始近似

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论