チェビシェフ多項式の100回目をC言語で作りたいのですが
どこから初めていいのかわかりません。
教えて下さるとうれしいです。
T1(X)=1
T2(x)=X
T3(X)=2x^2-1
T4(x)=4x^3-3x
というのがチェビシェフ多項式です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
多項式の係数を並べた配列 c[N] を用意します。X^i の係数が c[i] なわけね。
そーすっと、
- 多項式に「x を掛ける」は配列c[N]の値をひとつズラす
- 多項式に「2 を掛ける」は配列c[N]の値を全部2倍する
- 多項式から「多項式d[N]を引く」は配列c[i]からd[i]を引く(i=0..N-1)
ことになります。
これだけ用意すれば T(n+1) = 2xT(n) - T(n-1) が計算できます。
投稿2020/07/13 23:50
総合スコア16612
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/14 00:37 編集
2020/07/14 01:01 編集
0
ベストアンサー
数式を取り扱うには、数式処理用のライブラリが必要になります。まずはその辺りから調査したらいかがでしょうか。私が一つ見つけたのはLeptonでした。
https://mattn.kaoriya.net/software/lang/c/20151014155115.htm
もしくはライブラリを使わなくとも、係数を配列で保存しておいて、漸化式でどんどん式を増やしていけばいいと思います。
何れにせよ、以下のような漸化式を処理すればいいでしょう。
T_{n+1}=2xT_{n}-T_{n-1}(n=1,2,...)
T0=1
T1=x
なお、言語にこだわらなければ、PythonのSympyで容易に多項式を求めることができます。
https://pianofisica.hatenablog.com/entry/2020/05/16/080000#Chebyshev%E5%A4%9A%E9%A0%85%E5%BC%8F%E3%83%81%E3%82%A7%E3%83%93%E3%82%B7%E3%82%A7%E3%83%95%E5%A4%9A%E9%A0%85%E5%BC%8F
上記サイトから引用したソースコード(チェビシェフ多項式T0からT6を出力する)
python
1import sympy as sp 2sp.init_printing() 3n=sp.symbols('n', integer=True) 4x=sp.var('x') 5C_list = [] 6for n in range(7): 7 c = sp.chebyshevt(n,x) 8 C_list.append(c) 9C_list
投稿2020/07/13 15:51
編集2020/07/13 15:58総合スコア698
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。