複素数用のPythonプログラム
正の数の実数の根は常に2つあります。たとえば、x2が25の場合、xは±5です。ただし、x2が-25の場合、実際のルートは存在しません。負の数の平方根は、絶対値の平方根に虚数単位j=√-1を掛けたものです。
したがって、√−25 =√25𝑋−1 =√25×√−1 =5j
複素数は、実数と虚数の成分で構成されます。 x+yjとして表されます。 xとyはどちらも実数です。 Yに虚数単位を掛けると、複素数の虚数部が形成されます。
例:3 + 2j、10-5.5J、9.55 + 2.3j、5.11e-6 + 4j
Pythonには、組み込みの複雑なデータ型があります。複素数オブジェクトは、次のようにリテラル表現で作成できます-
>>> x = 2+3j >>> type(x)
複素数オブジェクトには、実数の2つの属性があります。 (実際のコンポーネントを返します)および imag (虚数単位jを除く虚数成分を返します)
>>> x.real 2.0 >>> x.imag 3.0
conjugate()もあります 方法。複素数の共役は、符号が反対の同じ実数成分と虚数成分を持ちます。したがって、2+3jの共役は2-3jです
>>> x.conjugate() (2-3j)
Pythonには、複素数オブジェクトを返すcomplex()関数も組み込まれています。この関数は、実数成分と虚数成分にそれぞれ1つずつ、合計2つのパラメーターを取ります。それらは任意の数値型(int、float、またはcomplex)にすることができます
>>> complex(9,5) (9+5j) >>> complex(-6, -2.5) (-6-2.5j) >>> complex(1.5j, 2.5j) (-2.5+1.5j)
パラメータが1つだけ指定されている場合、それは実数成分として扱われ、虚数成分はゼロと見なされます。
>>> complex(15) (15+0j)
関数には、数値表現が含まれている場合、引数として文字列を受け取ることもできます。
>>> complex('51') (51+0j) >>> complex('1.5') (1.5+0j)
複素数の加算と減算は、整数または浮動小数点数の場合と同様です。実数部と虚数部は別々に加算/減算されます。
>>> a = 6+4j >>> b = 3+6j >>> a+b (9+10j) >>> a-b (3-2j)
乗算の場合、複素数を二項式と見なし、最初の数値の各項に2番目の数値の各項を乗算します。
a = 6+4j b = 3+2j c = a*b c = (6+4j)*(3+2j) c = (18+12j+12j+8*-1) c = 10+24j>
Pythonコンソールでは、結果はこれを検証します-
>>> a = 6+4j >>> b = 3+2j >>> a*b (10+24j)
複素数の除算は次のように行われます-
2つの数字を
a =2 + 4j
b =1-2j
a/bを計算したい。
1+2jである分母の共役を取得します
分子と分母に共役を掛けます 分母の除算の結果を取得する
c = a/b c = (2+4j)*(1+2j)/(1-2j)(1+2j) c = (2+4j+4j+8*-1)/(1+2j-2j-4*-1) c = (-6+8j)/5 c = -1.2+1.6j
次のPythonコンソールセッションは、上記の処理を確認します。
>>> a = 2+4j >>> b = 1-2j >>> a/b (-1.2+1.6j)
cmathモジュール
Pythonの標準ライブラリの数学モジュールで定義されている数学関数は、浮動小数点数を処理します。複素数の場合、Pythonライブラリにはcmathモジュールが含まれています。
複素数z=x+yjはデカルト表現です。これは、極座標で内部的に表され、その係数r(組み込みのabs()関数によって返される)と、x軸とxをxと結ぶ線の間のラジアンで反時計回りの角度である位相角Φ(phiと発音)があります。元。次の図は、複素数の極座標表現を示しています-
cmathモジュールの関数を使用すると、デカルト表現を極表現に、またはその逆に変換できます。
極性() −この関数は、複素数のデカルト表記の極座標表現を返します。戻り値は、モジュラスとフェーズで構成されるタプルです。
>>> import cmath >>> a = 2+4j >>> cmath.polar(a) (4.47213595499958, 1.1071487177940904)
モジュラスはabs()関数によって返されることに注意してください
>>> abs(a) 4.47213595499958
phase() −この関数は、x軸と aを結合するセグメントの間の反時計回りの角度を返します 起源を持つ。角度はラジアンで表され、πと-πの間です
>>> cmath.phase(a) 1.1071487177940904 z = x+yj Φ
rect() −この関数は、極形式、つまり絶対値と位相で表される複素数のデカルト表現を返します
>>> cmath.rect(4.47213595499958, 1.1071487177940904) (2.0000000000000004+4j)
cmathモジュールには、mathモジュールで定義されているすべての数学関数の代替が含まれています。以下で説明するように、三角関数と対数関数があります-
cmath.sin() −この関数は、ラジアンで表される位相角の正弦三角関数の比率を返します。
>>> import cmath >>> a = 2+4j >>> p = cmath.phase(a) >>> cmath.sin(p) (0.8944271909999159+0j)
同様に、他の比率cos()、tan()、asin()、acos()、およびatan()の関数は、cmathモジュールで定義されています。
cmath.exp() − math.exp()と同様に、この関数はexを返します。ここで、xは複素数、eは2.71828です
>>> cmath.exp(a) (-1.1312043837568135+2.4717266720048188j)
cmath.log10() −この関数は、基数を10として複素数の対数値を計算します
>>> a = 1+2j >>> cmath.log10(a) (0.3494850021680094+0.480828578784234j)
cmath.sqrt() −この関数は、複素数の平方根を返します。
>>> cmath.sqrt(a) (1.272019649514069+0.7861513777574233j)
この記事では、Pythonの複素数データ型の重要な機能と、Pythonで算術演算を実行する方法を学びました。また、cmathモジュールで定義されているさまざまな関数についても説明しました。
-
選択ソート用のPythonプログラム
この記事では、Python3.xでの選択ソートとその実装について学習します。またはそれ以前。 選択ソート アルゴリズムでは、配列は、ソートされていない部分から最小要素を再帰的に見つけて、それを先頭に挿入することによってソートされます。特定の配列での選択ソートの実行中に、2つのサブ配列が形成されます。 すでにソートされているサブアレイ ソートされていないサブアレイ。 選択ソートを繰り返すたびに、ソートされていないサブアレイの最小要素がポップされ、ソートされたサブアレイに挿入されます。 アルゴリズムの視覚的表現を見てみましょう- それでは、アルゴリズムの実装を見てみましょう- 例
-
2つ以上(または配列)の数値のGCD用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 −数の配列が与えられ、最大公約数を見つける必要があります。 3つ以上の数のgcdを見つける必要がある場合、gcdは、引数として提供されるすべての数に共通の素因数の積に等しくなります。引数の数のペアのGCDを繰り返し取得することによって計算することもできます。 ここでは、後者のアプローチを実装します では、実装を見てみましょう 例 def findgcd(x, y): while(y): x, y = y, x % y &n