問題タブ [polynomials]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - for ループを使用してリストから関数の値を計算する
リストのすべての要素を取得してポリフィット多項式に入れ、計算する簡単なプログラムを作成する必要があります。
これが私のコードです
私の問題は、これが多項式の係数を書き換えるだけで、リストからの残りの要素が0であることです。適切に解決する方法の手がかりが必要です。
c++ - 閉形式多項式の根を求めるアルゴリズム
閉形式解を使用して多項式の根 (理想的には 4 次デブリーまでですが、何でも構いません) を見つけることができる堅牢なアルゴリズム (またはアルゴリズムを説明する論文) を探しています。私は本当のルーツだけに興味があります。
二次方程式を解く最初の試みには、次のことが含まれていました (3 次方程式や 4 次方程式にも同様のスタイルのコードがありますが、ここでは 2 次方程式に焦点を当てましょう):
コードはひどいもので、すべてのしきい値が嫌いです。しかし、根が[-100, 100]
区間内にあるランダム方程式の場合、これはそれほど悪くありません。
この精度は、通常は 10^6 の範囲にある係数の大きさに相対的であることに注意してください (したがって、最終的に精度は完全にはほど遠いですが、おそらくほとんど使用可能です)。ただし、しきい値がないと、ほとんど役に立たなくなります。
多精度演算を使用してみましたが、これは一般的にうまく機能しますが、多項式の係数が多精度ではなく、一部の多項式を正確に表すことができないという理由だけで、根の多くを拒否する傾向があります (2 次に二重根がある場合)。多項式、それはほとんどそれを2つのルートに分割するか(私は気にしません)、ルートがまったくないと言います)。少しでも不正確なルートを復元したい場合、コードは複雑になり、しきい値でいっぱいになります。
今までCCmathを使ってみたのですが、うまく使えないか、精度がすごく悪いです。また、 では反復 (閉形式ではない) ソルバーを使用しplrt()
ます。
GNU科学ライブラリを使用してみgsl_poly_solve_quadratic()
ましたが、それは単純なアプローチのようで、数値的に安定していません.
単純に数値を使用std::complex
することも、精度と速度の両方が悪い可能性があるため、非常に悪い考えであることが判明しました (特に、コードが超越関数で重い 3 次/4 次方程式の場合)。
根を複素数として復元することが唯一の方法ですか? この場合、根が失われることはなく、ユーザーは根がどの程度正確である必要があるかを選択できます (したがって、精度の低い根の小さな虚数成分は無視されます)。
r - R (a) 定点によるデータへの多項式の当てはめ
植物の (正規化された) 葉の形を表す関数を見つけなければならないという非常に具体的な問題に行き詰まっています。問題は、データを最もよく表す多項式を見つけることだけではなく、(0,0) で始まり (1,0) で終わり、最大幅のポイント (x_ymax, 1) を通過することです。 .
私が試した別のオプションはエルミート補間で、これらの 3 つの特定のポイントをコントロール ポイントとして使用しますが、それが提供する機能は、さらにコントロール ポイントを指定しない限り、葉の実際の形状からかけ離れています。
これには特定の機能がありますか、それとも手動で変換する必要がありますか? または、この問題に取り組むためのより良い、または代替のオプションはありますか?
前もって感謝します!
python - Pythonで任意次数の多項式を作成する
タイプ a x +b x^2+c*x^3+... の多項式関数を使用して、scipy.optimize.curve_fit を使用して一部のデータに適合させたいと考えています。
私はそれをうまくやることができましたが、私の問題は、ユーザーがフィットの多項式の次数を入力できるようにしたいということです。Python で係数を指定せずに次数 n の多項式を生成する簡単な方法を見つけることができませんでした。誰でも私を助けることができますか?
ありがとう!
performance - 計算速度のための多項式のセットの最適化
コンピューター代数システム (CAS) によって生成された一連の多項式があります。たとえば、これはこのセットの 1 つの要素です。
-d*d*l*l*qb*b*l*l*q+2*d*f*j*l*q+2*b*f*h*l*qf*f*j*j*qb *b*j*j*q+2*b*d*h*j*qf*f*h*h*qd*d*h*h*q+b*b*j*j*o*o-2 *b*d*h*j*o*o+d*d*h*h*o*o-2*b*b*j*l*n*o+2*b*d*h*l*n *o+2*b*f*h*j*n*o-2*d*f*h*h*n*o+2*b*d*j*l*m*o-2*d*d *h*l*m*o-2*b*f*j*j*m*o+2*d*f*h*j*m*o+b*b*l*l*n*n-2 *b*f*h*l*n*n+f*f*h*h*n*n-2*b*d*l*l*m*n+2*b*f*j*l*m *n+2*d*f*h*l*m*n-2*f*f*h*j*m*n+d*d*l*l*m*m-2*d*f*j *l*m*m+f*f*j*j*m*m
それらすべてを C プログラムでできるだけ早く実行する必要があります。これらの式のいずれかを注意深く見ると、計算速度を最適化できることは明らかです。たとえば、上に貼り付けた多項式では、-d*d*l*l*q、2*d*f*j*l*q、および -f*f*j*j*q という項がすぐにわかります。その合計を -q*square(d*lf*j) で置き換えることができるようにします。ここでできることはたくさんあると思います。私は、コンパイラがこの最適化、またはおそらくより高度な最適化を見つけることができるとは信じていません (しかし、おそらく私は間違っています)。これを maxima (CAS) に依頼しようとしましたが、何も出てきませんでした (私は maxima の初心者なので、魔法のコマンドを見逃している可能性があります)。ですから、私の最初の質問は次のとおりです。計算速度のために多項式を最適化するために使用できるツール/アルゴリズムは何ですか?
ほとんどの変数を共有する一連の多項式を最適化する場合、事態はさらに複雑になります。実際、式ごとに最適化することは、最適化前にコンパイラーによって共通部分が識別される可能性がありますが、これが全体として実行されない場合、最適化後に識別されないため、最適ではない可能性があります。2 つ目の質問は、一連の多項式式を計算速度のために最適化するために使用できるツール/アルゴリズムは何ですか?
よろしくお願いします、
PS : この投稿は、「多項式のセットの演算数を最小限に抑えるためのコンピューター代数ソフト」といくつかの類似点を共有していますが、その 1 つの答えは、目標を達成するためにそれらを使用する方法を述べるのではなく、CAS プログラムを指しています。
r - Rのlmeモデル(多項式を使用)からの予測値のプロット
lme()
1 つの固定効果と 1 つのランダム切片項 (異なるグループを説明するため) を持つ線形混合効果モデル (R の nlme パッケージの関数で実行) を使用しています。モデルは次のように指定された 3 次多項式モデルです (以下のアドバイスに従います)。
いくつかの例のデータのみ:
関数を使用して適合値をプロットしたいと思いpredict
ます (iv の値はデータセット内で連続していないため、適合曲線の外観/滑らかさを改善したいと考えています)。
単純な lme モデル (多項式なし) から予測値をプロットする方法に関するオンラインの例を使用して (ここを参照してください: lme fitおよびhttp://glmm.wikidot.com/faqから予測バンドを抽出します)、予測された「母集団」をプロットできます。 ' は、次のコードを使用して多項式を使用しない lme を意味します。
このコードを次のように拡張したいと思います。1) グループ内予測線と平均母集団値をプロットし、2) lme の予測「母集団」曲線と「グループ内」曲線をプロットするためにコードを適応させる方法を決定します。多項式 (つまり、上記のモデル M1)。
グループ予測の取得: 以下のコードを使用して、グループの予測値のセットを 1 つ取得できますが、各グループの線と母集団の平均をプロットしたいと思います。サンプル データの場合、方法がわかりません。 2 つのグループ ラインの予測値を抽出できますか?
また、元の iv 値の数よりも多くの値を予測する場合 (たとえば、不規則なデータがある場合)、これは機能しません。行数が異なるため、以下は明らかに機能しませんが、構文に苦労しています。
多項式モデルの場合: poly(iv,3) を new.dat データ フレームに組み込んで予測関数にフィードする方法がわかりません。
これらの2つの目標を達成する方法についてのアドバイスは、私がしばらく喜びを感じずにこれを理解しようとしてきたため、非常に高く評価されます(可能であれば、ggplotよりも基本グラフィックを使用したいと思います)。ありがとう!
plot - IPython、多項式のプロット
私は補間のために Sympy を使用してきました。その結果、プロットしたい 7 次多項式 (ax^7 + bx^6 + cx^5 + ...+ h) が得られますが、私はたとえば、次のようにすると、エラーが発生します。
どこr = np.linspace(0,20,num=100)
とU = Polynomial(x)
; 結果はエラーメッセージです: `r = np.arange(20)' を試してみるとValueError: sequence too large; must be smaller than 32
得られます。MemoryError:
それをプロットできる唯一の方法は、for サイクルを使用して、1 つずつ置換し、別の変数にリストとして保存することです。私の質問は、最初の入力の何が問題なのですか? 多項式をプロットする簡単な方法はありますか?