数值计算二分法简单迭代法Newton迭代法弦截法割线法双点弦法.docx
上传人:王子****青蛙 上传时间:2024-09-13 格式:DOCX 页数:7 大小:313KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

数值计算二分法简单迭代法Newton迭代法弦截法割线法双点弦法.docx

数值计算二分法简单迭代法Newton迭代法弦截法割线法双点弦法.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验课程数值计算方法学院名称信息科学与技术学院专业名称计算机科学与技术学生姓名学生学号指导教师实验地点实验成绩二〇一六年五月二〇一六年五月实验一非线性方程求根问题描述实验目的:掌握非线性方程求根的基本步骤及方法,。实验内容:试分别用二分法、简单迭代法、Newton迭代法、弦截法(割线法、双点弦法),求x5-3x3+x-1=0在区间[-8,8]上的全部实根,误差限为10-6。要求:讨论求解的全过程,对所用算法的局部收敛性,优缺点等作分析及比较,第2章算法思想思想:在函数的单调有根区间内,将有根区间不断的二分,寻找方程的解。中点mid=(x0+x1)/22.若f(mid)=0,则mid为方程的根,否则比较与两端的符号,若与f(x0)异号,则根在[x0,mid]之间,否则在[mid,x1]之间。3并重复上述步骤,直达达到精度要求,则mid为方程的近似解。2.2简单迭代法思想:迭代法是一种逐次逼近的方法,它是固定公式反复校正跟的近似值,使之逐步精确,最后得到精度要求的结果。迭代公式f(x),迭代公式必须是收敛的。2.计算x1,x1=f(x0).3.判断|x1-x0|是否满足精度要求,如不满足则重复上述步骤。4.输出x1,即为方程的近似解。2.3Newton迭代法思想:设r是的根,选取作为r的初始近似值,过点做曲线的切线L,L的方程为,求出L与x轴交点的横坐标,称x1为r的一次近似值。过点做曲线的切线,并求该切线与x轴交点的横坐标,称为r的二次近似值。重复以上过程,得r的近似值序列,其中,称为r的次近似值原函数的导数f’(x);构造牛顿迭代公式2.计算,若f’(x0)=0,退出计算,否则继续向下迭代。3.若|x1-x0|满足精度要求,x1即为方程的近似解。思想:为加速收敛,改用两个端点都在变动的弦,用差商替代牛顿迭代公式的导数f’(x)。双点弦法的公式2.计算x2=x1-f(x1)(x1-x0)/f(x1)-f(x0);3.判断f(x2)是否满足精度要求,若没有则按照上述步骤继续迭代,否则输出x2.x2即为方程的近似解。第3章测试结果及分析测试结果函数图像函数Y=x5-3x3+x-1二分法(表1-1,1-2,1-3)[-1.6,-1.3]kxkkxkkxk05101611271238134914表1-1区间[-1.2,-]kxkkxkkxk05101611271238134914-1表1-2区间]kxkkxkkxk0714181529163101741118512613表1-3简单迭代法(表2-1.2-2.2-3)初值kxkkxkkxk171328143915410165111761218表2-1初值-1kx1-12-1表2-2结果kxkkxkkxk1815291631017411185121961320714表2-3牛顿迭代法(表3-1.3-2,3-3)初值结果x=kxkkxk142536表3-1初值-1结果x=kx1-12-1表3-2结果x=kxkkxk15263748表3-3双点弦法(表4-1.4-2,4-3)区间[-1.6,-1.3]结果x=kxkf(xk)kxkf(xk)1524963748表4-1区间[-1.2,-]结果x=-1kxkf(xk)1234-1表4-2区间[1.]结果x=kxkf(xk)12345表4-3从测试结果可以看出二分法和简单迭代法的收敛速度远大于牛顿迭代和弦截法的收敛速度。二分法和简单迭代法的公式易于构造和计算,牛顿迭代法虽然收敛高,但要求导数,计算的复杂度高!双点弦法随稍慢于牛顿跌代法,可以用差商代替牛顿迭代法中的导数,降低了计算的复杂度!附录:源程序清单#include<iostream>#include<math.h>usingnamespacestd;doublefoot=;//定义寻根步长inta=-8,b=8;double*rn=newdouble[5];//解的区间double*r=newdouble[5];//方程近似解intm=0;//根的个数intx_count;doubleprecision=;//精度要求//函数的表达式(x^5-3x^3+x-1)doublef(doublex){return(pow(x,5)-3*pow(x,3)+x-1);}voidinit(){//根据函数图像确定根的区间和迭代初值r[0]=-;r[1]=-1;r[2]=;rn[0]=-;rn[1]=-;rn[2]=;}//寻找根的区间voidsearch(){//若没有给出区间和初值,进行逐