その他

その他

Pythonによる並列計算の注意点、オーバーサブスクリプション

はじめに Pythonで画像処理を行う場合、速度が問題になるケースがよくあります。その場合の解決方法は大きく分けて2つあり、1つは並列計算によるもの、もう1つはNumbaなどを使ってPythonコードを内部的にコンパイルして高速化するもの、...
その他

数値計算における差分法、任意精度の差分式の構成方法

はじめに 解析解(数学解)が求められない場合に、数値解析で数値解を計算しますが、計算機で扱うためには離散化が必要です。ここでは、微分方程式を解く時に必要な離散化を考えます。微分方程式を解くための離散化には、時間の離散化と、空間の離散化があり...
その他

3点で囲む三角形の面積(外積の活用)

3次元空間上の3点A,B,Cが与えられたとき、この3点で囲む三角形の面積を求めます。実はこれはベクトルの外積を使うと簡単に計算できます。 まずベクトルABとACを計算します。ベクトルの外積の大きさは外積の計算に用いた2つのベクトルを2辺にも...
その他

楕円の周長の計算(区分求積法)

楕円は円錐を平面で切ったときにできる図形のうちの1つです。今回は楕円の周の長さCを数値計算によって求めます。以下の式で表現される、長軸2a、単軸2bの平面上の楕円を考えます。 \frac{x^2}{a^2}+\frac{y^2}{b^2}=...
その他

点と平面の距離(三重積と法線)

距離の公式 次の平面と点Pが与えられたとき、 ax+by+cz+n=0 \\ P (x_{0},y_{0},z_{0}) 平面との距離Dは以下の式により求められます。 D=\frac{|ax_{0}+by_{0}+cz_{0}+n|}{\s...
その他

球面上に均一にランダム分布する点群を生成する

球面上に均一にランダム分布する点群を生成する方法を考えてみます。 方針 簡単のために単位球を考えます。乱数tで緯度を決め、乱数uで経度を決めます。ただし、緯度ごとに、緯線の長さが異なるため、球面上に均一に分布させるために、この緯線の長さに比...
その他

任意の確率密度関数を持つ乱数の生成

任意の確率密度関数を持つ乱数の生成方法を考えます。Pythonでの生成方法を書いていきますが、根底にある考え方は他の言語でも共通です。 手始めに、一様乱数から 確立密度関数で表現すると、[0, 1)において、P(x) = 1。 # [0, ...
その他

Scipyによる最適化計算と自動微分

Scipyによる最適化計算 Pythonで最適化計算を行う場合、Scipyのoptimizationパッケージを使うことになると思います。これには、いろいろな最適化アルゴリズム(Nelder-Mead, Powell, BFGSなど)が実装...
その他

3次元回転の最適化計算

はじめに 3次元回転(金谷健一著)を読みました。あるコスト関数を最小化するための3次元回転の最適化について、リー代数の方法、の理論が記述されています。ここでは実際に実装してみようと思います。 リー代数とは 無限小回転が生成する線形空間です。...
その他

回転の平均、回転同士の距離

距離とは 回転同士の距離がどういうものか、といったことはここに日本語で詳しく書いてあります。とても良いページです。 簡単にまとめてみると、数学的に「距離」というためには、以下の条件を満たす必要があります。 正定値性: 常に0以上の値になる ...