Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
8 / 5 / 1
Регистрация: 15.12.2020
Сообщений: 349

Класс Комплексное число

07.03.2021, 18:58. Показов 4855. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Плз.Нужна помощь! Понятия не имею как правильно реализовать данный класс
Создать class Комплексное число (Complex), который должен быть:
0.конструктор, задающий значение числа в тригонометрической форме: через
модуль r=IzI и аргумент (x = rcosf, y = rsinf)
1. метод __str__ для превращения в строку для использовании в функции print
2.перегружен оператор «+» для добавления к текущему комплексного
числа другого комплексного числа
3. перегружен оператор «-» для вычитания из текущего комплексного
числа другого комплексного числа
4. перегружен оператор "*" для умножения текущего комплексного числа
на другое комплексное число
5. перегружен оператор "/" для деления текущего комплексного числа на
другое комплексное число
6. метод для нахождения модуля комплексного числа

Все что дали так в пример вот такой код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Point:
    def __init__(self, x, y): # конструктор класса
        self.x = x
        self.y = y
    def setX(self, x):
        self.x = x
    def __str__(self): # преобразование объекта в строку
        return '(' + str(self.x) + ', ' + str(self.y) + ')'
     def __eq__(self, other): # перегружен "=="
        if self.x == other.x and self.y == other.y: return True
 
        return False
      def __add__(self, other): # перегружен "+"
        return Point(self.x + other.x, self.y + other.y)
      def __hash__(self):
        return 17*self.x + self.y
 
a = Point(1,2)
b = Point(3,1)
c = a + b
print a is b
print a == b
print c
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2021, 18:58
Ответы с готовыми решениями:

Почему выводит комплексное число?
Фрагмент кода: a = int(input('Коэффициент a: ')) b = int(input('Коэффициент b: ')) c = int(input('Коэффициент c: ')) p =...

Как возвести комплексное число в степень?
Все сделал, кроме возведения в степень. HELP! Задание: Реализовать в виде класса набор подпрограмм, для выполнения следующих операций...

Дано комплексное число z=x+iy. Возвести его в заданную степень N
Дано комплексное число z=x+iy. Возвести его в заданную степень N. Помогите пожалуйста на питоне. Заранее огромное спасибо)

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
07.03.2021, 20:07
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import math
 
class Complex:
    
    def __init__(self,r,a):
        self.__re=r*math.cos(a)
        self.__im=r*math.sin(a)
        
    def get_re(self):
        return self.__re
    def set_re(self,v):
        raise AttributeError
    def del_re(self):
        raise AttributeError
    re=property(get_re,set_re,del_re,"Действительная часть read-only")   
    
    def get_im(self):
        return self.__im
    def set_im(self,v):
        raise AttributeError
    def del_im(self):
        raise AttributeError
    im=property(get_im,set_im,del_im,"Мнимая часть read-only")       
    
    def __str__(self):
        if abs(self.__im)>1.0e-15:
            if self.__im<0:
                sim="-"
            else:
                sim="+"
            return "("+str(self.__re)+sim+"I*"+str(abs(self.__im))+")"
        else:     
            return "("+str(self.__re)+"+I*0)"
        
    def toTrig(x,y):
        if abs(y)>1.0e-15:
            return (math.sqrt(x**2+y**2),math.atan(y/x))
        elif x>0:
            return (math.sqrt(x**2+y**2),0)
        else:
            return (math.sqrt(x**2+y**2),math.pi)
            
    def __add__(self,o):
        re_sum=self.__re+o.__re
        im_sum=self.__im+o.__im
        (r_sum,a_sum)=Complex.toTrig(re_sum,im_sum)
        return Complex(r_sum,a_sum) 
        
    def __sub__(self,o):
        re_sub=self.__re-o.__re
        im_sub=self.__im-o.__im
        (r_sub,a_sub)=Complex.toTrig(re_sub,im_sub)
        return Complex(r_sub,a_sub) 
        
    def __mul__(self,o):
        re_pro=self.__re*o.__re-self.__im*o.__im
        im_pro=self.__im*o.__re+self.__re*o.__im
        (r_pro,a_pro)=Complex.toTrig(re_pro,im_pro)
        return Complex(r_pro,a_pro) 
 
    def __truediv__(self,o):
        a=self.__re
        b=self.__im
        c=o.__re
        d=o.__im
        zz=c**2+d**2
        aa=(a*c+b*d)/zz
        bb=(b*c-a*d)/zz
        (r_div,a_div)=Complex.toTrig(aa,bb)
        return Complex(r_div,a_div)
        
    def cabs(self):
        return math.sqrt(self.__re**2+self.__im**2)
4
8 / 5 / 1
Регистрация: 15.12.2020
Сообщений: 349
28.03.2021, 20:44  [ТС]
Не очень понимаю что выходит с разницей, тоби ж прописываю:
a = Complex(1, pi/2)
b = Complex(1, 0)
c = a+b
d = a/b
g = a*b
k = a-b
print(c, d, k, g)
Выходит
(1.0000000000000002+I*1.0000000000000002 ) (6.123233995736766e-17+I*1.0) (0.9999999999999998-I*1.0) (6.123233995736766e-17+I*1.0)
И вот получается на данном моменте (0.9999999999999998-I*1.0) захожу в тупик

print (a-b)
должно быть 1 + i
и если запринтиты в методе, перегружает -, то все ок (ре, им)
-0.9999999999999999 1.0
но затем при преобразовании в триг форму и принты от нее что-то идет не так и ответ:
(0.9999999999999998-I * 1.0)
где-то свичнуло знак и не могу понять где в вашем коде
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
28.03.2021, 20:58
Цитата Сообщение от VictorVAlduin Посмотреть сообщение
print (a-b)
должно быть 1 + i
- почему же?

a=i
b=1

a-b=1-i Что не так?
0
8 / 5 / 1
Регистрация: 15.12.2020
Сообщений: 349
28.03.2021, 21:02  [ТС]
А все , понял спасибо!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2021, 21:02
Помогаю со студенческими работами здесь

Дано комплексное число z=x+iy. Возвести его в заданную степень N
Дано комплексное число z=x+iy. Возвести его в заданную степень N. Помогите пожалуйста на питоне. Заранее огромное спасибо!))

Дано комплексное число z=x+iy. Найти косинус комплексного числа z
Дано комплексное число z=x+iy. Найти косинус комплексного числа z. Помогите пожалуйста на питоне. Заранее спасибо!

Написать программу, переводящую комплексное число, записанное в алгебраической форме в тригонометрическую
Написать программу, переводящую комплексное число, записанное в алгебраической форме в тригонометрическую (определить модуль и аргумент)

Комплексное число
В этой задаче вам дается комплексное число, и вы должны вычислить его модуль и аргумент (в радианах). input: Одна строка с комплексным...

Найти комплексное число
Даны комплексные числа в документе формула помогите пожалуйста на питоне благодарю


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru