Python
 Computer >> コンピューター >  >> プログラミング >> Python

複素数オブジェクトのクラスを定義するPythonプログラム


次の演算で複素数クラスを定義することにより、複素数タスクを実行するとします-

  • add()を使用して2つの複素数を追加します
  • sub()で2つの複素数を減算します
  • mul()を使用して2つの複素数を乗算します
  • div()を使用して2つの複素数を除算します
  • 複素数の絶対値を取得するmod()

複素数は(a + bi)の形式で表示されます。 2つの複素数があり、それらに対してこれらの操作を実行します。クラス内で、add()、sub()、mul()、およびdiv()メソッドをオーバーロードして、演算子を使用して操作を実行できるようにします。また、__ str __()メソッドをオーバーロードして、複素数を適切な形式で出力します。

したがって、入力がc1 =2 + 3i c2 =5-2iの場合、出力は(7.00 + 1.00i)、(-3.00 + 5.00i)、(16.00 + 11.00i)、(0.14 + 0.66i)になります。 )、3.61、5.39。

これを解決するには、次の手順に従います-

  • 実数部reと虚数部imで複雑なクラスを定義する
  • 関数add()を定義します。これには時間がかかります
  • (re + o.re、im + o.im)で新しいComplexオブジェクトを返します
  • 関数sub()を定義します。これには時間がかかります
  • (re -​​-o.re、im --o.im)で新しいComplexオブジェクトを返します
  • 関数mul()を定義します。これには時間がかかります
  • (re * o.re -im * o.im、re * o.im + im * o.re)で新しいComplexオブジェクトを返します
  • 関数div()を定義します。これには時間がかかります
  • m:=o.re * o.re + o.im * o.im
  • ((re * o.re + im * o.im)/ m、(im * o.re --re * o.im)/ m)で新しい複素数オブジェクトを返します
  • 関数mod()を定義します。これには時間がかかります
  • (re * re + im * im)の平方根を返す
  • オーバーロード__str__()。
  • imが0と同じ場合、
    • 小数点以下2桁までの戻り値
  • reが0と同じ場合、
    • 小数点以下2桁までのimを返します
  • im <0の場合、
    • return re --im i、両方(reとimは小数点以下第2位まで)
  • それ以外の場合、
    • return re + im i、両方(reとimは小数点以下第2位まで)

理解を深めるために、次の実装を見てみましょう

from math import sqrt
class Complex:
   def __init__(self, real, imag):
      self.re = real
      self.im = imag

   def __add__(self, o):
      return Complex(self.re+o.re, self.im+o.im)

   def __sub__(self, o):
      return Complex(self.re-o.re, self.im-o.im)

   def __mul__(self, o):
      return Complex(self.re*o.re-self.im*o.im, self.re * o.im + self.im * o.re)

   def __truediv__(self, o):
      m = o.re * o.re + o.im * o.im
      return Complex((self.re * o.re + self.im * o.im)/m, (self.im * o.re - self.re * o.im)/m)

   def __str__(self):
      if self.im == 0:
         return '%.2f' % self.re
      if self.re == 0:
         return '%.2fi' % self.im
      if self.im < 0:
         return '%.2f - %.2fi' % (self.re, -self.im)
      else:
         return '%.2f + %.2fi' % (self.re, self.im)
      def mod(self):
         return sqrt(self.re*self.re+self.im*self.im)

def solve(comp1, comp2):
   print(comp1 + comp2)
   print(comp1 - comp2)
   print(comp1 * comp2)
   print(comp1 / comp2)
   print('%.2f' % comp1.mod())
   print('%.2f' % comp2.mod())

comp1 = Complex(2, 3)
comp2 = Complex(5, -2)
solve(comp1, comp2)

入力

2, 3
5, -2

出力

7.00 + 1.00i
-3.00 + 5.00i
16.00 + 11.00i
0.14 + 0.66i
3.61
5.39

  1. n番目のカタラン数のPythonプログラム

    この記事では、n番目のカタラン数の計算について学習します。 カタラン数 再帰式-によって定義される自然数のシーケンスです。 $$ C_ {0} =1 \:and \:C_ {n + 1} =\ displaystyle \ sum \ Limits_ {i =0} ^ n C_ {i} C_ {n-i} for \:n \ geq0; $$ n =0、1、2、3、…の最初のいくつかのカタラン数は 1、1、2、5、14、42、132、429、..............です。 .... カタラン数は、再帰と動的計画法の両方で取得できます。その実装を見てみましょう。 アプローチ1:再

  2. 与えられた数がフィボナッチ数であるかどうかをチェックする方法のためのPythonプログラム?

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数nが与えられたら、nがフィボナッチ数であるかどうかを確認します n番目のフィボナッチ数は前の2つのフィボナッチ数の合計であることは誰もが知っています。しかし、それらは漸化式以外の興味深い関係も提供します。 (5 * n2 + 4)または(5 * n2 – 4)が完全な正方形である場合に限り、数値は本質的にフィボナッチです。 このプロパティを使用して、数値がフィボナッチであるかどうかを確認します。 では、Pythonスクリプトの実装を見てみましょう- 例 import math # if x is p