C R.C. PROGRAM OSCIATION PARAMETER( NMAX=1000 ) REAL P(0:NMAX), X(0:NMAX) C 配列を宣言するとき、配列の長さは変数で指定できない。ここでの変数は NMAX. C そのため、配列の長さを変数で指定したい場合は、PARAMETER宣言を行う. XMAX=1.0 XMIN=-1.0 C x軸の幅 WRITE(*,*) "INPUT THE LEGENDRE NUMBER !" READ(*,*) N WRITE(*,*) "INPUT THE LEGENDRE ASSOCIATED NUMBER !" READ(*,*) M C ルジャンドル多項式の次数N,M A=MOD(N-M,2) DO 10 I=0,NMAX-1 X(I)=XMIN+(XMAX-XMIN)*I/NMAX S=0.0 IF(A.EQ.0) THEN DO 30 K=0,(N-M)/2 S=S+(0.5**N)*((-1)**K)*(X(I)**(N-2*K-M))* & (KAIJO(2*N-2*K)/(KAIJO(K)*KAIJO(N-K)*KAIJO(N-2*K-M))) 30 CONTINUE ELSE DO 20 K=0,(N-M-1)/2 S=S+(0.5**N)*((-1)**K)*(X(I)**(N-2*K-M))* & (KAIJO(2*N-2*K)/(KAIJO(K)*KAIJO(N-K)*KAIJO(N-2*K-M))) 20 CONTINUE END IF P(I)=S*(1.0-X(I)**2)**(M/2.0) 10 CONTINUE *-- グラフの呼び出し --- WRITE(*,*) ' WORKSTATION ID (I) ? ;' CALL SGPWSN READ (*,*) IWS CALL GROPN( IWS ) CALL GRFRM CALL USGRPH( NMAX, X, P ) CALL USSTTL( '', '', '', '' ) CALL GRCLS STOP END *-- 階乗関数を計算するサブルーチン --- FUNCTION KAIJO(K) IF (K.LT.2) THEN KAIJO=1.0 ELSE KAIJO=1.0 DO 110 J=1,K KAIJO=J*KAIJO 110 CONTINUE END IF RETURN END