新しく発言する  EXIT  インデックスへ

多項式展開


  多項式展開 しばっち 2008/03/22 21:42:39  (修正1回)
多項式展開  返事を書く  ノートメニュー
しばっち <dihjvcfsyu> 2008/03/22 21:42:39 ** この記事は1回修正されてます
OPTION BASE 0
INPUT PROMPT "項数(2<=NN<=26) NN=":NN
LET MAXLEVEL=6
DIM A(NN)
PUBLIC NUMERIC PARA(26)
FOR I=1 TO NN
LET PARA(I)=I !'係数
NEXT I
FOR N=2 TO MAXLEVEL
CALL DISPLAYN(PARA,NN)
PRINT "^";STR$(N)
LET K$=""
CALL COMBDISPLAYRECURSIVE(0,NN,N,A,K$)
IF LEFT$(K$,1)="+" THEN LET K$=RIGHT$(K$,LEN(K$)-1)
PRINT K$
NEXT N
END

EXTERNAL SUB DISPLAYN(A(),N)
PRINT "(";
IF A(1)<0 THEN PRINT "-";
IF ABS(A(1))=1 THEN
PRINT "a";
ELSEIF A(1)<>0 THEN
PRINT STR$(ABS(A(1)));"a";
END IF
FOR I=2 TO N
IF A(I)<0 THEN PRINT "-"; ELSE PRINT "+";
IF ABS(A(I))=1 THEN
PRINT MID$("abcdefghijklmnopqrstuvwxyz",I,1);
ELSEIF A(I)<>0 THEN
PRINT STR$(ABS(A(I)));MID$("abcdefghijklmnopqrstuvwxyz",I,1);
END IF
NEXT I
PRINT ")";
END SUB

EXTERNAL SUB COMBDISPLAYRECURSIVE(NN,N,M,A(),K$)
IF NN=N THEN
LET S=M
FOR J=0 TO NN
LET S=S-A(J)
NEXT J
IF S=0 THEN
LET V=FAC(M)
FOR J=0 TO N-1
LET V=V*PARA(J+1)^A(J)/FAC(A(J)) !'多項定理
NEXT J
IF V<0 THEN
LET L$="-"
ELSE
LET L$="+"
END IF
IF V<>0 THEN
IF ABS(V)<>1 THEN LET L$=L$ & STR$(ABS(V))
FOR J=0 TO N-1
IF A(J)=1 THEN
LET L$=L$ & MID$("abcdefghijklmnopqrstuvwxyz",J+1,1)
ELSEIF A(J)>1 THEN
LET L$=L$ & MID$("abcdefghijklmnopqrstuvwxyz",J+1,1) & "^" & STR$(A(J))
END IF
NEXT J
LET K$=L$ & K$
END IF
END IF
EXIT SUB
END IF
FOR I=0 TO M
LET A(NN)=I
CALL COMBDISPLAYRECURSIVE(NN+1,N,M,A,K$)
NEXT I
END SUB

EXTERNAL FUNCTION FAC(X)
LET S=1
FOR I=2 TO X
LET S=S*I
NEXT I
LET FAC=S
END FUNCTION
  係数が指定できると 島村1243 2008/03/23 08:57:56 
  │└返事 しばっち 2008/03/23 09:52:22 
  │ └失礼しました 島村1243 2008/03/23 13:43:12  (修正1回)
  !多変数多項式の演算(加減乗算) 山中和義 2008/03/23 21:13:46 
   └つづき 山中和義 2008/03/23 21:14:43 
    └つづき 山中和義 2008/03/23 21:17:07 

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