专业资料参考首选《 MATLAB 程序设计实践》课程考核一、, 编程实现以下科学计算算法, 并举一例应用之。( 参考书籍《精通 MATLA B 科学计算》,王正林等著,电子工业出版社, 2009 年) “弦截法非线性方程求解” 1 、算法说明:弦截法的算法过程如下: (1)过两点(a,f(a)),(b,f(b)) 作一直线,它与 x轴有一个交点,记为 x1.. (2)如果 f(a)f(x1)<0, 过两点(a,f(a)),(x1,f(x1)) 作一直线,它与 x 轴的交点记为 x2, 否则过两点(b,f(b)),(x1,f(x1)) 作一直线,它与 x 轴的交点记为 x2; (3)如此下去,直到|xn-xn-1|< ?,就可以认为 xn为 f(x)=0 在区间[a,b] 上的一个根。( 4) Xk 的递推公式为: ??????????????????????????????0)()( ),()()( 0)()( ),()()( 1 1 1 1 1 1kk kk kk kkxfafbfbfxf bxbx xfafafafxf axax 且)()()( 1afafbf abax????在 MATLAB 中编程实现的弦截法的函数为: Secant. 功能:用弦截法求函数在某个区间的一个零点。调用格式: root=Secant(f,a,b,eps). 其中, f为函数名; a为区间左端点; b为区间右端点; eps 为根的精度; root 为求出的函数零点。 2 、流程图: 专业资料参考首选 f(a)f(x 1 )<0? YES (a,f(a)),(x 1, f(x 1 )) 作一直线,它与 x 轴的交点记为 x 2 NO (b,f(b)),(x 1, f(x 1 )) 作一直线,它与 x 轴的交点记为 x 21 * ( ) ( ) ( ) kkk x a x a f a f x f a ??? ?? 1 * ( ) ( ) ( ) kkk x a x b f b f x f b ??? ??? 1????xx kk? 1????xx kk YES YES 输出 x n为 f(x)=0 在区间[a,b] 上的一个根输出 x n为 f(x)=0 在区间[a,b] 上的一个根过(a,f(a)),(b,f(b)) 作一直线,它与x 轴有一个交点,记为 x 1. 输入 a,b,?xx kk1?? NOxx kk1?? NO 3、 M文件: function root=Secant(f,a,b,eps) %弦截法求函数 f在区间[a,b] 上的一个零点%函数名: f%区间左端点: a%区间右端点: b%根的精度: eps %求出的函数零点: root if(nargin==3) eps=-4; end f1=subs(sym(f),findsym(sym(f)),a); f2=subs(sym(f),findsym(sym(f)),b); 专业资料参考首选 if(f1==0) root=a; end if(f2==0) root=b; end if(f1*f2>0) disp(' 两端点函数值大于 0!'); return; else tol=1; fa=subs(sym(f),findsym(sym
弦截法非线性方程求解 来自淘豆网m.daumloan.com转载请标明出处.