Matlab实验报告开普勒方程.doc_第1页
Matlab实验报告开普勒方程.doc_第2页
Matlab实验报告开普勒方程.doc_第3页
Matlab实验报告开普勒方程.doc_第4页
Matlab实验报告开普勒方程.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab实验报告西安交通大学车辆01班教师:阮小娥10015005郝杰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:求方程组 的近似解.程序设计: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.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+b)/2=0,该点就是零点, 如果f(a+b)/2a,从开始继续使用 中点函数值判断。 如果f(a+b)/20,则在区间(a,(a+b)/2)内有零点,(a+b)/2=b,从开始继续使用 中点函数值判断。 这样就可以不断接近零点。 通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。 从以上可以看出,每次运算后,区间长度减少一半,是线形收敛。另外,二分法不能计算复根和重根。(2):一般迭代法非线性方程一般很难求得数值解,而且在实际应用中也没有必要求得精确的数值解,往往只要求得满足一定精度要求的近似解。常用的非线性方程求解方法主要有两种:搜索法(直接法)和迭代法。直接迭代法就最简单的迭代法。直接迭代法的解思路为使用某个固定公式反复校正根的近似值,使其逐步精确,直到得出满足精度要求的结果位置。非线性方程的一般形式为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)的根。所得数列的极限存在时,称迭代格式收敛,反之,则称迭代格式发散。此时无法通过迭代求解。如果两次迭代计算的偏差小于规定的允许误差,即满足收敛判据 xk+1-xk (3) 则终止计算。 如果g(x)有连续的一阶导数g(x),若满足g(x*)1,则对任意初值x0均收敛。g(x)取值不同,迭代过程的收敛情况不同。 直接迭代法的具体步骤: 给定初值x0、计算精度; 用迭代格式xk+1=g(xk)进行迭代计算; 判断迭代结果是否满足收敛判据,如果满足,终止计算并输出结果,否则返回步骤。(3):切线法:切线法又称为牛顿法,是一种一般情况下具有二阶收敛速度的非线性方程的数值解法.具体方法如下: 设x*是方程f(x)=0的根,又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上的唯一根 (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.73936133 x2=0.739085178 x3=0.739085133 x4=0.739085133 所以x=0.739085133. 2.任意数开n次方 为了说明的方便,在此就常见的开3次方作较详细的说明,对于其他的可以类比计算 设x=³A则x³=A 所以x³-A=0 采用递推公式xn+1=xn-(xn³-A)/(3xn²)(表示下标)即可求出³A的任意精度近似值.初值x0一般取与³A接近的整数. 举例求³28,取x0=3,迭代结果如下: x1=3.037037037037037 x2=3.036589037977101 x3=3.036588971875664 x4=3.036588971875663 x5=3.036588971875663 从上面可以看出,只要迭代4次即可求出15位精度的近似值五:实验心得与体会:Matlab实验工具真的是一种非常实用的工具,一般我们用人脑难以及计算的数据,他都可以帮我们解决掉。但是Matlab难在使用该工具之前,你要将问题的解决方法分析清楚,首先要确定问题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论