1、弦截法非线性方程一、 科学计算的算法及其举例应用和利用 MATLAB 自带函 数实现 科学计算法:弦截法非线性方程 实例: 采用弦截法求方程 lgx+x 2 在区间1,4上的一个根。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上的
2、一个 根。xk-1-a? x=a-f(a),f(a)f(x)0 ? f(xk-1)-f(b) ?x1=a-b-af(a) f(b)-f(a)在 MATLAB 中编程实现的弦截法的函数为: Secant. 功能:用弦截法求函数在某个区间的一个零点。 调用格式: root=Secant(f,a,b,eps).其中, f 为函数名; a为区间左端点; b 为区间左端点; eps为根的精度; root 为求出的函数零点。2流程图 弦截法流程图实例流程图: 开始 输入条件: sqrt(x)+log(x)-2 积分区间:( 1,4) 调用 Secant进行运算 输出结果 r =1.8773 结束3源程序代
3、码function root=Secant(f,a,b,eps) if (nargin=3) eps=1.0e-4;endf1=subs(sym(f),findsym(sym(f),a); f2=subs(sym(f),findsym(sym(f),b); if(f1=0) root=a;endif(f2=0)root=b;end if(f1*f20) disp(两端点函数值乘积大于 0!); return;else tol=1;fa=subs(sym(f),findsym(sym(f),a); fb=subs(sym(f),findsym(sym(f),b); root=a-(b- a)*f
4、a/(fb-fa);while(toleps) r1=root;fx=subs(sym(f),findsym(sym(f),r1); s=fx*fa; if(s=0)root=r1;elseif(s0)root=b-(r1-b)*fb/(fx-fb); elseroot=a-(r1-a)*fa/(fx-fa); end endtol=abs(root-r1);endend 实例源代码: r=Secant(sqrt(x)+log(x)-2,1,4) 运行结果: r =1.8773二、 分析单自由度阻尼系统的阻尼系数对其固有振动模态的 影响1 流程图2.源程序代码:3.运行结果:三 Appollo 卫星的运行轨迹1.流程图2.源程序代码:函数文件:结束 t,y=ode45(appollo,0,20,x0,options) 输入初值开始 绘制图形 plot(y(:,1),y(:,3)命令文件:3.运行结果