from math import cos, sin, sqrt, atan2
class Complex: #Класс комплексных чисел
def __init__(self, real, imag):
self.real = real
self.imag = imag
def __str__(self): # Строковое представление объекта числа
sign = '+' if self.imag >= 0 else ''
if self.imag == 0:
return '{}'.format(self.real)
else:
return '{}{}{}i'.format(self.real, sign, self.imag)
def __repr__(self): # Представление в сыром виде объекта числа
sign = '+' if self.imag >= 0 else ''
if self.imag == 0:
return '{}'.format(self.real)
return '{}{}{}i'.format(self.real, sign, self.imag)
class ComplexCalc:
def add(self, c1, c2): # сложение
real = c1.real + c2.real
imag = c1.imag + c2.imag
return Complex(real, imag)
def sub(self, c1, c2): # вычитание
real = c1.real - c2.real
imag = c1.imag - c2.imag
return Complex(real, imag)
def mul(self, c1, c2): # умножение
real = c1.real * c2.real - c1.imag * c2.imag
imag = c1.imag * c2.real + c1.real * c2.imag
return Complex(real, imag)
def truediv(self, c1, c2): # деление
real = (c1.real * c2.real + c1.imag * c2.imag) / ((c2.real ** 2) + (c2.imag ** 2))
imag = (c1.real * c2.real - c1.imag * c2.imag) / ((c2.real ** 2) + (c2.imag ** 2))
return Complex(real, imag)
def abs(self, c):
return (c.real ** 2 + c.imag ** 2) ** 0.5
def pow(self, c, n): # степень
phi = atan2(c.imag, c.real)
r = sqrt(c.real * c.real + c.imag * c.imag)
R = r ** n
Phi = n * phi
real = R * cos(Phi)
imag = R * sin(Phi)
return Complex(real, imag)
A = []
C = []
calc = ComplexCalc()
for i in range(1, 10): # заполение массива
num = Complex(i, i)
A.append(num)
print('Массив А', A)
for i in range(len(A)): # вычисление массива С
if i == 0:
C.append(calc.abs(A[i + 1]))
elif i == (len(A) - 1):
C.append(calc.abs(A[i - 1]))
else:
C.append(calc.add(calc.abs(A[i - 1]), calc.abs(A[i + 1])))
print('Массив C:', C)
Доведите до ума пожалуйста функцию pow? Результат не очень выдает.
В принципе все готово. Подправить возведение в степень и еще одно задание. Вот я вообще не пойму его смысла. Как это сделать , если у нас всего одна строка? Ну и суть задания вообще не понятна.
"Дан массив(ну я все сделал списком, так что далее вместо массив будет список) комплексных чисел А. Получить массив , каждая строка которого получается возведением в степень, равную номеру этой строки в массиве A.