C R.C. PROGRAM OSCIATION PARAMETER( NMAX=1000 ) REAL P(0:NMAX), X(0:NMAX), AL(0:NMAX) C 配列を宣言するとき、配列の長さは変数で指定できない。ここでの変数は NMAX. C そのため、配列の長さを変数で指定したい場合は、PARAMETER宣言を行う. XMAX=1.0 XMIN=-1.0 PI=3.1415926 TMIN=-PI/2.0 TMAX=PI/2.0 C x軸の幅 WRITE(*,*) "INPUT THE LEGENDRE NUMBER !" READ(*,*) N WRITE(*,*) "INPUT THE LEGENDRE ASSOCIATED NUMBER !" READ(*,*) M C ルジャンドル多項式の次数 A=MOD(N-M,2) DO 10 I=0,NMAX-1 AL(I)=TMIN+(TMAX-TMIN)*I/NMAX X(I)=COS(AL(I)) 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*(SIN(AL(I)))**M 10 CONTINUE *-- グラフの呼び出し --- WRITE(*,*) ' WORKSTATION ID (I) ? ;' CALL SGPWSN READ (*,*) IWS CALL GROPN( IWS ) CALL GRFRM CALL USGRPH( NMAX, AL, 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