- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算方法第3章方程的近似解法实验报告张琳
《数值分析》实验报告
题目名称: 方程的近似解法 学 号:
姓 名: 张琳 _____ 任课教师:__于延_________
第三章 方程的近似解法
实验目的:
编写用迭代法、牛顿法、对分区间法、弦线法解非线性方程的程序;
2、实验分析:
计算方法分析:
§3.1 二分法
二分法或称对分法是求方程近似解的一种简单直观的方法。
问题:设函数?(x)在[a, b]上连续,且?(a) ?(b)0,则?(x)=0在[a, b]内至少有一零点,[a, b]称有根区间,若?(x)=0在[a, b]内有唯一根x*,求满足精度?要求的近似根。
二分法的基本思想:计算中通过对分区间、缩小区间范围的步骤有哪些信誉好的足球投注网站零点的位置。
二分法的计算过程如下:
(1)把[a,b]二等分,分点x0=(a+b)/2,
若?(x0)=0, 则实根x*=x0,计算结束,否则
若?(x0) ?(a)0, 则x*?(a,x0), 取a1=a,b1=x0, 否则x*?(x0,b), 取a1=x0,b1=b,得有根区[a1,b1], 其长度是原[a,b]的一半。
(2) 重复上述步骤,把[a1,b1]二等分,分点x1=(a1+b1)/2,
若?(x1)?0, 又的得有根区[a2,b2], 其长度是[a1,b1]的一半。
(3)如此反复下去,若?(xk)?0, 则可的一列有根区间:
[a,b]?[a1,b1] ? [a1,b1] ?…? [ak,bk] ?…
其中[ak,bk]的长度是[ak-1,bk-1]的一半, lin(bk-ak)=0, limxk=x*
实际计算时,可按精度?要求结束二分法过程:
(1) 当?bk+1-ak+1??时,有?x*-xk??,计算结束
(2) 要?x*-xk??, 只需 即 k+1
所以 作k+1次二分法,计算结束。
实现代码:
#include stdio.h
#include math.h
#include iostream
using namespace std;
double f(double x)
{
return pow(x,3)-1.8*pow(x,2)+0.15*x+0.65;
}
void average(int n,double a,double b)
{
double x=(a+b)/2;
printf(\n%4d: [%8.6f,%8.6f] %8.6f %c %8.6f,n,a,b,x,f(x)0?+:-,b-a);
}
int main()
{
double a,b,x;
int n=0;
a=0.5; b=1.25;
printf(\n N [a,b] x f(x) |b-a|);
average(n++,a,b);
while(fabs(b-a)1e-2)
{
x=(a+b)/2.0;
if(f(x)*f(a)0) a=x;
if(f(x)*f(b)0) b=x;
average(n++,a,b);
}
coutendl方程的近似值为x*=(a+b)/2;
system(pause);
return 0;
}
§3.2 迭代法(逐次逼近法)
问题:若?(x)=0在[a, b]内有一根x*,求?(x)=0满足精度? 要求的近似根。
迭代法思想方法:
将?(x)=0转换成等价形式:x=g(x), (g(x)称迭代函数)
给定初值x0,构造迭代序列: xx+1=g(xx) , k=0.1.2. …
limx k+1=limg(xk)=a时迭代法收敛(否则发散), 则a就是方程?(x)=0的根。k?? k??
在计算中, 当?xk+1-xk?? 时取a=xk+1为方程的根。
迭代法的实现过程如下:
(1)选取初值x0,并确定方程f(x)=0的等价形式x=φ(x);
(2)计算x1=φ(x0);
(3)如果|x1-x0|ε则停止计算;否则用x1代替x0,重复步骤(2)和(3)的过程;
几何意义
(1) 将求?(x)=0的根转换成求:y=x, y=g(x) 的交点P*(x, g(x))
(2) 构造点列:{Pk (xk,g(xk))} 逼近交点P*(x, g(x))
例 用迭代法求 的解
实现代码:
#includemath.h
#includeiostream
using namespace std;
#define E 2.71828
float fun(float x)
{
return (1.0/2)*log(4-x);
}
int main()
{
float x0
文档评论(0)