SIN,COS倍角式 しばっち 2008/02/08 20:45:02 ├EXTERNALSUBSINEX(F,COSA(),SINA(,),COSB()... しばっち 2008/02/08 20:45:37 │└!チェビシェフの多項式Tn(x)からn倍角の公... 山中和義 2008/02/09 15:09:21 │ └山中和義さんご返事ありがとうございます。 しばっち 2008/02/10 17:34:35 (修正1回)
Re: !チェビシェフの多項式Tn(x)からn倍角の公... |
返事を書く ノートメニュー |
しばっち <dihjvcfsyu> 2008/02/10 17:34:35 ** この記事は1回修正されてます | |
山中和義さんご返事ありがとうございます。
大変参考になります。 TAN倍角を求めるプログラムをのせておきます。 OPTION BASE 0 PUBLIC NUMERIC MAXLEVEL LET MAXLEVEL=20 DIM A(MAXLEVEL),B(MAXLEVEL),AA(MAXLEVEL),BB(MAXLEVEL),C(1),D(1) !' B D !' ---+--- !' A C C*B+A*D !'---------- = --------- !' B D A*C-B*D !'1- ---*--- !' A C LET C(0)=1 LET D(1)=1 LET B(1)=1 LET A(0)=1 FOR K=2 TO MAXLEVEL FOR J=0 TO 1 FOR I=0 TO MAXLEVEL-J LET AA(I+J)=AA(I+J)+A(I)*C(J)-B(I)*D(J) LET BB(I+J)=BB(I+J)+B(I)*C(J)+A(I)*D(J) NEXT I NEXT J FOR I=0 TO MAXLEVEL LET A(I)=AA(I) LET B(I)=BB(I) LET AA(I)=0 LET BB(I)=0 NEXT I PRINT "TAN(";STR$(K);"X)="; CALL DISPLAY(B) PRINT "/"; CALL DISPLAY(A) NEXT K END EXTERNAL SUB DISPLAY(B()) FOR JJ=MAXLEVEL TO 0 STEP -1 IF B(JJ)<>0 THEN EXIT FOR NEXT JJ PRINT "("; IF ABS(B(JJ))<>1 AND JJ>1 THEN PRINT STR$(B(JJ));"*TAN(X)^";STR$(JJ); ELSEIF ABS(B(JJ))=1 AND JJ>1 THEN IF B(JJ)<0 THEN PRINT "-"; PRINT "TAN(X)^";STR$(JJ); END IF FOR J=JJ-1 TO 2 STEP -1 IF B(J)<>0 THEN IF B(J)<0 THEN PRINT "-"; ELSE PRINT "+"; IF B(J)<>1 THEN PRINT STR$(ABS(B(J)));"*TAN(X)^";STR$(J); ELSEIF B(J)=1 THEN PRINT "TAN(X)^";STR$(J); END IF END IF NEXT J IF B(1)<>0 THEN IF JJ>1 THEN IF B(1)<0 THEN PRINT "-"; ELSE PRINT "+"; END IF IF B(1)<>1 THEN PRINT STR$(ABS(B(1)));"*TAN(X)"; ELSEIF B(1)=1 THEN PRINT "TAN(X)"; END IF END IF IF B(0)<>0 THEN IF B(0)<0 THEN PRINT "-"; ELSE PRINT "+"; PRINT STR$(ABS(B(0))); END IF PRINT ")"; END SUB |
└!tanのn倍角の公式 山中和義 2008/02/10 17:34:41 (修正1回) └つづき 山中和義 2008/02/10 17:35:22 (修正1回)