問題タブ [equation-solving]
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 - (整数以上の)大きな整数係数を持つ二次方程式を正確に解く方法は?
Google Code Jam でブルズアイに関する問題を読みました。(コンテストはもう終わったので、話しても大丈夫です)
マリアは t ミリリットルの黒い絵の具から始めます。これを使って、厚さ 1 cm (1 センチメートル) の輪を描きます。厚さ 1cm のリングは、半径が 1cm 異なる 2 つの同心円の間のスペースです。
Maria は、半径 r cm の白い円の周りに最初の黒いリングを描きます。
半径1cmの円盤の面積はπcm2です。面積 π cm2 を覆うには 1 ミリリットルの塗料が必要です。マリアが描ける黒い輪の最大数は?
紙の上での私の計算では、円周率の倍数として、内側半径 r の n 個のリングでブルズアイを描くためのペイントの領域は次のとおりです。2*n**2 + n*(2*r-1)
t*pi
したがって、1 ミリリットルの塗料が与えられた場合、問題は となるような最大の n を見つけることf(n,r) <= t
です。
今朝、バイナリ検索で解決しましたhttps://github.com/hickford/codejam/blob/master/2013/1A/bullseye/bullseye.py
私は浮動小数点の不正確さに非常に警戒しているので、二次方程式ではなく二分探索を選択しました — この問題では、t と r は 10**18 の大きさの整数です)。以前の Code Jam で算数の不正確さに悩まされました。
しかし、私は興味があります。二次方程式を補強して、大きな整数係数を持つ方程式の正しい答えを与えることができますか? Sympy や Numpy のような数学ライブラリは私に何か提供してくれますか?
二次方程式が大きな入力に対して間違った答えを与えることのデモ。たとえば、r=308436464205151562
とt=1850618785230909388
. 解く二次方程式は
すなわち。係数は
Python でのコンピューティング
これは間違った答えです!正解(二分探索で見つけたもの)は 3
python - 二次式を解く
二次式を使用して二次方程式を解くプログラムを作成していますが、a = 1 の場合にのみ機能しますが、a が 1 より大きい場合に機能させたい
これが私のコードです:
1で動作しますが、4を使用するときに複数の数値を使用すると、このエラーが発生します
もしそうなら、これを回避する方法はありますか?
matlab - 劣決定線形連立方程式の正の解を求める
私はmatlabに少し慣れていないので、これが恐ろしく単純な場合は申し訳ありません。
次の問題を考えてみましょう。
x_1, x_2, x_3 > 0
そのようなものを見つける
この場合、私は解決策が欲しい
Matlab でこのような問題を解決する簡単な方法はありますか?
matlab - 非線形方程式の記号系 matlab
次の連立方程式を記号的に解こうとしています。
関数 solve(Sys,[x,y,z,w,q,r,t]) を使用して得た: 警告: 明示的な解が見つかりませんでした。
169で解決中
しかし、Mathematica で同じ連立方程式を解こうとすると、2 つの解が見つかります。私は何か間違ったことをしていますか?
ありがとう!
matlab - マトラブ。y(4) にアクセスしようとしました。numel(y)=3 のため、範囲外のインデックス
matlab ode45 に問題があります。システム y(1) と y(2) を記述すると、それは機能しますが、さらに使用すると、y(4) にアクセスしようとしたと表示されます。numel(y)=3 であるため、インデックスが範囲外です これが私のプログラムのコードです。確認してください `
`
performance - Haskell ではより効率的なアルゴリズムのプリフォームが悪化する
私の友人が、彼が参加している C++ コースで自宅でのエクササイズを教えてくれました。私はすでにC++を知っていますが、Haskellを学び始めたばかりなので、「Haskell流」で演習を解こうとしました。
これらは運動の指示です(母国語から翻訳したので、指示が明確でない場合はコメントしてください):
ユーザーからゼロ以外の係数 (A、B、C、D) を読み取り、それらを次の式に配置するプログラムを作成します。 A*x + B*y + C*z = D プログラムは、ユーザーからも読み取る必要があります。範囲を表す N。プログラムは、-N/2 から N/2 の範囲で方程式のすべての可能な積分解を見つける必要があります。
例えば:
最も単純なアルゴリズムは、力ずくですべての可能性を試すことです。次の方法で Haskell に実装しました。
ここまでは順調ですが、演習の指示では、より効率的なアルゴリズムを実装できると書かれているので、どうすれば改善できるかを考えました。方程式は線形であるため、Z が常に最初にインクリメントされるという仮定に基づいているため、解が見つかったら、Z をインクリメントする意味はありません。代わりに、Y をインクリメントし、Z を範囲の最小値に設定し、立ち止まるな。このようにして、冗長な実行を保存できます。Haskell にはループがないので (少なくとも私の理解では)、そのようなアルゴリズムは再帰を使用して実装する必要があることに気付きました。次の方法でアルゴリズムを実装しました。
どちらも同じ結果になります。ただし、実行時間を測定しようとすると、次の結果が得られました。
つまり、愚かなアルゴリズムは実際には、より洗練されたアルゴリズムよりも優れたパフォーマンスを発揮します。私のアルゴリズムが正しかったという仮定に基づいて (これが間違っているとは思いません :))、2 番目のアルゴリズムは再帰によって作成されたオーバーヘッドに苦しんでいると仮定します。リストの理解。Haskell でダムアルゴリズムよりも優れたアルゴリズムを実装する方法はありますか? (また、私のコーディング スタイルに関する一般的なフィードバックをいただければ幸いです)
optimization - Matlabで複数の変数を使用して最適化を解決する最良の方法は?
多くの方程式と変数 (100 以上) のシステムの解を数値的に計算しようとしています。私はこれまでに3つのことを試しました:
- p(i) のベクトル (ほとんどの内生変数を含む) が減少していることがわかります。したがって、私は単純にいくつかの開始点を示し、その後、特定の p が低すぎる (高すぎる) ことがわかったときに推測を増加 (減少) させていました。もちろん、これは常に他方が修正されていることを条件としていましたが、そうではありませんでした。これは最終的には機能するはずですが、有限の時間で解決策に到達することは効率的でも明白でもありません。ただし、システムを4〜6変数に減らすと機能しました。
- 互いに 100 以上のループを作成し、ループごとに二分法を使用できます。これは最終的に私を解決策に導きますが、プログラムには両方とも時間がかかります(実際にループを作成せずにお互いに n 個のループを作成する方法がわからないため、ループを増減したいのでこれも悪いです簡単に変数の量)と実行する。
- 私は fminsearch を試していましたが、その変数の無駄な量のために予想通り - まさか!
アイデアをいただければ幸いです...コードは次のとおりです(これは私が試したfminsearchです):
これは実行ファイルです:
そして、これはプログラムファイルです:
algorithm - MATLAB - 方程式系の lsqnonlin
次のようなシステムがあります。
係数 [AO] の値はわかっているので、[x,y] を推定しようとしています (p の値を最小化することによって)。必要に応じて、最初の推測 [x0,y0] があります。
私は、matlab での関数処理にあまり精通していません。これをどのようにプログラムできますか (RLS ソリューションを使用して - lsqnonlin について考えさせられました)。lsqnonlin を使用する必要がありますか?
MATLAB 2010b を使用しています。みんなありがとう。
PS: 時々、追加の方程式 (これら 2 つに似たもの) を使用して、システムを過剰決定します。それでも機能しますか?
matlab - matlab で一次方程式系を設定する
解きたい次の方程式があります。
H*b0 = M(Q+1)b(Q+1)+l+M'B
unknowns
と. _ b0, b(q+1)
_ B
既知の行列のサイズは次のとおりです。
そこで、ベクトルの求め方を知りたいです。
これを行うために実行できる組み込みコマンドはありますか?
これはこの論文から来ています
編集::未知数のサイズは次のとおりです(すべて列ベクトルです):