Go to the first, previous, next, last section, table of contents.


プログラミング 練習問題10 解答「多項式の展開」

x^n 形式の項の微分は n x^(n-1) であり、定数の微分はゼロです。 このことから、 多項式の x = 0 における n 階微分は、 x^n の項の係数と n! の積に等しいことが判ります。

(この定義は長いので、最後にまとめたものを付けておきます。 学習者はそれを M-# m で読込むことができます。 マクロ中で本体を Z ` Z ' で囲んで入力している限り、 Calc はそのキーストロークを実行せず単に学習するだけなのですが、 ここでは説明のため Calc があたかも実行したかのように図示します。)

2:  5 x^4 + (x + 1)^2          3:  5 x^4 + (x + 1)^2
1:  6                          2:  0
    .                          1:  6
                                   .

  ' 5 x^4 + (x+1)^2 RET 6        C-x ( Z `  [ ] t 1  0 TAB

変数 1 は係数のリスト(ベクトル)を書き溜めます。

2:  0              3:  0                  2:  5 x^4 + ...
1:  5 x^4 + ...    2:  5 x^4 + ...        1:  1
    .              1:  1                      .
                       .

   Z ( TAB         RET 0 s l x RET            M-TAB ! /  s | 1
                                           (ESC TAB)

s | 1 はスタック先頭の値を変数 1 のベクトルに(右から)結合します。 (s + 1 によく似ていますね。) 代りに r 1 TAB | t 1 と書く事もできます。

1:  20 x^3 + 2 x + 2      1:  0         1:  [1, 2, 1, 0, 5, 0, 0]
    .                         .             .

    a d x RET                 1 Z )         DEL r 1  Z ' C-x )

逆変換する簡単な方法は、 係数リストを x のべき乗リストにマッピングするだけです。

2:  [1, 2, 1, 0, 5, 0, 0]    2:  [1, 2, 1, 0, 5, 0, 0]
1:  6                        1:  [0, 1, 2, 3, 4, 5, 6]
    .                            .

    6 RET                        1 + 0 RET 1 C-u v x

2:  [1, 2, 1, 0, 5, 0, 0]    2:  1 + 2 x + x^2 + 5 x^4
1:  [1, x, x^2, x^3, ... ]       .
    .

    ' x RET TAB V M ^            *

多項式と係数ベクトルを変換/逆変換するプログラム全体をここにまとめます。

C-x ( Z `  [ ] t 1  0 TAB
           Z (  TAB RET 0 s l x RET M-TAB ! /  s | 1
                a d x RET
         1 Z ) r 1
      Z '
C-x )

C-x (  1 + 0 RET 1 C-u v x ' x RET TAB V M ^ *  C-x )


Go to the first, previous, next, last section, table of contents.     利用度数