1、数值计算方法实验报告 1Solution of Nonlinear Equations f(x)=0 1.实验描述1P40.1:参照程序2.1求解出单调收敛的不动点。2P 49.1:已知初值,时间和末值,求解汇率。3. P54.3:已知函数求函数在区间内的极值和根。4. P69.1:已知运动方程求解运动时间和距离。2.实验内容1使用程序2.1求解下面每个函数的不动点(尽肯能多)近似值,答案精确到小数点后12位。同时,构造每个函数的图和直线y=x来显示所有不动点。(a) 532()gxx(b) cos(in)(c) 2()1.(d) cos()xg2如果在240个月内每月付款300美元,求解满足
2、全部年金A为500000美元的汇率I的近似值(精确到小数点后10位) 。3.一个计算机程序使用点(x 0,y0) , (x 1,y1) , (x n,yn)可画出函数y=f(x)的图形,通常还标记出图形的纵向高度,而且必须写出一个子程序来确定函数f在区间a,b内的最大值和最小值。(a)构造一个算法寻找值Ymax=max kyk和Ymin=min kyk.(b)写一个MATLAB程序寻找函数f(x)在区间a,b内根的近似值位置和极值。(c)使用(b)中的程序寻找第1题和第2题中根的位置和极值,并用真实值进行比较。4.设投射方的运动程为/15()960()4804tyftetxr(a) 求当撞击地
3、面时经过的时间,精确到小数点后10位。(b) 求水平飞行行程,精确到小数点后10位。数值计算方法实验报告 23.实验结果及分析1. P40.1:算法:(1)输入函数g,p0,tol,max1,令k=2。(2)判断kmax1是否成立,如成立输出结果,如不成立,执行(3) 。(3)令p(k)=g(p(k-1),err=|p(k)-p(k-1)|。(4)判断errmax1Let p(k)=g(p(k-1);err=|p(k)-p(k-1)|err0是否成立,若不成立输出结果,若成立执行步骤(4) 。(4)判断kmax1是否成立 ,若成立输出结果,若不成立执行步骤( 5) 。(5)令dx=yb*(b-
4、a)/(yb-ya),c=b-x,yc=feval(f,c).(6) 判断yc=0是否成立,若成立输出结果,若不成立执行步骤(7) 。(7)判断yc*yb0是否成立,若成立,令b=c,yb=yc. 若不成立,令a=c,ya=yc.( 8)令err=|b-a|.(9)判断err0kmax1dx=yb*(b-a)/(b-a)c=b-xyc=feval(f,c)yc=0yc*yb0a=cya=ycb=cyb=ycerr=|b-a|errN+1是否成立,若成立,输出并执行步骤(3) ;若不成立,令p(k)=feval(f,b*(k-1)/(a*N),k=k+1,再执行步骤(2) 。(3)令m=p(1)
5、,k=2.(4)判断kN+1是否成立,若成立,输出并执行步骤(6) ;若不成立,执行步骤(5) 。(5)判断mp(k)是否成立,若成立,m=p(k),执行步骤(4) ;若不成立,执行步骤(4) 。(6)令n=p(1),k=2.(7) 判断kN+1是否成立,若成立,输出;若不成立,执行步骤(8) 。(8)判断np(k)是否成立,若成立,n=p(k),输出;若不成立,执行步骤(7) 。流程图:数值计算方法实验报告 10startInput f,a,b,N k=1kN+1p(k)=feval(f,b*(k-1)/(a*N) outputm=p(1),k=2kN+1mp(k)m=p(k)outputn
6、=p(1),k=2kN+1np(k) outputYNk=k+1YNNYk=k+1YNk=k+1N数值计算方法实验报告 11(b)算法:(1)输入f,X,delta.(2)令Y=f(X), n=length(X),m=0,l=0,X(n+1)=X(n),Y(n+1)=Y(n),k=2.(3)判断kn+1是否成立,若成立,输出;若不成立,执行步骤(4) 。(4)判断Y(k-1)*Y(k)n+1Y(k-1)*Y(k) X=-2:0.0001:2; r,v=chao(k,X,1e-12)输出r =0.001050000000000 0.009950000000000 0.10005000000000
7、0v = 1.0e+006 *0.000001914704000 -0.000124386704000 7.558219000000000用程序2.3求得c = 0.100000000000003用(b)中程序求的根的位置的近似值中有3个,真实值却只在c = 0.100000000000003左右,说明程序(b)计算结果不过精确。用(b)中程序求第2题输入 X=-2:0.0001:2; r,v=chao(o,X,1e-12)输出r =-0.847150000000000v =1.0e+004 *-0.000890718645719 -0.000070851764725 -0.000070851
8、725020 -0.000070851730976 -0.000070851782626 -1.027390254389335用程序2.3求得c =-0.847129818131817用(b)中程序求的根的位置的近似值中有1个,与真实值c =-0.847129818131817接近,说明程序(b)计算结果较为精确。endoutput数值计算方法实验报告 144.p69.1算法:(1) 输入h,r,p0,p1,delta,max1.令k=1.(2) 判断kmax1是否成立,若成立,输出;若不成立,执行(3) 。(3) 令p2=p1-feval(f,p1)*(p1-p0)/(feval(f,p1)
9、-feval(f,p0),err1=|p1-p0|,err2=|feval(r,p1)-feval(r,p0)|,p0=p1,p1=p2(4) 判断err1max1P2=p1-feval(f,p1)*(p1-p0)/(feval(h,p1)-feval(h,p0)Err1=|p1-p0| err2=|feval(r,p1)-feval(r,p0)|C=feval(r,p1) p0=p1 p1=p2Err20disp(ya,yb are not suitable )returnend for k=1:max1dx=yb*(b-a)/(yb-ya);c=b-dx;yc=feval(f,c);if
10、yc=0,break;elseif yc*yb0a=c;ya=yc;elseb=c;yb=yc;enderr=abs(b-a);if errdelta break,endend3%definite k(x)function y=k(x)y=1000000.*x.3-111000.*x.2+1110.*x-1;数值计算方法实验报告 19function r,v=chao(f,X,delta)%input-f is the object function % -X is the vector of abscissas% -delta is the tolerance %output-r is th
11、e vector of approximate roots % -v is the vector of df approximate rootsY=f(X);n=length(X);m=0;l=0;X(n+1)=X(n);Y(n+1)=Y(n);for k=2:nif Y(k-1)*Y(k)=0m=m+1;r(m)=(X(k-1)+X(k)/2;ends=(Y(k)-Y(k-1)*(Y(k+1)-Y(k);if (abs(Y(k)delta)r(m)=X(k);endif s=1e-6l=l+1;v(l)=Y(k);endend%definite function o(x)function y
12、=o(x)y=5.*x.10-38.*x.9+21.*x.8-5.*pi.*x.6-3.*pi.*x.5-5.*x.2+8.*x-3;function r,v=chao(f,X,delta)%input-f is the object function % -X is the vector of abscissas% -delta is the tolerance %output-r is the vector of approximate roots % -v is the vector of df approximate rootsY=f(X);n=length(X);m=0;l=0;数值
13、计算方法实验报告 20X(n+1)=X(n);Y(n+1)=Y(n);for k=2:nif Y(k-1)*Y(k)=0m=m+1;r(m)=(X(k-1)+X(k)/2;ends=(Y(k)-Y(k-1)*(Y(k+1)-Y(k);if (abs(Y(k)delta)r(m)=X(k);endif s=1e-12l=l+1;v(l)=Y(k);endend4.%definite function r(t)function x=r(t)x=2400*(1-exp(-t/15);%definite function h(t)function y=h(t)y=9600*(1-exp(-t/15)-
14、480*t;function p1,err1,err2,k,c=secant(h,r,p0,p1,delta,max1)%input-h is the function of altitude inpput as string h% -r is the function of path input as a string r% -p0 and p1 is the initial approximations to a zero% -delta is the tolerance for p1 and y% -max1 is the maximum number of iterations%out
15、put-p1 is the secant method approximation to the zero% -err1 is estimate for p1数值计算方法实验报告 21% -err2 is estimate for y% -k is the number of iterations% -y is the function value r(p1) for k=1:max1p2=p1-feval(h,p1)*(p1-p0)/(feval(h,p1)-feval(h,p0);err1=abs(p1-p0);err2=abs(feval(r,p1)-feval(r,p0);c=feval(r,p1);p0=p1;p1=p2;if err1delta&err2delta,break,endend