問題タブ [least-squares]
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.
curve-fitting - 非線形フィッティング
いくつかの実験データがあり、最小二乗法 (Levenberg-Marquardt) を使用してパラメーターを取得するためにそれらを適合させたいと考えています。
私は 2 つの非線形方程式を使用しており、いくつかの計算プログラム (Origin と Matlab) を使用しています。
1 つ目は次のとおりです。
パラメータを持つ非線形方程式 (Alfa1、Alfa2、Alfa3、Alfa4、Alfa5)
2 番目のフィッティング方程式は次のとおりです。
有理関数、つまり分子が 2 次関数、分母が 4 次多項式関数
この 2 つの方程式を使用して適合させたいのですが、その方法がわかりません。実験データが必要な場合は、ここに投稿できます。
どうもありがとうございました、
エドゥアルド
matlab - 一次方程式の解が間違っている、またはA *(A \ B)がBと等しくないのはなぜですか?
A*(A\D)
以下の結果が等しくない可能性はどのようにありD
ますか?
それは降伏するはずD
です-これはOctaveドキュメントの抜粋です:
線形方程式のシステムは、数値解析に遍在しています。線形方程式のセットAx=bを解くには、左除算演算子'\'を使用します。x=A \ b
以下はそれを試してみたい人のためのコードです:
Matlabでもまったく同じ結果が得られると誰かが言っています。
2012年10月10日編集:答えを読んだ後、私が重大な間違いを犯した場所を指摘させてください。「Aはランク3であるため、システムAx = Dには独自の解決策があります」という主張は絶対に間違っています!ちなみに、上記のドキュメントは非常に戸惑います。
matlab - 非線形関数パラメーター推定 - matlab、lsqnonlin、fzero
フィッティングの問題で困っています。私が得たエラーから、境界が正しく定義されておらず、解決策を見つけることができなかったと思います。どんな助けでも大歓迎です。
同じ問題を解決するための別の方法も受け入れられます。
説明
次のタイプの非線形関数のパラメーターを推定する必要があります。
パラメータPAR = [A,B,C,D]
が範囲内にあることを前提としています
コード
問題を解決するために、Matlab 関数lsqnonlin
とを使用していますfzero
。使用された単純化されたコードを以下に報告します。
問題は次の 4 つの関数に分けられます。
parameterEstimation
- (lsqnonlin 関数のラッパー)objectiveFunction_lsq
- (パラメータ推定の目的関数)yFun
- (変数 y の値を返す関数)objectiveFunction_zero
- (y の計算に使用される非線形方程式の目的関数)
エラー
データに対してコードを実行すると、この警告が表示されます
警告: 下限の長さが > length(x) です。余分な境界を無視する
そしてこのエラー
ユーザーが指定した最初の目的関数の評価に失敗しました。LSQNONLIN は続行できません
これにより、境界が正しく使用されていないか、正しく呼び出されていないと思いますが、問題は別の場所にある可能性があります。
python - Pythonでエラーのある2Dデータセットに2D関数を適合させる
私は実験データとして 2D np.array を持っているので、カムのピクセルに対応する (50,50) のような形状のものです。各ポイントのエラーに対して同じ形状の 2 番目の np.array があります。したがって、私のエラーは sqrt(n) だけではありません。これらの誤差を適合に使用したいので、 sum( (experimental - function)^2 / (error of the pixel)^2 ) を使用します。
これまでは、2D を処理するために、最小平方の入力としてエラー関数を平坦化していました。これは完全に機能します。したがって、エラーを考慮してパラメーターを適合させます。しかし、問題が 1 つあります。fitparameters の誤差を計算するためにも使用するように、leastsq に指示するにはどうすればよいですか? 私はcurve_fitを見ましたが、私の場合には絶対に設計されていないようです。入力として x を与えることができる関数が必要なようです。しかし、私の畳み込みでは、x 値を y 値に単純に変換することはできません。
それで、leastsq、curve_fit、または他の関数でこれを行う方法はありますか?
以下は、fitparameters のエラーを処理しないスクリプトです。
c++ - 円またはスプラインを 3D ポイントの束に合わせる
大まかに、しかし明らかに円のセグメントを形成する 3D ポイントがいくつかあります。ここで、すべての点に最もよく合う円を決定する必要があります。ある種の最小二乗法が最適である必要があると思いますが、開始方法がわかりません。ポイントは、円上に配置される方法でソートされます。また、各点での推定曲率もあります。円の半径と平面が必要です。c/c++ で作業するか、extern スクリプトを使用する必要があります。
matlab - matlab: lsqcurvefit、上限は 1 つだけ
簡単な質問.. lsqcurvefit の上限を 1 つだけ設定して、他の上限を制限することはできますか?
次のようなものが必要です:
ありがとう!
python - ScipyLeastSqエラーバー
SciPyのLeastSqを使用して、実験的なスペクトルを理論的な期待値に適合させています。もちろん、実験値に関連するエラーがあります。これらをLeastSqにフィードするにはどうすればよいですか、それとも別のルーチンが必要ですか?ドキュメントには何も見つかりません。
eigen - Eigenライブラリ-最小二乗
Eigenライブラリを使用して最小二乗問題を使用したいと思います。私のオプションは2です。
- sysAAA.jacobiSvd(Eigen :: ComputeThinU | Eigen :: ComputeThinV).solve(sysBBB)
- sysAAA.colPivHouseholderQr()。solve(sysBBB);
最初は最初のものを使用していましたが、非常に遅いことがわかりました(1)(2)。
それで私は2番目の解決策に行きました(他の方法は特別な行列を必要とするので私の場合には適切ではありません(2))
colPivHouseholderQr()。solveは最小二乗解を与えますか?
(3)ではないという印象がありますが、「回避策」を探す前に確認したいと思います。
scipy - 一連の測定にPython/Scipyを使用して連立方程式を解く
私は、A、B、Cの3つの値を与える物理的な測定器(ロードセルを備えた力プラットフォーム)を持っています。ただし、これらの値(直交している必要があります)は、力とトルクの適用値と戻り値の間にクロストークを引き起こす測定装置。
次に、次のように、キャリブレーションマトリックスを使用して、測定値を実際の値のより適切な推定値に変換することをお勧めします。
問題は、一連の測定を実行する必要があることです。これにより、システム全体に最適なC行列を取得するために、異なる値measured(Fz, Mx, My)
と最小二乗法が得られます。actual(Fz, Mx, My)
Ax = B
1つの測定で問題を解決することscipy.linalg.lststq
も、scipy.linalg.solve
(正確な解決策を提供することで)解決することもできますが、それぞれが潜在的に異なる3x3行列を与える独自の方程式を持つ、一連の異なる測定を検討するにはどうすればよいですか?
読んでくれてありがとう、どんな助けでも大歓迎です。