多項式展開
多項式展開 しばっち 2008/03/22 21:42:39 (修正1回)
├係数が指定できると 島村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
Re: 多項式展開
|
返事を書く ノートメニュー
|
山中和義 <drdlxujciw> 2008/03/23 21:13:46
|
!多変数多項式の演算(加減乗算)
OPTION BASE 0
!マクロ DEF GetVal(p$)=VAL(p$(N+2:LEN(p$))) !係数を得る DEF GetDegree$(p$)=p$(1:N) !次数を得る
SUB PolyCopy(p$(), q$()) !コピーする FOR i=1 TO VAL(p$(0)) LET q$(i)=p$(i) !係数、次数 NEXT i LET q$(0)=p$(0) !項の数 END SUB
SUB PolySimple(r$()) !同類項をまとめる LET k=VAL(r$(0)) FOR i=1 TO k-1 !※組み合わせで考える LET ri$=GetDegree$(r$(i)) !次数 LET t=GetVal(r$(i)) !係数 IF t<>0 THEN !0を除く FOR j=i+1 TO k LET rj$=GetDegree$(r$(j)) !次数 IF ri$=rj$ THEN !同類項なら LET t=t+GetVal(r$(j)) !前方へ吸収する LET r$(j)(N+2:LEN(r$(j)))="0" !削除する END IF NEXT j LET r$(i)=ri$ & ":" & STR$(t) !まとめる END IF NEXT i !MAT PRINT r$ !debug LET j=0 !削除する項の数 FOR i=1 TO k !係数が0の項を削除する IF j>0 THEN LET r$(i-j)=r$(i) IF GetVal(r$(i))=0 THEN LET j=j+1 NEXT i LET k=k-j LET r$(0)=STR$(k) !項の数 END SUB
!表示関連 SUB PolyDisplay(p$()) !多変数多項式を表示する IF VAL(p$(0))=0 THEN PRINT "0"; ELSE FOR i=1 TO VAL(p$(0)) !各項について LET t=GetVal(p$(i)) !係数の部 IF t<>0 THEN !0は非表示 IF i>1 THEN !最初の項を除く IF t>0 THEN PRINT "+"; ELSE PRINT "-"; !符号 END IF LET t=ABS(t) IF t<>1 THEN PRINT STR$(t); !1は非表示 FOR j=1 TO N !変数の次数の部 IF p$(i)(j:j)<>"0" THEN !0乗は非表示 PRINT CHR$(j-1+ORD("a")); !変数 abcd … xyz IF p$(i)(j:j)<>"1" THEN PRINT "^";p$(i)(j:j); !1乗は非表示 END IF NEXT j IF VAL(GetDegree$(p$(i)))=0 AND t=1 THEN PRINT "1"; END IF NEXT i END IF END SUB
|
└つづき 山中和義 2008/03/23 21:14:43
└つづき 山中和義 2008/03/23 21:17:07
インデックスへ
EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。