搜索
您的当前位置:首页正文

数值分析报告非线性方程的求根解法

来源:六九路网
非线性方程的求根解法

一、实验目的:

通过实验,熟悉线性方程组的求根的经典解法。掌握二分法、简单迭代法和牛顿迭代法的算法思想。理解二分法、简单迭代法、牛顿迭代法、弦截法的Mathematica程序,能够采用不同的方法求出方程的根,并比较各个不同方法的优劣。

二、实验内容:

43221、用二分法求方程x2x4x4x40在区间[0,2]内的根,使误差不超过10。

2、用牛顿法求方程x3x103在x02附近的根。

三、实验要求:

1.不得使用内部命令,要编程实现。2.可以自拟实验题,要求同上。

四、实验程序及结果:

1、用二分法求方程的根

f[x_]:=x4-2x3-4x2+4x+4;

Plot[f[x],{x,0,2}](*画图估计方程根的大概位置*) {a,b}={1.,2.};e=10-2;

For[k=1,k100,k++,c=(a+b)/2;If[Abs[f[c]]Print[\"第\次二分区间:[\中点c=\中点f[c]=\ If[f[a]*f[c]>0,a=c,b=c]; ];

Print[\"方程的根:x=\ \Print[\"方程的精确解为\0,{x,1.4}]]

wilyes11收集 博客(与学习无关):http://blog.sina.com.cn/u/1810231802

420.51.024wilyes11收集 博客(与学习无关):http://blog.sina.com.cn/u/1810231802

1.52.0 第 1 次二分区间:[ 1. , 2. ], 中点c= 1.5 ,中点f[c]= -0.6875 第 2 次二分区间:[ 1. , 1.5 ], 中点c= 1.25 ,中点f[c]= 1.28516 第 3 次二分区间:[ 1.25 , 1.5 ], 中点c= 1.375 ,中点f[c]= 0.312744 第 4 次二分区间:[ 1.375 , 1.5 ], 中点c= 1.4375 ,中点f[c]= -0.186508

第 5 次二分区间:[ 1.375 , 1.4375 ], 中点c= 1.40625 ,中点f[c]= 0.0636759 第 6 次二分区间:[ 1.40625 , 1.4375 ], 中点c= 1.42188 ,中点f[c]= -0.0613183 方程的根:x= 1.41406 f[x]= 0.00120849 方程的精确解为 {x1.41421}

2、用牛顿法求方程的根

f[x_]:=x3-3x-1; M=50; x0=2.; e=10-4; k=1;

x1=x0-f[x0]/f'[x0];

Print[\"第\次迭代x=\

While[Abs[x0-x1]>e,If[k>M,x0=x1;

Print[\"达到最大迭代次数,可能是死循环!\"],x0=x1; x1=x0-f[x0]/f'[x0]; k=k+1;

Print[\"第\次迭代x=\

第 1 次迭代x= 1.88889 第 2 次迭代x= 1.87945 第 3 次迭代x= 1.87939

五、实验总结:

通过本次实验我加深了对二分法、简单迭代法、牛顿迭代法和弦截法算法思想的了解,并对各个不同方法的优劣有了更深的理解。

本次试验主要使用了二分法和牛顿法,我觉得二分法看起来稍微复杂一点,迭代次数也比较多;而牛顿法迭代次数很少就能得到较精确的根。但是牛顿法使用了求导运算,这是Mathematica内部实现的,其实也加大了算法的复杂度,只不过我们没有直接看到而已。所以我认为二分法和牛顿法的优劣并不能简单判断,可能在不同精度要求下各有优势,要具体判断还需进一步设计实验。

wilyes11收集 博客(与学习无关):http://blog.sina.com.cn/u/1810231802

因篇幅问题不能全部显示,请点此查看更多更全内容

Top