一元非线性方程的数值解法

一元非线性方程的数值解法

ID:40715855

大小:68.50 KB

页数:5页

时间:2019-08-06

一元非线性方程的数值解法_第1页
一元非线性方程的数值解法_第2页
一元非线性方程的数值解法_第3页
一元非线性方程的数值解法_第4页
一元非线性方程的数值解法_第5页
资源描述:

《一元非线性方程的数值解法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实习题目:一元非线性方程的数值解法【实习目的】1通过实习进一步掌握牛顿迭代法和弦截法的基本思想;2通过实习进一步掌握牛顿迭代法和弦截法的计算步骤,并能灵活应用;3通过上机调试运行,对方程求根的牛顿迭代法和弦截法程序进行改进,逐步培养解决实际问题的编程能力;【实习要求】1熟悉TurboC的编译环境;2实习前复习牛顿迭代法和弦截法的基本思想和过程;3实习前复习牛顿迭代法和弦截法的计算步骤。【实习设备】1硬件设备:单机或网络环境下的微型计算机一台;2软件设备:DOS3.3以上操作系统,TurboC2.0编译

2、器。【实习内容】1)实习一牛顿迭代法(1)用牛顿迭代法求方程在x=2.0附近的一个实根,精度要求为。要求设置一个最大迭代次数N,如果迭代次数超过预先设定的最大次数N,但仍然达不到精度要求时,则认为方法失败,并给出失败信息。成功的情况下,要求输出的格式为如下形式:i=1x1=2.000000…………失败的情况下,要求输出的格式为如下形式:After%drepeate,nosolved程序为:#include#include#defineN10#definek0.0000

3、01doublef(doublex){returnexp(x)-x-3;}doubleg(doublex){returnexp(x)-1;}voidmain(){inti;doublex2,x1=2.0;for(i=1;i<=N;i++){printf("Wheni=%d,x=%.6f",i,x1);x2=x1-f(x1)/g(x1);if(fabs(x2-x1)>k)x1=x2;else{printf("Wheni=%d,x=%.6f",i,x2);break;}}if(i>N)printf

4、("After%drepeate,nosolvedandifyouwanttoobtainthemoreaccuratevalue,pleaseuseanothermeans!",N);}运行结果截图为:(2)思考题①牛顿迭代法的基本思想是什么?牛顿迭代法是以微分为基础的,微分就是用直线来代替曲线,由于曲线不规则,那么研究直线代替曲线后,剩下的差值是不是高阶无穷小,如果是高阶无穷小,那么这个差值就可以扔到不管了,只用直线就可以了,这就是微分的意义。牛顿法是牛顿在17世纪提出的一种求解方程f(x)=0.

5、多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。牛顿迭代法是取x0之后,在这个基础上,找到比x0更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x)=0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))

6、做曲线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次近似值。上式称为牛顿迭代公式。②若将题中的,将其取更大一点的值,迭代次数是否会发生变化?迭代次数会发生变

7、化。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#d

8、efineeps0.00001floatf(floatx){returnx*exp(x)-1;}voidmain(){floatx0,x1,x2;inti;printf("inputx0,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)

9、

10、fabs(f(x2))

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。