资源描述:
《实验一_非线性方程求根.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验一非线性方程求根实验名称:非线性方程求根实验类型:验证性实验学 时:22.1实验环境①操作系统:WindowsXP/Win7②编程环境:自定2.2实验目的①掌握二分法、牛顿迭代法等常用的非线性方程迭代算法;②了解迭代算法的设计原理及初值对收敛性的影响。2.3实验原理和方法2.3.1二分法的算法描述计算的根的二分法如下:①输入有根区间,根的容许误差和与零之间的容许误差,置二分次数,并计算,如果,转②;否则,算法失败,结束;②当时,计算,;分情况处理:若,则停止计算,输出近似根以及二分次数;否
2、则若,则;否则,;,转②③;④输出近似根以及二分次数。2.3.2牛顿迭代法的算法描述给定初始值,为根的容许误差,为与零之间的容许误差,为最大迭代次数。置迭代次数,进行如下计算:①如果或,则算法失败,结束;否则执行②②计算,;③若或,则输出近似根及迭代次数,程序结束;否则执行④④令,转向①2.3.3牛顿迭代法的改进弦截法(割线法)改用差商代换牛顿法中的,可得迭代公式称之为弦截法。该方法是超线性收敛的,与单点弦截法相比有所改善。不需要计算导数,但是它需要提供两个初值,而且收敛速度不如牛顿迭代算法。2
3、.4实验内容和步骤题目求方程在1.5附近的根.(误差限为)(1)编程实现二分法,并求解上述非线性方程的根(有根区间自己确定)。(2)设计弦截法,计算原方程的根。参考答案原方程的根为解:(1)二分法流程图:开始f(x)=x^3+x^2-3x-3输入精度eps,端点值a,bf(a)*f(b)>0t=(a+b)/2f(t)=0NYNYNb=ta=t
4、b-a
5、0输出t结束YNYMATLAB程序代码:function[r,i]=HalfInterval(f,a
6、,b,eps)i=0;f1=subs(sym(f),findsym(sym(f)),a);f2=subs(sym(f),findsym(sym(f)),b);if(f1==0);r=a;endif(f2==0)r=b;endif(f1*f2>0)disp('调整a,b的值');return;else[r,i]=FindRoots(f,a,b,eps,i);endfunction[r,i]=FindRoots(f,a,b,eps,i)f_1=subs(sym(f),findsym(sym(f)),
7、a);f_2=subs(sym(f),findsym(sym(f)),b);mf=subs(sym(f),findsym(sym(f)),(a+b)/2);if(f_1*mf>0)t=(a+b)/2;i=i+1;[r,i]=FindRoots(f,t,b,eps,i);elseif(f_1*mf==0)r=(a+b)/2;i=i+1;elseif(abs(b-a)<=eps)r=(b+a)/2;i=i+1;elses=(a+b)/2;i=i+1;[r,i]=FindRoots(f,a,s,eps
8、,i);endendend[r,i]=HalfInterval('x*x*x+x*x-3*x-3',1,2,1.0e-6);vpa(r,7)[r,i]=HalfInterval('x*x*x+x*x-3*x-3',1,2,1.0e-9);vpa(r,10)程序结果:(2)弦截法流程图弦截法MATLAB程序代码:functiony=newton(a,n,x01,x02,eps)%an+1元素的一维实数组,输入参数,按升幂存放方程系数。%n 整变量,输入参数,方程阶数。%x01,xo2初始值,esp
9、给定精度%弦截法迭代公式:x(k+1)=x(k)-(x(k)-x(k-1))*f(x(k))/[f(x(k)-f(x(k-1))]x(1)=x01;x(2)=x02;b=1;i=2;while(abs(b)>eps*x(i))x(i+1)=x(i)-gfun(a,n,x(i))*(x(i)-x(i-1))/(gfun(a,n,x(i))-gfun(a,n,x(i-1)));b=x(i+1)-x(i);i=i+1;endy=x(i);ifunctiony=gfun(a,n,x)%待求根的实数代数方
10、程的函数y=0.0;fori=1:(n+1)y=y+a(i)*x^(n+1-i);Enda=[1,1,-3,-3];n=3;x01=1.5;x02=2;eps=1.0e-6;y=newton(a,n,x01,x02,eps);vpa(y,7)a=[1,1,-3,-3];n=3;x01=1.5;x02=2;eps=1.0e-9;y=newton(a,n,x01,x02,eps);vpa(y,10)程序结果:2.5练习思考①比较二分法和牛顿法在非线性方程求根中的优缺点和收敛速度。参考:二分法简单易行