数学

交流

複素電力の定義

複素電力は電圧と電流の複素共役で与えられる。\begin{align}\dot{S} &= \dot{V} \overline{\dot{I}}\\&=V_e e^{j\omega t} I_e e^{\overline{j(\omega ...
C/C++/C#

行列の固有値と行列式の関係

行列の固有値の積は行列式の値と等しくなる。これをEigenで試す。実行結果固有値 (16.7075,0)(-0.905741,0) (0.198246,0)行列式-3確かめれば\begin{align}16.7075 \times (-0....
C/C++/C#

Eigenで固有値と固有ベクトルを計算する

Eigenで固有値と固有ベクトルを求めるにはEigen::EigenSolver< Eigen::MatrixXf > s(A);とした後、sに対してs.eigenvalues() とすれば固有値を、s.eigenvectors()とすれば...
C/C++/C#

トレースとフロベニウスノルムの関係

\(A\)と\(A\)の転地の積のトレースはフロベニウスノルムの二乗と等しくなる。つまり\begin{align}\mathrm{tr} (A A^{T}) = \mathrm{tr} (A^{T} A) = \sum_{i=1}^{n}\...
C/C++/C#

トレースの性質

トレースにはつぎのようなの性質がある。\begin{align}\mathrm{tr} {A1} + \mathrm{tr}{A2} &= \mathrm{tr} ( A1+A2 ) \\a\ \mathrm{tr} {A1} &= \ma...
C/C++/C#

トレースの性質 その1

トレースには次の性質がある。\begin{align}tr (A+B) = tr A + tr B\end{align} 今回はこれをC++で計算する。実行結果1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1...
C/C++/C#

C++でトレースを求める

正方行列の対角成分の和\begin{align}tr A = \sum_{i=1}^{n} a_{ii}\end{align}をトレースという。今回はこれをC++で計算する。実行結果1,2,3,4,5,6,7,8,9,15ソースコード#in...
代数

二次形式の定義

\(n\)個の変数による二次形式は\begin{align}f(x_1,x_2,\cdots,x_{n-1},x_n)=\sum_{i=1,j=1}^{n} c_{i,j} x_i x_j\end{align}\(n=2\)の時は定数\(x...
代数

行列の特異値

行列\(A\)について、その随伴行列\(A^{*}\)との積\(AA^{*}\)を考える。この時固有値\(\lambda(AA^{*})\)の平方根を\begin{align}\sigma(A)=\sqrt{AA^{*}}\end{alig...
C/C++/C#

C++でフロベニウスノルムを計算する

フロベニウスノルムは\begin{align}\| A \|_{F}=\sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n} \left |a_{ij} \right |}\end{align}で計算できる。一次元配列に行列...
C/C++/C#

Eigenで内積と外積を計算する

ベクトルを定義するときは#include "../Eigen/Dense"をインクルードしてEigen::Vector3d x(1, 2, 3);とすればベクトルが定義できるので、内積と外積をx.dot(y)x.cross(y)で計算する。...
C/C++/C#

Eigenで行列の和・差・積を試す

Eigenで行列の和・差・積を試す。「+」、「-」、「*」が使えるので直観的。ソースコード#include <iostream>#include "../Eigen/core"int main() { int n = 2; Eigen::M...
C/C++/C#

Eigenをインストールして使ってみた

Eigen(は行列用の科学技術ライブラリで、ヘッダーだけ読み込めば動く。ダウンロードしたファイルを展開するとEigenというファイルがあるのでそれを適当な場所に置き#include "../Eigen/core"としてcoreにパスを通せば...
C/C++/C#

C++で二次方程式の判別式を計算する

二次方程式の解の公式は\begin{align}D=b^2-4ac\end{align}あとは値の範囲で条件分岐すればいい実行結果d -> 33異なる2つの実数解ソースコード#include <iostream>typedef struct...
C/C++/C#

C++で2点間の距離を計算する

三次元平面上に置かれた二点 \(P_{1}(x_{1},y_{1},z_{1}),P_{2}(x_{2},y_{2},z_{2})\) 間の距離\(d(P_{1},P_{2})\)は\begin{align}d(P_{1},P_{2})=\...
python

Pythonで複素関数を描画する

Pythonで複素関数を描画する。例では\begin{align}f(z)=\frac{1}{z}\end{align}を可視化している。\(z=0\)に特異点があることが確認できる。実行結果ソースコードimport numpy as np...
python

Pythonでガンマ関数のグラフを作る

Pythonでガンマ関数のグラフを描く。mathライブラリを使って描画した。実行結果ソースコードimport numpy as npimport mathimport matplotlib.pyplot as pltN = 10000x =...
C/C++/C#

C++のlgammaを使う

lgammaは引数のガンマ関数の絶対値の自然対数を返す。\begin{align}f(x) = \ln |\Gamma(x)|\end{align}実行結果infソースコード#include<iostream>int main() { st...
C/C++/C#

C++でラマヌジャンの公式を使った円周率計算をする

詳しくはここC++で書く。Pythonとは違い大きな数を扱えないので注意。#include<iostream>#include<math.h>int factorial(int);int main() { int N = 1; double...
C/C++/C#

C++で内積を計算する

内積についてはここ。cinで数値を入力した後、各ベクトルの数値を配列に入れて内積を計算する。結果データ数を入力 ->3x0->2x1->4x2->3w0->1w1->3w2->52×1=24×3=123×5=15結果 ->29ソースコード。...