弦截法求非线性方程的根

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解:运行程序
(1) 显示出 输入原始值:输入为0.5, 回车。
(2) 显示出 输入初始值:输入为0.6, 回车。
(3) 显示出 输入精度 :输入为0.0001,回车。
(4)显示结果为: 0.567137。
void XieJie(double x1, double x2, double e)
{
cout<<'\t'<<"k\t"<<"x\t"<<"f(x)\n";
double y = f(x1);
double temp = f(x2);
cout<<'\t'<<"0\t"<<x1<<'\t'<<y<<'\n';
{
cout<<"结果为:"<<x2<<'\n';
break;
}
}
}
void main(void)
{
double x, y, e;
cout<<"输入原始值:";
cin>>x;
cout<<"输入初始值:";
cin>>y;
cout<<"输入精度:";
cin>>e;
XieJie( x, y, e );}
四、算法实现
2012-2013(1)专业课程实践论文
弦截法求非线性方程的根
姓名:秦基超,0818180121,R数学08-1班
一、算法理论
弦截法是在牛顿法的基础上得出的求解非线性方程的一种十分重要的插值方法。用牛顿方法求解非线性方程的根时,每一步都要计算导数值,如果函数f(x)比较复杂时,计算f(x)的导数往往比较困难。而弦截法使用差商代替牛顿法中的导数值进行迭代,避免了计算函数的导数值,并且收敛速度很快。
cout<<'\t'<<"1\t"<<x2<<'\t'<<temp<<'\n';
for(int k=2; ; k++)
{
x2 = x2 - temp*(x2-x1)/(temp-y);
temp = f(x2);
cout<<'\t'<<k<<'\t'<<x2<<'\t'<<temp<<'\n';
if(fabs(temp) < e)
(3)利用公式计算方程新的近似根。
(4)若满足精度时,便可停止迭代,此时的x作为方程的近似根,计算结果。否则以 , 分别代替 , 然后继续迭代。
二、算法框图
三、算法程序
#include<iostream.h>
#include<math.h>
double f(double x)
{return x*x*x-3*x-1;}\\{ return exp(x)*x-1; }\*分别为例子1\\例子2的函数*\
例1.利用弦截法计算在 = 在 附近的根,根的准确值为
,精确到4位有效数字。
解:运行程序
(1) 显示出 输ቤተ መጻሕፍቲ ባይዱ原始值:输入为2, 回车。
(2) 显示出 输入初始值:输入为1.9,回车。
(3) 显示出 输入精度 :输入为0.001,回车。
(4)显示结果为: 1.8794。
例2.利用弦截法计算在 = 的根初始值为 。
设 , 是 =0的近似根,利用 , 构造一次插值多项式 ,并用 =0的根作为 =0的新的近似根 。
由于 = +
因此有 =
上述公式可以看做牛顿公式 = 中导数 用差商 取代的结果。
由上面 式中可以得到满足公式的点的序列,且点的序列收敛于根。
弦截法的算法步骤:
(1)确定初始值以及精度要求。
(2)计算函数值。
相关文档
最新文档