問題タブ [numerical-methods]
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 - sin(X)を統合しながら、scipy.integrate.quadが同じ長さの範囲で異なる結果をもたらす理由を誰かが説明できますか?
数値積分法を使用して、プログラム内の任意の(コーディング時に知られている)関数を数値積分しようとしています。私はPython2.5.2をSciPyの数値積分パッケージと一緒に使用しています。それを感じるために、sin(x)を統合してみて、この動作を観察することにしました-
なぜなら、この振る舞いは奇妙だと思います。-
1。通常の積分では、全サイクルで積分するとゼロになります。
2.数値積分では、この(1)は必ずしも当てはまりません。これは、曲線の下の総面積を概算しているだけだからです。
いずれにせよ、1がTrueであると仮定するか、2がTrueであると仮定すると、動作に一貫性がないことがわかります。両方の統合(-piからpiおよび0から2 * pi)は0.0(タプルの最初の値が結果で2番目がエラー)を返すか、2.257を返す必要があります。
誰かがこれが起こっている理由を説明できますか?これは本当に矛盾ですか?数値解法について本当に基本的なことが欠けているかどうか誰かに教えてもらえますか?
いずれにせよ、私の最終的なアプリケーションでは、上記の方法を使用して関数の弧長を見つけることを計画しています。誰かがこの分野での経験がある場合は、Pythonでこれを行うための最良のポリシーについて教えてください。
編集
注
配列に格納されている範囲内のすべてのポイントで、すでに最初の微分値があります。
現在のエラーは許容範囲です。
エンドノート
私はこれについてWikipaediaを読みました。Dimitryが指摘しているように、弧長を取得するためにsqrt(1 + diff(f(x)、x)^ 2)を統合します。私が聞きたかったのは、これを行うためのより良い近似/ベストプラクティス(?)/より速い方法はありますか?さらにコンテキストが必要な場合は、個別に投稿します/必要に応じてここにコンテキストを投稿します。
physics - 量子調和振動子の波動関数と数値積分するにはどうすればよいですか?
被積分関数の 1 つまたは複数の関数が1d 量子調和振動子波動関数である場合の、無限範囲にわたる 1 次元積分の数値積分の実行方法 (数値積分法と使用するトリック) 。とりわけ、調和振動子基底でいくつかの関数の行列要素を計算したい:
phi n (x) = N n H n (x) exp(-x 2 /2)
ここで、H n (x) はエルミート多項式です。V m,n = \int_{-infinity}^{infinity} phi m (x) V(x) phi n (x) dx
また、幅の異なる量子調和波動関数が存在する場合も同様です。
問題は、波動関数 phi n (x) が振動動作をすることです。これはnが大きい場合の問題であり、GSL (GNU Scientific Library) の適応ガウスクロンロッド求積法のようなアルゴリズムは計算に時間がかかり、大きな誤差があります。
python - numpy.correlateを使用して自己相関を行うにはどうすればよいですか?
数値のセットの自己相関を行う必要があります。これは、私が理解しているように、セットとそれ自体の相関にすぎません。
numpyのcorrelate関数を使用して試しましたが、ほとんどの場合、最初の数値が最大ではないベクトルが得られるため、結果は信じられません。
したがって、この質問は実際には2つの質問です。
- 正確には何をしているの
numpy.correlate
ですか? - 自己相関を行うためにそれ(または他の何か)をどのように使用できますか?
r - まばらなサンプリングデータから地形図を作成するには?
(x, y, 高度)データのかなりまばらなサンプルしかない地形の地形図を作成する必要があります。もちろん、完全に正確なマップを作成することはできませんが、ある意味で「滑らかな」マップが必要です。「滑らかさ」(おそらく表面曲率の二乗の平均の逆数) を定量化する必要があり、2 つの量の合計である目的関数を最小化したい:
- 表面の粗さ
- サンプル地点での表面の高度とその地点で実際に測定された高度との間の平均二乗距離
私が実際に欲しいのは地形図なので、一定の高度の等高線を作成する方法を本当に探しています。表面について話すことなくそれを行うための巧妙な幾何学的方法があるかもしれません。もちろん、輪郭線も滑らかにしたい。
あらゆる提案を歓迎します。これがよく知られた数値問題であることを願っています。私は C に慣れており、FORTRAN の実用的な知識を持っています。Matlab と R については、まったく無知です。
サンプルの配置場所については、ほぼ均等な間隔で計画していますが、地形がより興味深い場所でより多くのサンプルを取得します。たとえば、平野よりも山岳地帯をより密にサンプリングします。しかし、サンプリングに関していくつかの選択肢があることは間違いありません。唯一の問題は
探しているフィーチャを見つけるために、どのくらいの地形をマッピングする必要があるかはわかりません。
サンプルの採取には、10 分程度の適度な費用がかかります。そのため、100x100 グリッドのサンプリングには時間がかかる場合があります。
c++ - C/C++ で派生物を実装する
f(x)
最大の精度を確保するために、通常プログラムで計算された の微分はどのように行われますか?
私はニュートン・ラフソン法を実装していますが、関数の導関数を取得する必要があります。
c++ - std::pow は小数指数に対して間違った近似値を与えます
これが私がやろうとしていることです
結果は0ですが、0.4465を期待しています
式は (1 + x) ^3= 1.1402
、 を見つけますx
。
language-agnostic - 関数近似
私には機能があり、
P(x0, x1, ..., xn)
入力として100個の整数を取り、出力として整数を与えます。P は評価するのに時間がかかる関数です (30 秒から数分の範囲になる場合があります)。
P から得られる値を最大化するポイントの値を知る必要があります。
これを達成するためにどのようなテクニックを使用できますか? 一般に、人々はこれに遺伝的アルゴリズムを使用することを知っていますが、人口が少なく世代が少ない場合でも (たとえば、人口 = 50、世代 = 50)、P はそうです。遅いと、計算に 40 時間以上かかります。
安く済ませる方法はありますか?多分反復プロセス?本当に最適である必要はありませんが、それがどのように動作するかについてのアイデアはありません(線形/二次/指数関数を試しましたが、良い値が得られないようです.Pが返されることはわかっています私が得ている値よりも少なくとも5〜10倍優れています)。
より簡単に実装できるものにする必要があります (つまり、自分で実装する必要があります)。
ありがとう
編集: P は確率過程です。
python - NumPyを使用した三重対角行列アルゴリズム(TDMA)の実装
NumPyを使用してPythonでTDMAを実装しています。三重対角行列は、次の3つの配列に格納されます。
alpha
-係数を効率的に計算したいのですが。アルゴリズムは次のとおりです。
for
ただし、Pythonのループのため、これは効率的ではありません。私が欲しいのはこのアプローチのようなものです:
この後者の場合、NumPyは最後の式の右部分を一時配列に格納し、その要素への参照をに割り当てるため、結果は正しくありませんalpha[1:]
。したがってa[1:] * alpha[:-1]
、は単なるゼロの配列です。
alpha
内部ループ内の前のステップで計算された値を使用するようにNumPyに指示する方法はありますか?
ありがとう。
numerical-methods - ARPACK を PARDISO で使用する
これは、こちらの質問に似た質問です。
PARDISO ソルバーおよびインテル® mklライブラリーとうまく連携するARPACK Eigensolverのオープンソース実装または例が既にあるのだろうか?