2、于开普勒方程,通常建立函数(5-1)此时,方程求根问题可转化为求函数的零点或方程=0的根的问题;其次,在平面坐标系中绘制函数的曲线,大致了解的零点的情况和位置,如果有多个零点,则需要分区间逐个求解。下面就的具体情形,进行讨论。1绘图并观察函数零点在MATLAB命令窗中输入:►f=inline('x-0.5*sin(x)-1');►fplot(f,[0,2])►grid运行结果如图5.1所示,从图上可以看出函数在区间[1,2]内存在零点。图5.1函数f(x)=x-0.5*sin(x)-1的图形Matlab软件与基础数学实验·61·2利用MATLAB中fzero命令求解在MA
3、TLAB命令窗中输入:►f=inline('x-0.5*sin(x)-1');%建立函数
►c=fzero(f,[1,2])%求函数在[1,2]内的零点c运行结果为:◄Zerofoundintheinterval:[1,2].◄c=1.4987或输入:►c=fzero(f,1)%求函数在1附近的零点c运行结果为:◄Zerofoundintheinterval:[0.98,1.82].◄c=1.4987显然,fzero命令用起来简单易行,但从科学的态度出发,我们应该充分了解“隐藏”在该命令背后的原理、算法以及实现过程。因此,下面介绍求方程近似根的原理、公式及编程方法,从而掌
4、握求解一般非线性方程近似根的常用数值方法,熟悉这些原理、方法对于从事科学研究,解决复杂问题是十分必要的。3“二分法”如果在连续,,且在内仅有一个实数根,此时我们可以采取“二分法”求解方程的近似根。基本思想:首先取区间的中点保留有根的半个区间或;再取新的区间的中点,保留有根的半个区间,依次类推,直到区间长度减小到给定的精度,此时,该区间内任意一点可以作为方程根的近似值。具体步骤:步1:取区间的中点如果,则为所求的根;步2:如果且,则取否则,则取;从而得到新的有解区间,将它看作区间;步3:再重复执行步1至步2,直到区间长度不超过给定的误差界。这样,重复执行上述步骤次,我们得到
5、包含解的区间序列,它是一个区间套,即,可以证明,它有唯一的收敛点,也就是方程的根。误差分析:若用作为方程根的近似值,则其误差Matlab软件与基础数学实验·61·于是取(5-2)则当实施等分的次数时,近似解的精度达到误差小于。下面对于实验问题运用上述方法,并运用MATLAB软件编程具体实现。例题5-1用“二分法”求方程的近似根(误差).问题分析:容易知道方程在[1,2]内有且仅有一个实数根,现运用“二分法”来求解。编写MATLAB程序:f=inline('x-0.5*sin(x)-1');a=1;b=2;dlt=1.0e-5;k=1;whileabs(b-a)>dltc=
6、(a+b)/2;iff(c)==0break;elseiff(c)*f(b)<0a=c;elseb=c;endfprintf('k=%d,x=%.5f',k,c);k=k+1;end运行结果(见表5-1):表5-1求方程近似根的迭代结果k=1,x=1.50000k=2,x=1.25000k=3,x=1.37500k=4,x=1.43750k=5,x=1.46875k=6,x=1.48438k=7,x=1.49219k=8,x=1.49609k=9,x=1.49805k=10,x=1.49902k=11,x=1.49854k=12,x=1.49878k=13,x=1.4
7、9866k=14,x=1.49872k=15,x=1.49869k=16,x=1.49870k=17,x=1.49870从表5-1给出的计算结果可以看出,当近似根的精度为Matlab软件与基础数学实验·61·时,根据公式(5-2)可以计算出迭代16次后近似根的精度达到要求。显然在上述迭代过程中只用到了计算函数的函数值,对函数的其他方面的性态没有要求。练习1分别用MATLAB命令和“二分法”求解下列问题(精度要求达到)。(1)方程在(0,2)内的近似根.(2)圆与曲线的两个交点.(3)方程的近似根.4“切线法”如果函数上有二阶导