新しく発言する  EXIT  インデックスへ
SIN,COS倍角式

  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)
PRINT
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回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。