Tag: NumericalCalculation

数値計算に関するもの

Rustでquad-doubleの加算を試す

default

最近Rustという言語を学んでいます。システムプログラム向けということらしいですが、私はパフォーマンスからして数値計算にも向いているのではないかと勝手に考えています。

行列計算プログラムでも書けばいいかもしれませんが、偶然出会ったdouble-double演算に興味を持ったので、Rustでquad-doubleの加算を実装してきました。C++による実装はすでにありますので参考にしつつ。

参考論文はこちら、実装はこちら

Continue Reading

C#でLU分解

default

LU分解とは、ある行列AをL(下三角行列)とU(上三角行列)の積に分解するものです。

LU分解が役に立つのは、同じ行列に対してベクトルが違う方程式をいくつも解く場合です。LU分解自体はガウスの消去法と同じオーダーの計算量となりますが、LU分解を用いる場合、分解は方程式がいくつあっても1度しか行わないため、その分方程式を解くのにかかる時間は少なくなります。

Continue Reading

C#で簡単なガウスの消去法

default

C#でガウスの消去法をやってみましたが、ガウス・ジョルダン法と同じくC言語で書いたものとあまり変わらないものになってしまいました。

何もしていません。あくまでシンプルな処理を紹介しているため、0による除算の確認などはしていません。また、単純に高速で解を求めるというようりも、数式に沿った処理をしています。

Continue Reading

C#で簡単なガウス・ジョルダンの消去法

default

C#でガウス・ジョルダンの消去法を実行してみます。C言語などで書いた場合とほとんど差はありません。
実際にはガウスの消去法の方が計算の効率が良いので、基本的にはこちらが使われることは少ないと思います。

簡単な…といういうことで、軸を選ぶ処理などは実装していません。

Continue Reading

C#で二次方程式の解の桁落ちを見る

default

二次方程式の解を公式で解くことで、C#で桁落ちを試します。

桁落ち

cancellation of significant digits

桁落ちとは、浮動小数点演算で、計算結果が0に極端に近くなる加減算を行ったときに、有効数字の桁数が極端に少なくなる現象。
(中略)
桁落ち自体による問題はコンピュータとは無関係に発生するが、コンピュータ上での桁落ちは、計算途中の値が分からない・結果の桁数が常に一定なので気づきにくいという特徴がある。

Continue Reading