《Matlab实验报告开普勒方程(共13页).doc》由会员分享,可在线阅读,更多相关《Matlab实验报告开普勒方程(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上Matlab实验报告西安交通大学车辆01班教师:阮小娥郝杰2011.06.22一、实验问题:开普勒方程近似解与方程求根天文学中,有一类著名的方程开普勒方程,x=qsinx+a(0qdltc=(a+b)/2;if f(c)= =0break;elseif f(c)*f(b)0x0=a;elsex0=b;endm=min(abs(df(a),abs(df(b);k=0;while abs(f(x0)m*dltk=k+1;x1=x0-f(x0)/df(x0);x0=x1;fprintf(k=%dx=%.5fn,k,x0);end实验结果:Number3:求方程组 的近似解.
2、程序设计:function f=group1(x)f=sin(x(1)+x(2)+x(3)2*exp(x(1)-4;x(1)+x(2)*x(3);x(1)*x(2)*x(3)+2;x,fval=fsolve(group1,1,1,1)x =1.4142-1.37011.0322fval =1.0e-012 *0.11550.0007-0.0071实验结果:Number4求方程组 的近似解.程序设计: function f=group2(x)f=9*x(2)2-12*x(1)-54*x(2)+61;x(1)*x(2)-2*x(1)+1;x,fval=fsolve(group2,0,0)x =1.
3、09021.0828fval =1.0e-011 * 0.1044-0.0324x,fval=fsolve(group2,-2,2)x =-1.56822.6377fval =1.0e-007 *0.32180.0260实验结果:实验进一步拓展与收获:(1):二分法一般地,对于函数f(x),如果存在实数c,当x=c时,若f(c)=0,那么把x=c叫做函数f(x)的零点。 解方程即要求f(x)的所有零点。 假定f(x)在区间(x,y)上连续 先找到a、b属于区间(x,y),使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f(a+b)/2, 现在假设f(a)0,ab 如果f(a+
4、b)/2=0,该点就是零点, 如果f(a+b)/2a,从开始继续使用 中点函数值判断。 如果f(a+b)/20,则在区间(a,(a+b)/2)内有零点,(a+b)/2=b,从开始继续使用 中点函数值判断。 这样就可以不断接近零点。 通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。 从以上可以看出,每次运算后,区间长度减少一半,是线形收敛。另外,二分法不能计算复根和重根。(2):一般迭代法非线性方程一般很难求得数值解,而且在实际应用中也没有必要求得精确的数值解,往往只要求得满足一定精度要求的近似解。常用的非线性方程求解
5、方法主要有两种:搜索法(直接法)和迭代法。直接迭代法就最简单的迭代法。直接迭代法的解思路为使用某个固定公式反复校正根的近似值,使其逐步精确,直到得出满足精度要求的结果位置。非线性方程的一般形式为f(x)=0,用迭代法求解时,首先需要将一般形式的方程改写为以下形式 x=g(x) (1) 上式左右两端都含有未知的x,我们用一个估计值x0带入方程右端求出x,将求出的x写为x1,方程变为x1=g(x0)。再将x1带入右端,又可求得x2,这样可得 xk+1=g(xk) (2) 上式即迭代格式,由上式反复计算可得到一个数列x0,x1,x2,xk,。 如果此数列有极限,这个极限就是方程x=g(x)的根。所得
6、数列的极限存在时,称迭代格式收敛,反之,则称迭代格式发散。此时无法通过迭代求解。如果两次迭代计算的偏差小于规定的允许误差,即满足收敛判据 xk+1-xk (3) 则终止计算。 如果g(x)有连续的一阶导数g(x),若满足g(x*)1,则对任意初值x0均收敛。g(x)取值不同,迭代过程的收敛情况不同。 直接迭代法的具体步骤: 给定初值x0、计算精度; 用迭代格式xk+1=g(xk)进行迭代计算; 判断迭代结果是否满足收敛判据,如果满足,终止计算并输出结果,否则返回步骤。(3):切线法:切线法又称为,是一种一般情况下具有二阶收敛速度的非线性方程的数值解法.具体方法如下: 设x*是方程f(x)=0的
7、根,又x0为x*附近的一个值,将f(x)在x0附近做泰勒展开: f(x)=f(x0)+(x-x0)f(x0)+1/2(x-x0)²f() 其中在x和x0之间 令x=x*,则: 0=f(x*)=f(x0)+(x*-x0)f(x0)+1/2(x*-x0)²f() 去掉x*-x0的二次项得到: f(x0)+x*f(x0)-x0f(x0)0 即x*x0-f(x0)/f(x0) 令x1=x0-f(x0)/f(x0) 并由此构成一个递推式xk+1=xk-f(xk)/f(xk)(表示下标) 可以证明,当f(x)Ca,b且满足以下条件时,由以上递推式产生的序列最后收敛到f(x)=0在a,b
8、上的唯一根 (1)f(a)f(b)0 计算实例: 1.求解f(x)=x-cosx=0的实根 由零点定理知f(x)=0在(0,/2)内有实根 f(x)=1+sinx,由迭代公式有: xn+1=xn-(xn-cosxn)/(1+sinxn) 取x0=/4得到: x1=0. x2=0. x3=0. x4=0. 所以x=0. 2.任意数开n次方 为了说明的方便,在此就常见的开3次方作较详细的说明,对于其他的可以类比计算 设x=³A则x³=A 所以x³-A=0 采用递推公式xn+1=xn-(xn³-A)/(3xn²)(表示下标)即可求出³A的任
9、意精度近似值.初值x0一般取与³A接近的整数. 举例求³28,取x0=3,迭代结果如下: x1=3.7037 x2=3.7101 x3=3.5664 x4=3.5663 x5=3.5663 从上面可以看出,只要迭代4次即可求出15位精度的近似值五:实验心得与体会:Matlab实验工具真的是一种非常实用的工具,一般我们用人脑难以及计算的数据,他都可以帮我们解决掉。但是Matlab难在使用该工具之前,你要将问题的解决方法分析清楚,首先要确定问题的类型,然后根据已知的理论进行数学建模,建好摸之后,还要将数学模型套用Matlab语言将其编写出来,这样这一类问题便都将迎刃而解。所以,只要分析好一个问题,便是解决了一类的很多问题。实验当中用到了一般迭代法和二分法,学习了这两种问题的解决方法后,有利于我们以后解决其他类似的复杂问题。 专心-专注-专业