タグ付けされた質問 「precision」

正確な数学的値とは異なる、指定されたベースの有限表現での数値の表現に関連する問題。

17
Python用の高品質な非線形プログラミングソルバーはありますか?
解決すべきいくつかの挑戦的な非凸のグローバル最適化問題があります。現在、MATLABのOptimization Toolbox(特にfmincon()algorithm ='sqp'を使用)を使用していますが、これは非常に効果的です。ただし、私のコードのほとんどはPythonで作成されているため、Pythonでも最適化を行いたいと考えています。競合できるPythonバインディングを備えたNLPソルバーはありfmincon()ますか?ちがいない 非線形等式および不等式の制約を処理できる ユーザーがヤコビアンを提供する必要はありません。 グローバルな最適化を保証していなくても構いません(保証fmincon()しません)。私は、困難な問題や、それよりもわずかに遅い場合でも、ローカル最適にロバストに収束するものを探していfmincon()ます。 OpenOptで利用できるソルバーをいくつか試しましたが、MATLABのソルバーより劣っていfmincon/sqpます。 強調するために、私はすでに扱いやすい定式化と優れたソルバーを持っています。私の目標は、ワークフローをより合理化するために、単に言語を変更することです。 Geoffは、問題のいくつかの特性が関連している可能性があると指摘しています。彼らです: 10-400の決定変数 4〜100の多項式等式制約(1〜8の範囲の多項式次数) 決定変数の数の約2倍に等しい合理的な不等式制約の数 目的関数は決定変数の1つです 不等式制約のヤコビアンと同様に、等式制約のヤコビアンは密です。



1
倍精度の最新GPUを備えたPythonを使用した科学計算
Pythonを使用して、新世代(K20など)GPUで倍精度科学計算を使用した人はいますか? この技術は急速に進化していることを知っていますが、現在これを行う最善の方法は何ですか?GPUは、人気のある科学的なPythonライブラリnumpyとscipyの範囲外であり、theanoを使用したかったのですが、GPUにはfloat32精度しか使用していないようです。googleがpython gpuの検索結果を提供できることは承知していますが、メーカーに会うために道を進んでいるかどうかに関係なく、プロジェクトのリストよりも多くの洞察を望んでいます。
14 python  gpu  precision 

2
悪条件の線形システムを正確に解決できるのはなぜですか?
ここでの答えによると、(線形システムの解法のための)条件数が大きいと、浮動小数点ソリューションで保証される正しい桁数が減少します。擬似スペクトル法の高次微分行列は、通常、非常に悪条件です。なぜ彼らはまだ非常に正確な方法であるのですか? 悪条件の行列から生じる低精度は保証された値にすぎないことを理解していますが、それでも悪条件の行列が実際の直接的な方法で正確に解かれるのか疑問に思いLCOLます。Wang et al。、擬似スペクトル積分行列を使用したウェル条件付きコロケーション方法、SIAM J. Sci。計算、36(3)。

3
単精度と倍精度の浮動小数点精度
単精度の浮動小数点数はメモリの半分を占有し、最新のマシン(GPUの場合でも)では、倍精度に比べてほぼ2倍の速度で操作を実行できます。私が見つけた多くのFDTDコードは、単精度の算術演算とストレージのみを使用しています。大規模なスパース方程式を解くために単精度を使用することが許容される場合の経験則はありますか?マトリックス条件数に大きく依存する必要があると思います。 さらに、必要に応じて倍精度を使用し、倍精度を必要としない単一精度を使用する効果的な手法はありますか。たとえば、行列ベクトル乗算またはベクトルドット積の場合、結果を倍精度変数に蓄積して(キャンセルエラーを回避する)ことをお勧めしますが、個々のエントリは互いに乗算する必要があります単精度を使用して乗算できます。 最新のFPUでは、単精度(浮動)から倍精度(倍)へ、またはその逆にシームレスに変換できますか?または、これらの費用のかかる操作ですか?

2
ベクトル間の角度を計算する数値的に安定した方法
2つのベクトル間の角度に古典的な公式を適用する場合: α=arccosv1⋅v2∥v1∥∥v2∥α=arccos⁡v1⋅v2‖v1‖‖v2‖\alpha = \arccos \frac{\mathbf{v_1} \cdot \mathbf{v_2}}{\|\mathbf{v_1}\| \|\mathbf{v_2}\|} 非常に小さい/鋭角の場合、精度が失われ、結果が正確ではないことがわかります。このStack Overflow answerで説明されているように、1つの解決策は代わりにアークタンジェントを使用することです。 α=arctan2(∥v1×v2∥,v1⋅v2)α=arctan⁡2(‖v1×v2‖,v1⋅v2)\alpha = \arctan2 \left(\|\mathbf{v_1} \times \mathbf{v_2}\|, \mathbf{v_1} \cdot \mathbf{v_2} \right) そして、これは実際により良い結果をもたらします。しかし、これがに非常に近い角度で悪い結果を与えるのではないかと思います。そうですか?もしそうなら、ブランチ内の公差をチェックせずに角度を正確に計算する式はありますか?π/2π/2\pi / 2if

5
数値微分係数と有限差分係数:Fornberg法の更新?
数値微分を計算したい場合、ここで Bengt Fornbergが提示した(およびここで報告した)方法は非常に便利です(正確で実装が簡単です)。1988年からの元の論文の日付として、今日、より良い代替案があるかどうか(または(ほぼ)単純かつ正確に)知りたいのですが。

4
確定的モデルの実行での小さく予測できない結果
私はかなり大きなモデル(約5000行)をCで記述しています。これはシリアルプログラムであり、乱数の生成はどこにもありません。FFTを使用する関数にFFTWライブラリを使用します。FFTW実装の詳細はわかりませんが、その中の関数も確定的であると想定しています(エラーが発生した場合は修正してください)。 私が理解できない問題は、同じマシン(同じコンパイラ、同じライブラリ)での同一の実行の結果に小さな違いがあることです。 私は、倍精度変数を使用して、変数に結果を出力するvalue例えば、私が発行します fprintf(outFID, "%.15e\n", value);か fwrite(&value, 1, sizeof(double), outFID); そして、私は常に次のような違いを得るでしょう: 2.07843469652206 4 e-16対2.07843469652206 3 e-16 私はこれがなぜなのかを理解するために多くの時間を費やしてきました。私は最初、メモリチップの1つが故障していると思っていたので、注文して交換しましたが、役に立ちませんでした。その後、同僚のLinuxマシンでコードを実行してみたところ、同じ性質の違いが生じました。 何が原因でしょうか?今は小さな問題ですが、「氷山の一角」(深刻な問題)なのでしょうか。 数値モデルを扱う誰かがこの問題に遭遇した場合に備えて、StackOverflowの代わりにここに投稿すると思いました。誰かがこれに光を当てることができれば、私は多くの義務があります。 コメントの フォローアップ: Christian ClasonとVikram:まず、私の質問に関心をお寄せいただきありがとうございます。あなたがリンクした記事は、次のことを示唆しています:1.丸め誤差は精度を制限し、2。異なるコード(一見害のない印刷ステートメントを導入するなど)がマシンのイプシロンまでの結果に影響を与える可能性があります。効果fwriteとfprintf機能を比較していないことを明確にすべきです。どちらか一方を使用しています。特に、両方の実行で同じ実行可能ファイルが使用されます。fprintfOR を使用しているかどうかに関係なく、問題が発生すると単に述べていfwriteます。 したがって、コードパス(および実行可能ファイル)は同じであり、ハードウェアも同じです。これらすべての外部要因が一定に保たれている場合、基本的にランダム性はどこから来るのでしょうか?不良メモリがビットを正しく保持していないためにビットフリップが発生したのではないかと疑ったので、メモリチップを交換しましたが、これは問題ではないようです。私のプログラムは、1回の実行で数千のこれらの倍精度数値を出力します。ランダムなビットフリップを持つランダムな握りが常にあります。 クリスチャンClasonの最初のコメントへのフォロー:なぜマシンの精度内で0と同じ?doubleの最小の正の数は2.22e-308なので、0に等しくないはずです。私のプログラムは10 ^ -16の範囲(1e-15から8e-17の範囲)で数千の値を出力し、私たちの研究プロジェクトには意味のある変化が見られたので、無意味なものを見ていなかったと思います番号。2 ⋅ 10− 162⋅10−162\cdot 10^{-16} フォローアップ#2: これは、コメントでの派生的議論を支援するために、モデルによって出力された時系列のプロットです。

2
密で不良な条件付き行列の対角化
いくつかの密で悪条件の行列を対角化しようとしています。マシン精度では、結果は不正確です(負の固有値を返す、固有ベクトルには期待される対称性がありません)。MathematicaのEigensystem []関数に切り替えて、任意の精度を利用しましたが、計算が非常に遅くなっています。私はいくつもの解決策を受け入れます。悪条件の問題に適したパッケージ/アルゴリズムはありますか?私はプレコンディショニングの専門家ではないので、これがどれだけ役立つかわかりません。それ以外の場合は、並列化された任意精度の固有値ソルバーしか考えられませんが、Mathematica、MATLAB、およびC ++以外には何も知りません。 問題の背景を説明するために、行列は大きくはありますが、巨大ではありません(最大で4096x4096〜32768x32768)。それらは実数で対称であり、固有値は0から1(排他的)の範囲にあり、多くの固有値は0に非常に近く、1に近いものはありません。行列は本質的に畳み込み演算子です。すべての行列を対角化する必要はありませんが、大きくできるほど良いです。多くのプロセッサと分散コンピューティング機能を備えたコンピューティングクラスタにアクセスできます。 ありがとうございました

2
フロートなしのアイゼンシュタイン数の表現
具体的には、2次フィールドを使用する必要があるプロジェクトがあります。具体的にはの形式でます。a+b−3−−−√a+b−3a + b \sqrt{-3}a,b∈Qa,b∈Qa,b \in \mathbb{Q} たとえば、次はアイゼンシュタイン整数の素数です。 セージは使いたくない。 組み込む独自のデータ型を記述したいと思いnumpyます。PARIは便利ですが、Pythonとの互換性はありません。 これらのオブジェクトの追加はかなり明確です(a1+b1−3−−−√)+(a2+b2−3−−−√)=(a1+a2)+(b1+b2)−3−−−√(a1+b1−3)+(a2+b2−3)=(a1+a2)+(b1+b2)−3(a_1 + b_1 \sqrt{-3}) + (a_2 + b_2 \sqrt{-3}) = (a_1 + a_2) + (b_1+b_2) \sqrt{-3} 乗算は少しデリケートですが、ハードコーディングもできます (a1+b1−3−−−√)×(a2+b2−3−−−√)=(a1a2−3b1b2)+(a1b2+a2b1)−3−−−√(a1+b1−3)×(a2+b2−3)=(a1a2−3b1b2)+(a1b2+a2b1)−3(a_1 + b_1 \sqrt{-3}) \times (a_2 + b_2 \sqrt{-3}) = (a_1 a_2 - 3 b_1 b_2) + (a_1 b_2 + a_2 b_1)\sqrt{-3} 私のデータ型も除算に対応する必要があります。簡単にするために、逆数を取ってみましょう: 1a+b−3−−−√=a−b−3−−−√a2+3b21a+b−3=a−b−3a2+3b2 …

2
数値PDEでの高精度浮動小数点演算
非常に異なるリソースや研究との話し合いから、数値偏微分方程式の高精度計算に対する需要が高まっているという印象があります。ここで、高精度とは、標準の64ビット倍精度よりも高い精度を意味します。 このトピックの最新技術について知りたいです。比較として、数値PDEにはコミュニタイトがあり、特にマルチコアメソッド、大規模並列化、GPUコンピューティングなどを対象としています。同様のコミュニティが存在するのか、数値PDEの高精度な方法で成長しているのかと思います。特に、高精度の紹介または調査論文に興味があります(これが問題の実際のポイントです)。トピックの実際の関連性の。

2
ODEを証明可能な正しい数字に数値的に解くにはどうすればよいですか?
の形式の初期値問題があるとします whereは正確に(つまり無制限の精度で)既知であり、を効率的に評価できますを任意の精度に。つまり、ベクトルと整数与えられると、正しいことが保証された近似値を返すブラックボックスがあります。の時間多項式の桁。の近似値を取得するための実用的な方法があるかどうか知りたいX 0 ∈ R N F :R N → R nはX ∈ R nは M 、F (X)M M X(TとF)d xDトン= f(x)x(0)= x0dxdt=f(x)x(0)=x0 \frac{\mathrm{d} \mathbf{x}}{\mathrm{d} t} = f(\mathbf{x}) \qquad \mathbf{x}(0) = \mathbf{x}_0 バツ0∈ Rんx0∈Rn\mathbf{x}_0 \in \mathbb{R}^nf:Rん→ Rんf:Rn→Rnf: \mathbb{R}^n \to \mathbb{R}^nX ∈ Rんx∈Rn\mathbf{x} \in \mathbb{R}^nMMMf(x)f(x)f(\mathbf{x})MMMMMMx( tf)x(tf)\mathbf{x}(t_f)(ここでは特定の最終時間です)は、桁に間違いなく正しいです。Ntf∈ Rtf∈Rt_f \in \mathbb{R}NNN 明らかに、これはただの関数のために行うことはできませんあるため、大幅に変更され、真の解決策はなく、中にピックアップされていないことをいくつかのクレイジーな行動を持っているかもしれません評価の妥当な数。したがって、これを行うには、のどのような良好な動作条件(たとえば、すべての偏導関数が存在し、制限されているか、小さなリプシッツ定数など)が必要であることを知りたいと思っています。 f …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.