当前位置:首页 > 北京科技大学计算方法大作业
计算方法大作业
机械电子工程系 老师:廖福成
注:本文本只有程序题,证明题全部在手写已交到理化楼204了。
32. 证明方程 x?x?1?0
*|xk?1?xk|?10?3[1,2]x在上有一实根,并用二分法求这个根。要求。请给出程
序和运行结果。
1
证明: 设f(x)=x3-x-1
则f(1)= -1, f(2)= 5,f(1)*f(2)= -5<0 因此,方程在[1,2]上必有一实根。 二分法求解程序:
%预先定义homework2.m文件如下: function lc=homework2(x) lc=x^3-x-1;
在MALAB窗口运行: clear
a=1;b=2;tol=10^(-3);N=10000;
k=0; fa=homework2(a); % f 需事先定义 for k=1:N p=(a+b)/2; fp=homework2(p); if( fp==0 || (b-a)/2 if fa*fp<0 b=p; else a=p; end end k,p 程序运行结果: k = 10 p = 1.325195312500000 2 323. 用Newton迭代法求方程 x?2x?10x?20?0 的一个正根,计算结果精确到7位有效数字. 要求给出程序和运行结果. 解: 32'2x?1f(x)?x?2x?10x?20f(x)?3x?4x?10. 0取迭代初值 ,并设,则 f(x)x3?2x2?10x?20?(x)?x?'?x?2f(x)3x?4x?10 牛顿迭代函数为 xk3?2xk2?10xk?20xk?1?xk?23xk?4xk?10牛顿迭格式为: Matlab程序如下: %定义zuoye3.m文件 function x=zuoye3(fname,dfname,x0,e,N) if nargin<5,N=500;end if nargin<4,e=1e-7;end x=x0;x0=x+2*e;k=0; while abs(x0-x)>e&k x0=x;x=x0-feval(fname,x0)/feval(dfname,x0); disp(x) end if k==N,warning('已达上限次数');end 在Matlab窗口中执行: 3 zuoye3(inline('x^3+2*x^2+10*x-20'),inline('3*x^2+4*x+10'),1,1e-7) 结果如下: 1.41176470588235 1.36933647058824 1.36880818861753 1.36880810782137 ans = 1.36880810782137 3x?14. 用牛顿迭代法求方程x?x?1?0在0附近的根. 要求给出程序和运行结 果. 3'2f(x)?x?x?1f(x)?3x?1. 解:令:,则 f(x)x3?x?1?(x)?x?'?x?f(x)3x2?1 牛顿迭代函数为 xk3?xk?1xk?1?xk?23x?1 k牛顿迭格式为: Matalb程序如下: %定义zuoye4.m文件 function x=zuoye4(fname,dfname,x0,e,N) if nargin<5,N=500;end if nargin<4,e=1e-7;end x=x0;x0=x+2*e;k=0; 4
共分享92篇相关文档