2014.10.12

前へ
次へ
ホームページトップへ戻る

MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!


[第51回]


●チェビシェフの多項式(逆展開式)を求める

前回はチェビシェフの近似式を「数値計算」(コロナ社)で説明されていた方法で求めてみました。
この方法は表を作成することで比較的容易に近似式を求めることができます。
ただし事前に準備が必要です。
テイラーの多項式のほかにチェビシェフの多項式が必要なのですが、「数値計算」の方法では、そのほかにさらに逆展開式なるものが必要です。
逆展開式はチェビシェフの多項式が、左辺がTnで右辺がxの式になっているのとは逆に、左辺がxで右辺がTnの式になっているものです。
前回はテイラーの5次の多項式から3次の近似式を求めました。
そのときに表を作成するのに使った逆展開式は
x=T …(1)
=(3T+T)/4 …(2)
=(10T+5T+T)/16 …(3)
の3つでした。
この各式は「数値計算」からそのまま引用しました。

ところで[第49回]ではEXCELを使ってテイラーの11次の多項式からチェビシェフの9次の近似式を求めてみました。
その方法ではEXCELを使いましてもちょいと面倒なやり方になってしまいます。
前回説明しました「数値計算」での方法ならEXCELを使えば割と楽に結果を求められそうです。
せっかくですから「数値計算」の方法でもEXCELを使ってテイラーの11次の多項式からチェビシェフの9次の近似式を求めてみることにしたいと思います。

ところが。
残念なことに「数値計算」には9次の逆展開式までしか載っていません。
テイラーの11次の多項式からチェビシェフの9次の近似式を求めるためには11次までの逆展開式が必要です。
仕方がありませんから、とりあえずは手計算で算出しました。
これはなかなかに面倒な作業です。

逆展開式の求め方です。
チェビシェフの多項式から求めます。
チェビシェフの多項式は[第45回]でBorland C++を使って求めました。
そのT11の式
T11=1024x11−2816x+2816x−1232x+220x−11x
を変形します。
11=(T11+2816x−2816x+1232x−220x+11x)/1024 …(4)
これでとりあえず左辺に x11が来て右辺にT11が来ました。
残りのx〜xの項は「数値計算」に載っている逆展開式を使ってTnに置き換えます。
x、x、xは今回の上のほうで引用しています。
参考までにx、xも「数値計算」から引用して下に示します。
=(T7+7T5+21T3+35T1)/64 …(5)
=(T9+9T7+36T5+84T3+126T1)/256 …(6)

(1)(2)(3)(5)(6)式を(4)式に代入することでx11の逆展開式が求まります。
11=(T11+11T9+55T7+165T5+330T3+462T1)/1024 …(7)

上のように求まることは求まるのですけれど、なんたってかなり大きな分数の計算を、通分しながら計算しなければなりませんからなかなかに大変な作業です。
さらに次数の大きな逆展開式を求めようとしますと、どんどん係数が大きくなって、項数も増えてきますから、手計算はさらに困難になってきます。

むむ。
近似式を求めることは表を作成することで割りと楽にできそうなのですが、とんでもない落とし穴がありました。
逆展開式を求めることが困難ではどうしようもありません。
そういうことになりますと、ここはやっぱり[第45回]でやりましたようにC++を使ってプログラムで逆展開式を求めることを考えてみるべきでありましょう。
ということで。
さっそく[第45回]でお見せしましたチェビシェフの多項式を求めるプログラムに追加する形で、逆展開式も求めるプログラムに書きあらためました。
前半で求めた結果をそのまま利用して、後半で逆展開式を求めます。
プログラムとそれを実行した結果については次回に説明いたします。
どのようなプログラムを書けばよいか、皆様もちょいと考えてみてくださいませ。

MYCPU80でCP/Mを![第51回]
2014.10.12upload

前へ
次へ
ホームページトップへ戻る