問題タブ [nonlinear-functions]

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.

0 投票する
7 に答える
10635 参照

minimization - ニュートン法を使用して非線形多変量関数の最小値を見つける方法(線形代数ではなくコード)

私はいくつかのパラメーター推定を行おうとしていますが、約30変数にわたって予測方程式の二乗誤差を最小化するパラメーター推定を選択したいと思います。方程式が線形の場合、30個の偏導関数を計算し、それらをすべてゼロに設定して、線形方程式ソルバーを使用します。しかし残念ながら、方程式は非線形であり、その導関数も非線形です。

方程式が単一の変数を超えている場合は、ニュートン法(ニュートンラプソンとも呼ばれます)を使用します。Webには、単一変数の関数に対してニュートン法を実装するための例とコードが豊富にあります。

約30個の変数があるとすると、ニュートン法を使用してこの問題の数値解をプログラムするにはどうすればよいですか?私は閉じた形の方程式を持っており、一次および二次導関数を計算できますが、そこからどのように進めるかはよくわかりません。私はウェブ上で多数の処理を見つけましたが、それらはすぐに重い行列表記になります。ウィキペディアで適度に役立つものを見つけましたが、それをコードに変換するのに問題があります。

分解が心配なのは、行列代数と行列反転です。一次方程式ソルバーを使用して行列を反転することはできますが、正しい行と列を取得したり、転置エラーを回避したりすることなどが心配です。

具体的には:

  • 変数をそれらの値にマッピングするテーブルを操作したいと思います。そのようなテーブルを引数として与えられた場合に二乗誤差を返すようなテーブルの関数を書くことができます。また、任意の変数に関する偏導関数を返す関数を作成することもできます。

  • 表の値について妥当な開始見積もりがあるので、収束について心配する必要はありません。

  • 推定値(各変数の値のテーブル)、関数、および偏微分関数のテーブルを使用して新しい推定値を生成するループを作成する方法がわかりません。

最後は私が助けて欲しいものです。直接の助けや良い情報源へのポインタは大歓迎です。


編集:私は閉じた形で一次および二次導関数を持っているので、それらを利用して、シンプレックス検索のようなよりゆっくりと収束する方法を避けたいと思います。

0 投票する
6 に答える
9007 参照

signal-processing - サインテーブル補間

最初にAM、後でFMなどを調整するSDRシステムをまとめたいと思います。これを行うために使用する予定のシステムには、ダイレクトデジタルシンセシス(DDS)のサインルックアップテーブルがあります。適切に調整するには、ミキサー(この場合は乗数)に供給される正弦波の周波数を正確に制御できる必要があります。線形補間は近いと思いますが、非線形法の方が良い結果が得られると思います。

サインテーブルに使用するための優れた高速補間方法は何ですか。ターゲットシステムでは、乗算と加算は安価です。分割にはコストがかかります。

編集:定数をスケーリングされた整数に正規化するために、乗算/シフト関数を使用して定数を実装することを計画しています。中間値はワイド加算を使用し、乗算は18ビットまたは17ビットを使用します。浮動小数点「事前計算」は使用できますが、ターゲットプラットフォームでは使用できません。「分割にはコストがかかる」とは、乗数と多くのコードを使用して実装する必要があることを意味します。それは考えられないことではありませんが、避けるべきです。ただし、真の浮動小数点IEEEメソッドは、カスタム実装だけでなく、このプラットフォームでもかなりの量のリソースを必要とします。

SDRの経験があれば役に立ちます。

0 投票する
3 に答える
383 参照

algorithm - ノンリニアカウンター

だから私はカウンターを持っています。何かの現在の量を計算することになっています。これを計算するために、開始日、開始量、およびカウンターを1秒ごとにインクリメントする量を知っています。簡単に簡単。トリッキーな部分は、成長が完全に直線的ではないということです。毎日、増分量は設定された量だけ増加します。これをアルゴリズムで再作成する必要があります。基本的に、開始値、時間の経過とともに増加する量、および時間の経過とともに増加する量に基づいて、現在の日付の正確な値を計算します。

私のターゲット言語はJavascriptですが、擬似コードも問題ありません。

ABのソリューションに基づく:

それはあなたたちにとって合理的に見えますか?

0 投票する
2 に答える
4352 参照

r - R の Eta/Eta-squared ルーチン

GLM ファミリーの技術を適用する前に使用される直線性のグラフィカルな推定 (gaze-at-scatterplot 法) とは別に、この推定を算術的に (つまり、グラフを使用せずに) 行う方法がいくつかあります。

ここでは、Fisher のイータ 2 乗- 相関比に焦点を当てます。算術的には、 2 つの変数間の関係が線形である場合、ピアソンのr (決定係数: r 2 ) の 2乗に等しくなります。したがって、 etarの値を比較して、関係のタイプ (線形かどうか) を評価できます。これは、独立変数によって (線形または非) 説明された従属変数の分散のパーセントに関する情報を提供します。したがって、線形性の仮定が満たされない場合に適用できます。

簡単に言えば、R に eta/eta-squared のルーチンはありますか?

0 投票する
2 に答える
1162 参照

r - 非グラフィカルな線形性の推定

以前の投稿では、Rで相関比(ηまたはη2 )ルーチンを探していました。GLM手順の線形性チェックにηを使用する人がいないことに驚いています。

二変量相関の線形性を確認するにはどうすればよいですか?散布図だけで?

これを行うにはいくつかの方法があります。1つの方法は、線形モデルと非線形モデルR 2を比較し、F検定を適用してそれらの間の有意差を探すことです。

「非グラフ」の方法である線形性を確認するにはどうすればよいですか?

0 投票する
1 に答える
1416 参照

opengl - OpenGLで非線形シェーディングをどのように行いますか?

3D有限要素モデリングアプリケーションの出力を視覚化するために、OpenGLで視覚化ツールを開発しています。アプリケーションは四面体メッシュを使用します(ただし、三角形である外部ファセットのみを表示しています)。出力はスカラー変数であり、カラーマップにマップしたいと思います(これを行う方法はすでに知っています)。トリッキーな部分は、各セルの変数の値が、そのセルの座標の多項式関数(3次だと思いますが、まだ確定されていません)によって与えられることです。

OpenGLで、「スムーズ」シェーディングモデルを使用する場合、ポリゴンを作成して各頂点に異なる値を指定すると、頂点の値の間を自動的に(線形に)補間して、の色の値を取得します。内部のポイント。しかし、それは各セルに線形関数を与えるだけであり、私が指定する非線形関数にしたいのです。これを行う方法はありますか?

(もちろん、1つの解決策は、各セルを、それぞれの色があまり変化しないほど小さいOpenGLポリゴンの複合体として描画することにより、「手動で」補間することです。しかし、OpenGL自体かどうかを知りたいです。解決策があります。)

0 投票する
2 に答える
10231 参照

python - この方程式を固定小数点反復で解きます

この方程式を解くにはどうすればよいですか

x 3 + x - 1 = 0

固定小数点反復を使用していますか?

オンラインで見つけることができる固定小数点反復コード (特に Python) はありますか?

0 投票する
4 に答える
4405 参照

optimization - Levenberg-Marquardtアルゴリズムの制限

Levenberg-Marquardtアルゴリズムを使用して、6つのパラメーターの非線形関数を最小化します。最小化ごとに約50のデータポイントがありますが、十分に正確な結果が得られません。私のパラメータが数桁異なるという事実は、非常に重要である可能性がありますか?はいの場合、どこで解決策を探す必要がありますか?いいえの場合、あなたの仕事で遭遇したLMAのどのような制限がありますか(私のアプリケーションで他の問題を見つけるのに役立つかもしれません)?助けてくれて本当にありがとうございます。

編集:私が解決しようとしている問題は、最良の変換を決定することですT:

3Dポイントのセットを3Dラインの束に合わせます。詳細には、3Dポイントの座標と、対応する3Dラインの方程式のセットがあり、これらのポイントを通過する必要があります(理想的な状況では)。LMAは、変換された3Dポイントから対応する3Dラインまでの距離の合計を最小化します。変換関数は次のとおりです。

この説明が少し役立つことを願っています...

Edit2:

いくつかの例示的なデータを以下に貼り付けます。3D線は、中心点と方向ベクトルによって記述されます。すべての線の中心点は(0,0,0)であり、各ベクトルの「uz」座標は1に等しくなります。方向ベクトルの「ux」座標のセット:

方向ベクトルの「uy」座標のセット:

および(xyzxyzxyz ...)形式の3Dポイントのセット:

これは、回転が非常に小さい「簡単な」モデル化されたデータの一種です。

0 投票する
1 に答える
951 参照

java - 非線形プログラミングの例 c、java?

非線形プログラミングの良い例を知っていますか?, 私はグーグルで検索しましたが, テキストは定式化するだけで問題を解決しません. 彼らは専門用語に言及し、それを解決することさえ優れています.

例を投稿して、if について少し説明していただけますか?

前もって感謝します

Pd C、Java を使用して、いくつかの結果と数値を表示するというアイデアを知っています。ありがとう

0 投票する
1 に答える
1295 参照

math - 無次元化 Mathematica

無次元化する必要がある変数HWP、 & (以下)の一連の結合方程式があります。T手動で行うのは難しいことが証明されているため、Mathematica でこれを達成する方法はありますか。

パラメータの単位: a = /H/単位時間; b = /H/単位時間; B = /H/単位時間; シータ = T/H/単位時間; ap = /P/単位時間; bp = /P/単位時間; アップ = /P/単位時間; v = /P/単位時間; L = W/P/単位時間; R = /T/単位時間; bt = /T/単位時間; ファイ = /T/単位時間; g = /W/単位時間; k = 定数。