资源描述:
《北航数值分析大作业第三题(fortran).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、word格式“数值分析“计算实习大作业第三题——SY1415215孔维鹏一、计算说明1、将xi=0.08i,yj=0.5+0.05j分别代入方程组(A.3)得到关于t,u,v,w的的方程组,调用离散牛顿迭代子函数求出与xi,yj对应的ti,uj。2、调用分片二次代数插值子函数在点(ti,uj)处插值得到z(xi,yj)=f(xi,yj),得到数表(xi,yj,fxi,yj)。3、对于k=1,2,3,4⋯,分别调用最小二乘拟合子函数计算系数矩阵crs及误差σ,直到满足精度,即求得最小的k值及系数矩阵crs。4、将xi*=0.1i,yj*=0.5+0.2j分别代入
2、方程组(A.3)得到关于t*,u*,v*,w*的的方程组,调用离散牛顿迭代子函数求出与xi*,yj*对应的ti*,uj*,调用分片二次代数插值子函数在点(ti*,uj*)处插值得到z*(xi*,yj*)=f(xi*,yj*);调用步骤3中求得的系数矩阵crs求得p(xi*,yj*),打印数表xi*,yj*,fxi*,yj*,p(xi*,yj*)。二、源程序(FORTRAN)PROGRAMSY1415215DIMENSIONX(11),Y(21),T(6),U(6),Z(6,6),UX(11,21),TY(11,21),FXY(11,21),C(6,6)DIME
3、NSIONX1(8),Y1(5),FXY1(8,5),PXY1(8,5),UX1(8,5),TY1(8,5)REAL(8)X,Y,T,U,Z,FXY,UX,TY,C,E,X1,Y1,FXY1,PXY1,UX1,TY1OPEN(1,FILE='第三题计算结果.TXT')DOI=1,11X(I)=0.08*(I-1)ENDDODOI=1,21Y(I)=0.5+0.05*(I-1)....word格式ENDDO!*****求解非线性方程组,得到z=f(t,u)的函数*******DOI=1,11DOJ=1,21CALLDISNEWTON_NONLINEAR(X(I)
4、,Y(J),UX(I,J),TY(I,J))ENDDOENDDO!*************分片二次插值得到z=f(x,y)***********DOI=1,11DOJ=1,21CALLINTERPOLATION(UX(I,J),TY(I,J),FXY(I,J))ENDDOENDDOWRITE(1,"('数表(x,y,f(x,y)):')")WRITE(1,"(3X,'X',7X,'Y',10X,'F(X,Y)')")DOI=1,11DOJ=1,21WRITE(1,'(1X,F5.2,2X,F5.3,2X,E20.13)')X(I),Y(J),FXY(I,J)
5、ENDDOWRITE(1,"('')")ENDDO!***********最小二乘拟合得到P(x,y)**************N=11M=21WRITE(1,'("","K和σ分别为:")')DOK=1,20CALLLSFITTING(X,Y,FXY,C,N,M,K,K,E)WRITE(1,'(I3,2X,E20.13)')K-1,EIF(E<10E-7)EXITENDDOWRITE(1,'("")')WRITE(1,'("系数矩阵Crs(按行)为:")')DOI=1,KDOJ=1,KWRITE(1,'(E20.13,2X,)')C(I,J)ENDDOW
6、RITE(1,"('')")WRITE(*,"('')")....word格式ENDDODOI=1,8X1(I)=0.1*IENDDODOJ=1,5Y1(J)=0.5+0.2*JENDDODOI=1,8DOJ=1,5CALLDISNEWTON_NONLINEAR(X1(I),Y1(J),UX1(I,J),TY1(I,J))ENDDOENDDODOI=1,8DOJ=1,5CALLINTERPOLATION(UX1(I,J),TY1(I,J),FXY1(I,J))ENDDOENDDOPXY1=0DOI=1,8DOJ=1,5DOII=1,KDOJJ=1,KPXY1(
7、I,J)=PXY1(I,J)+C(II,JJ)*(X1(I)**(II-1))*(Y1(J)**(JJ-1))ENDDOENDDOENDDOENDDOWRITE(1,'("")')WRITE(1,'("数表(x,y,f(x,y),p(x,y)):")')WRITE(1,"(2X,'X',6X,'Y',12X,'F(X,Y)',14X,'P(X,Y)')")DOI=1,8DOJ=1,5WRITE(1,'(F5.3,2X,F5.3,2X,E20.13,2X,E20.13)')X1(I),Y1(J),FXY1(I,J),PXY1(I,J)ENDDOWRITE(1,"
8、('')")ENDDOCLOSE(1)