アプリ版:「スタンプのみでお礼する」機能のリリースについて

xとyを変数にもつチェビシェフ多項式

z=\sum a_{n1,n2} T_n1(x) T_n2{y}
T_n1(x)はn1次のチェビシェフ多項式

があったとして,変数をひっくり返してxをyとzの関数で表したいのですがそれにはどうしたらよいのでしょうか?

A 回答 (2件)

 近似式を簡単に作るという訳にはいかないんで、「z, yを具体的数値として与えたらxを計算するプログラム」を構成するわけですが、あんまり旨い手は知りません。


 zとyを与えてxを計算するということは、多項式 f(x)について f(x)=0の解を全部出そうということですね。ひとつのやりかたは、商差法(quotient-difference method)で全部の解の近似解を作り、それぞれをニュートン法(もしくはそのバリエーション)で改良する。また、zやyをほんのちょっとづつ変えながらxを計算していく、という話であれば、直前の結果(x)を利用して解の近似値を推定して、それを出発値にしてニュートン法系の方法を使うこともできるでしょう。
 なお、ニュートン法は出発値の精度が悪いと発散してしまう。どのぐらい精度があればいいかを予め予想する簡単な判定条件はなく、毎回やってみて近似解が収束していくかどうかをチェックする必要があります。
 また、チェビシェフの直交多項式に展開してある理由が、もしかして「-1≦x≦1の区間だけに興味がある」という意味だというのであれば、
θ=Arccos(x)
とおいて
Tn(x) = cos(nθ)
を使うと
f(cos(θ))はフーリエ級数になりますから、FFT等を使って0≦θ<2πの範囲の波形をまるごと計算してしまうというのも、解を探すための出発値を見つける手段になります。
    • good
    • 0

 まずは1変数で


z= Σ A[n] T[n](x)
を考えてみましょ。あらゆる「xの多項式」は右辺の形に書ける(なぜならTは直交多項式)ので、
z-Σ B[n] (x^n) = 0
と言ってるのと同じです。で、xをzの関数で表したもの(zの逆関数)ってのは、この方程式の解に他なりません。
 さて、5次以上の方程式の「解の公式」はない、ということが証明されています(ガロア群を使った証明が有名)から、あからさまな(代数的な)式という形でxをzの関数として表すことは、一般には出来ない。言い換えれば、zを与える度に数値計算でxを出すアルゴリズム、という形にするしかないってことです。
 で、具体的なアルゴリズムの話をなさりたいのかどうか。
    • good
    • 0
この回答へのお礼

どうもありがとうございます.
そういうアルゴリズム(逆関数を近似する関数をつくる)みたいな方法があれば教えていただきたいです.
文献などでも結構ですのでよろしくお願いいたします.

お礼日時:2009/07/19 23:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!