0

私の質問は、Pythonでの反復多項式乗算への最良のアプローチは何ですか?

興味深いプロジェクトは、Pythonで関数を記述して、特定の次数のチェビシェフ多項式の各項の係数と指数を生成することだと思いました。このような多項式(T n(x)で表される)を生成する再帰関数は次のとおりです。

With:

T 0(x)= 1

and

T 1(x)= x:

T n(x)= 2xT n-1(x)-T n-2(x)

私がこれまでに持っているものはあまり役に立ちませんが、これを実現する方法について頭を悩ませるのに苦労しています。私がしたいことは次のとおりです。

>> chebyshev(4)
[[8,4], [8,2], [1,0]]

このリストは、4次のチェビシェフ多項式を表します。T4 x)= 8x 4-8x 2 + 1

import sys
def chebyshev(n, a=[1,0], b=[1,1]):
    z = [2,1]
    result = []
    if n == 0:
        return a
    if n == 1:
        return b
    print >> sys.stderr, ([z[0]*b[0], 
                           z[1]+b[1]],
                          a) # This displays the proper result for n = 2
    return result

私がウェブ上で見つけた1つの解決策はうまくいかなかったので、誰かが光を当てることができることを望んでいます。

psチェビシェフ多項式の詳細:CSU Fullteronウィキペディア-チェビシェフ多項式。それらは非常にクールで便利であり、いくつかの非常に興味深い三角関数/プロパティを結び付けています。読む価値があります。

4

3 に答える 3

2

SciPyにはChebyshevの実装があります

http://www.scipy.org/doc/api_docs/SciPy.special.orthogonal.html

彼らのコードを見ることをお勧めします。

于 2011-05-04T18:47:01.737 に答える
0

Chebyshevの最適な実装は次のとおりです。

// Computes T_n(x), with -1 <= x <= 1
real T( int n, real x )
{
  return cos( n*acos(x) ) ;
}

明示的な多項式評価や漸化式の反復計算など、他の実装に対してこれをテストする場合、これは実際には同じくらい高速です。 自分で試してみてください。

一般的:

  • 明示的な多項式評価は最悪です(nが大きい場合)
  • 再帰的評価は少し良いです
  • サイン評価は最高です
于 2012-05-17T23:20:27.013 に答える
0

オルソピー(私のプロジェクト)は、チェビシェフ多項式の計算もサポートしています。と

import orthopy

# from sympy.abc import x
x = 0.5

normalization = "normal"   # or "classical", "monic"
evaluator = orthopy.c1.chebyshev1.Eval(x, normalization)
for _ in range(10):
    print(next(evaluator))
0.5641895835477564
0.39894228040143276
-0.39894228040143265
...

で次数が増加する多項式の値を取得しx = 0.5ます。複数の値のリスト/ベクトル、またはsympyシンボリックを使用できます。

もちろん、計算は漸化式で行われます。係数に興味がある場合は、チェックアウトしてください

rc = orthopy.c1.chebyshev1.RecurrenceCoefficients("monic", symbolic=True)
于 2021-05-12T19:59:16.093 に答える