中南大学fortran课程具体设计

发布时间:

文件
OPEN(10,FILE="X.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10DOI=1,10X=10.0*I
WRITE(10,100,REC=IX100FORMAT(F5.1ENDDO
OPEN(20,FILE="Y.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10WRITE(20,200,REC=16.0WRITE(20,200,REC=214.0WRITE(20,200,REC=326.0WRITE(20,200,REC=433.0WRITE(20,200,REC=546.0WRITE(20,200,REC=654.0WRITE(20,200,REC=767.0WRITE(20,200,REC=875.0WRITE(20,200,REC=984.0WRITE(20,200,REC=10100.0200FORMAT(F6.1END


DIMENSIONY(10OPEN(20,FILE="Y.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10DOI=1,10READ(20,200,REC=IY(IENDDOX=10H=10EPS=1.0DOT=15,95,10CALLEEATK(X,H,10,Y,T,EPS,ZWRITE(*,10T,Z
10FORMAT(1X,'压力P(KN=',F5.1,10X,'变形(mm=',F5.1200FORMAT(F6.1ENDDO
CLOSE(20END
SUBROUTINEEEATK(X1,H,N,Y,T,EPS,ZDIMENSIONY(N,XM(10,YM(10

M=10IF(M.GT.NM=NZ=0.0IF(M.LE.0RETURNIF(N.EQ.1THENZ=Y(1RETURNENDIFIF(M.EQ.1M=2IF(T.LE.X1THENK=1ELSEIF(T.GE.X1+(N-1*HTHENK=NELSEK=1J=N
10IF(IABS(K-J.NE.1THENL=(K+J/2IF(T.LT.X1+(L-1*HTHENJ=LELSEK=LENDIFGOTO10ENDIFIF(ABS(T-X1-(L-1*H.GT.ABS(T-X1-(J-1*HK=JENDIFJ=1L=0DO20I=1,MK=K+J*LIF((K.LT.1.OR.(K.GT.NTHENL=L+1J=-JK=K+J*LENDIFXM(I=X1+(K-1*HYM(I=Y(KL=L+1J=-J
20CONTINUEI=2P=1.0+EPS
100IF((I.LE.M.AND.(P.GE.EPSTHEN

30
Z=YM(IDO30J=2,I
Z=YM(J-1+(T-XM(J-1*(YM(J-1-Z/(XM(J-1-XM(IYM(I=Z
P=ABS(YM(I-YM(I-1I=I+1
GOTO100ENDIFRETURNEND
切比雪夫曲线拟合
DIMENSIONX(10,Y(10,A(7N=10M=6OPEN(10,FILE="X.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10DOI=1,10READ(10,100,REC=IX(IOPEN(20,FILE="Y.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10READ(20,200,REC=IY(IENDDO10CONTINUECALLHCHIR(X,Y,N,A,M,M1WRITE(*,20(I,A(I,I=1,MWRITE(*,*
20FORMAT(1X,'A(',I2,'=',F15.6100FORMAT(F5.1200FORMAT(F6.1
OPEN(30,FILE="A.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=20DOI=1,6
WRITE(30,300,REC=IA(IENDDO
300FORMAT(F15.6ENDSUBROUTINEHCHIR(X,Y,N,A,M,M1DIMENSIONX(N,Y(N,A(M1,IX(20,H(20DO5I=1,M15A(I=0.0IF(M.GE.NM=N-1IF(M.GE.20M=19M1=M+1HA=0.0

1020304050607080
IX(1=1IX(M1=NL=(N-1/MJ=L
DO10I=2,MIX(I=J+1J=J+LCONTINUEHH=1.0
DO30I=1,M1A(I=Y(IX(IH(I=-HHHH=-HHCONTINUEDO50J=1,MII=M1Y2=A(IIH2=H(IIDO40I=J,M
D=X(IX(II-X(IX(M1-IY1=A(M-I+JH1=H(M-I+JA(II=(Y2-Y1/DH(II=(H2-H1/DII=M-I+JY2=Y1H2=H1CONTINUECONTINUE
HH=-A(M1/H(M1DO60I=1,M1
A(I=A(I+H(I*HHDO80J=1,M-1II=M-J
D=X(IX(IIY2=A(II
DO70K=M1-J,MY1=A(K
A(II=Y2-D*Y1Y2=Y1II=K
CONTINUECONTINUE

HM=ABS(HHIF(HM.LE.HATHENA(M1=-HMRETURNENDIFA(M1=HMHA=HMIM=IX(1H1=HHJ=1DO100I=1,NIF(I.EQ.IX(JTHENIF(J.LT.M1J=J+1ELSEH2=A(MDO90K=M-1,1,-190H2=H2*X(I+A(KH2=H2-Y(IIF(ABS(H2.GT.HMTHENHM=ABS(H2H1=H2IM=IENDIFENDIF100CONTINUEIF(IM.EQ.IX(1RETURNI=1
110IF(IM.GE.IX(ITHENI=I+1IF(I.LE.M1GOTO110ENDIFIF(I.GT.M1I=M1IF(I.EQ.(I/2*2THENH2=HHELSEH2=-HHENDIFIF(H1*H2.GE.0.0THENIX(I=IMGOTO20ENDIFIF(IM.LT.IX(1THENDO120J=M,1,-1

120IX(J+1=IX(JIX(1=IMGOTO20ENDIFIF(IM.GT.IX(M1THENDO130J=2,M1130IX(J-1=IX(JIX(M1=IMGOTO20ENDIFIX(I-1=IMGOTO20END
PROGRAMMAIN
DIMENSIONX(10,Y(10,S(9
REAL(8,ALLOCATABLE::S1(:,:,S2(:,A(:,JS(:
REAL(8X,Y,S,R
N=6
ALLOCATE(S1(N+1,N+1,S2(N+1,A(N+1,JS(N+1
K=1
OPEN(10,FILE="X.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10
DOI=1,10
READ(10,300,REC=IX(I
K=K+1ENDDOCLOSE(10
K=1
OPEN(20,FILE="Y.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=10
READ(20,400,REC=IY(I

K=K+1CLOSE(20300FORMAT(F5.1400FORMAT(F6.1
I=1DOI=1,9S(I=5+10*IENDDO

WRITE(*,200'压力(KN','变形(mm'
DOI=1,9
CALLLAGRANGE(X,Y,10,S(I,R
WRITE(*,100S(I,R
ENDDO
200FORMAT(1X,A8,10X,A8100FORMAT(1x,F8.3,10X,F8.3

DOI=1,N+1DOJ=1,N+1
CALLSUM1(S1(I,J,X,I+J-2
ENDDOENDDOS1(1,1=K+1DOI=1,N+1
CALLSUM2(S2(I,X,Y,I-1
ENDDO
CALLGUASS(S1,S2,N+1,A,JS
OPEN(30,FILE="A.TXT",FORM="FORMATTED",ACCESS="DIRECT",RECL=20
DOI=1,6
WRITE(30,500,REC=IA(I
ENDDO
500FORMAT(F15.6

WRITE(*,*'拟合曲线的系数为:',A
END
SUBROUTINESUM1(S,X,N
DIMENSIONX(10REAL(8X,SDOI=1,10

S=S+X(I**N
ENDDOEND
SUBROUTINELAGRANGE(X,Y,N,S,R
DIMENSIONX(N,Y(NREAL(8::X,Y,S,R
R=0.0
IF(N<=0THENPRINT*,"ERROR"
ENDIF
IF(N==1R=Y(1
IF(N==2R=(S-X(2/(Y(1-Y(2+(S-X(1/(Y(2-Y(1
I=1
DOWHILE(x(i<=s
I=I+1ENDDOK=I-4if(K<1K=1M=I+3
IF(M>=NM=N
DOJ=K,MT=1.0DOL=K,M
IF(L/=JT=T*(S-X(L/(X(J-X(L
ENDDOR=R+T*Y(JENDDOEND
SUBROUTINESUM2(S,X,Y,NDIMENSIONX(10,Y(10
REAL(8X,Y,SDOI=1,10
S=S+Y(I*X(I**N
ENDDOEND
subroutineGuass(a,b,n,x,jsreal(8a(n,n,b(n,x(n,js(n
real(8T,D
!全选主元法,从右下角n-k+1阶子阵中选取绝对值最大的元素
dok=1,n-1D=0.0doi=k,n

doj=k,n
if(abs(a(i,j>Dthen
D=abs(a(i,j
js(k=j!记下最大数值的列数is=i!记下最大数值的行数
endifenddoenddo
if(D==0.0thenwrite(*,*'fail'
stopelse!行调整if(is/=kthen
doj=k,nT=a(k,ja(k,j=a(is,ja(is,j=Tenddo
!b数组做出调整
T=b(kb(k=b(isb(is=Tendif!对行进行变换if(js(k/=kthen
doi=1,nT=a(i,ka(i,k=a(i,js(ka(i,js(k=Tenddoendifendif
!高斯消元法的核心变换
doi=k+1,na(i,k=a(i,k/a(k,k
enddo
doi=k+1,ndoj=k+1,n
a(i,j=a(i,j-a(i,k*a(k,j
enddo
b(i=b(i-a(i,k*b(k

enddo
enddo!结束最外层循环
!回代x(n=b(n/a(n,ndoi=n-1,1,-1
T=0doj=i+1,nT=T+a(i,j*x(j
enddo
x(i=(b(i-T/a(i,i
enddo
!由于在全主元法中进行了列变换,所以最后应对xi)进行对应的调整
dok=n-1,1,-1if(js(k/=kthen
T=x(kx(k=x(js(kx(js(k=Tendifenddoend
图像
usemsflibintegerstatustype(xycoordxy
draw=setcolorrgb(#00ff00callmoveto(40,150,xycalloutgtext("0"callmoveto(25,50,xycalloutgtext("100"
callmoveto(30,100,xy!画标注calloutgtext("50"
callmoveto(160,150,xycalloutgtext("变形/mm"callmoveto(120,20,xy
calloutgtext("绘制压力-变形拟合曲线"x=50y=50
callmoveto(50,50,xywx=-5wy=5x=x+wxy=y+wy

draw=lineto(x,y
callmoveto(55,55,xy!纵坐标画箭头wx=5wy=-5x=x+wxy=y+wy
draw=lineto(x,y
status=setwindow(.true.,-55,-50,30,20
callmoveto(50,50,xywx=0wy=100x=x+wxy=y+wy
draw=lineto(x,y!画坐标轴wx=100wy=0x=x+wxy=y+wy
draw=lineto(x,ywx=-5wy=-5x=x+wxy=y+wy
draw=lineto(x,y!横坐标轴画箭头callmoveto(145,155,xywx=5wy=5x=x+wxy=y+wy
draw=lineto(x,ydox=0,100,0.0001
y=-11.639880+2.106925*X-0.060745*X**2+0.001417**3-0.000015**4status=setpixelrgb_w(x,y,#ffff00enddoend
USEMSFLIB
TYPE(WXYCOORD::TINTEGER::RESULTREAL(8X,Y
CHARACTER*4STR

RESULT=SETWINDOW(.TRUE.,-40.,-40.,150.,150.RESULT=SETCOLORRGB(#00FF00CALLMOVETO_W(-1.05D1,0D0,TRESULT=LINETO_W(1.05D2,0D0CALLMOVETO_W(0D0,-1.05D1,TRESULT=LINETO_W(0D0,1.05D2
calloutgtext("绘制压力-变形拟合曲线"DOX=0,100,0.001y=x
RESULT=SETPIXEL_W(X,YENDDO
DOX=0,100,10
CALLMOVETO_W(X-0.3,0D0,TWRITE(STR,"(F4.0"X
CALLOUTGTEXT(STR(1:3ENDDO
DOy=0,100,10
CALLMOVETO_W(0D0,y-0.3,TWRITE(STR,"(F4.0"y
CALLOUTGTEXT(STR(1:3ENDDOEND

中南大学fortran课程具体设计

相关推荐