欢迎来到天天文库
浏览记录
ID:14304930
大小:81.50 KB
页数:4页
时间:2018-07-27
《用牛顿迭代法求解非线性方程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值分析实验报告(一)实验名称用牛顿迭代法求解非线性方程实验时间2011年11月19日姓名班级学号成绩一、实验目的1.了解求解非线性方程的解的常见方法。2.编写牛顿迭代法程序求解非线性方程。二、实验内容分别用初值,和求,要求精度为。三、实验原理设,则,记f(x)=,问题便成为了求-113=0的正根;用牛顿迭代公式得,即(其中=0,1,2,3,…,)简单推导假设f(x)是关于X的函数:求出f(x)的一阶导,即斜率:简化等式得到:然后利用得到的最终式进行迭代运算直至求到一个比较精确的满意值。如果f函数在闭区间[a,b]内连续,必存在一点x使得f(x)=c,c
2、是函数f在闭区间[a,b]内的一点我们先猜测一X初始值,然后代入初始值,通过迭代运算不断推进,逐步靠近精确值,直到得到我们主观认为比较满意的值为止。回到我们最开始的那个”莫名其妙”的公式,我们要求的是N的平方根,令x2=n,假设一关于X的函数f(x)为:4f(X)=X2-n求f(X)的一阶导为:f'(X)=2X代入前面求到的最终式中:Xk+1=Xk-(Xk2-n)/2Xk化简即得到我们最初提到求平方根的迭代公式:四、实验步骤1.根据实验题目,给出题目的C程序。当初值为0.01、10、300时,即x=0.01,10,300分别应用程序:#include"s
3、tdio.h"intmain(){floatnumber;printf("Pleaseinputthenumber:");scanf("%f",&number);floatx=1;inti;for(i=0;i<1000;i++){x=(x+number/x)/2;}printf("Thesquarerootof%fis%8.5f",number,x);}得出结果2.上机输入和调试自己所编的程序。当x=0.01时,结果为:10.63015x=10时,结果为:10.63015x=300时,结果也为:10.630153.实验结果分析。当初值取0.01、10
4、、300时取不同的初值得到同样的结果10.63015。五、程序#include"stdio.h"4intmain(){floatnumber;printf("Pleaseinputthenumber:");scanf("%f",&number);floatx=1;inti;for(i=0;i<1000;i++){x=(x+number/x)/2;}printf("Thesquarerootof%fis%8.5f",number,x);}六、实验结果及分析实验结果:当x=0.01时,结果为:10.63015x=10时,结果为:10.63015x=300
5、时,结果也为:10.63015实验结果分析:取不同的初值得到同样的结果用牛顿迭代法求解非线性方程是一种逐次逼近法,迭代过程的实质上是一个逐步显示化的过程。但迭代法的效果并不是总令人满意,有些隐式方程的迭代过程事发散的,一个发散的迭代过程,计算也比较复杂,但它的收敛速度比较快。44
此文档下载收益归作者所有