powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегрузка оператора (комплексные числа)
15 сообщений из 15, страница 1 из 1
Перегрузка оператора (комплексные числа)
    #39233752
sigli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такое задание и некий код , как здесь реализовать перезагрузку операторов ?



Код: plaintext
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.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
#include <iostream>
#include <locale>
using namespace std;



class ComplexNumber{

public:
	ComplexNumber(){
		cout<<"Constructor"<<endl;
	}
	void set_modul(double _p){
		p=_p;
	}
	
	double get_modul(){
		return p;
	}
	void set_argument(double _f){
		f=_f;
	}
	double get_argument(){
		return f;
	}
	void form(){
		cout<<"\nТригонометрическая форма комплексного числа: ";
		cout<<p<<"*(cos("<<f<<") + i*sin("<<f<<"))"<<endl<<endl;
		cout<<"Алгебраическая форма комплексного числа: ";
		cout<<p<<"*exp(i*"<<f<<")"<<endl;
	}
	~ComplexNumber(){
		cout<<"\nDestructor"<<endl;
	}
		
private:
	double p,f;
};


int main(){
	setlocale(LC_ALL,"ukr");
	ComplexNumber number;
	double p,f,p1=0.0,f1=0.0,p2=0.0,f2=0.0,p3=0.0,f3=0.0;

	cout<<"\nМодуль комплексного числа 1: ";
	cin>>p;

	cout<<"Аргумент комплексного числа 1: ";
	cin>>f;

	number.set_modul(p);
	number.set_argument(f);
	number.form();

	cout<<"\nКомплексное число 1: ";
	cout<<p<<"+"<<"e^"<<"i*"<<f<<endl;

	//------------------------

	cout<<"\nМодуль комплексного числа 2: ";
	cin>>p1;

	cout<<"Аргумент комплексного числа 2: ";
	cin>>f1;

	number.set_modul(p1);
	number.set_argument(f1);

	cout<<"\nКомплексное число 2: ";
	cout<<p1<<"+"<<"e^"<<"i*"<<f1<<endl;

	//------------------------

	cout<<"\nМодуль комплексного числа 3: ";
	cin>>p2;

	cout<<"Аргумент комплексного числа 3: ";
	cin>>f2;

	number.set_modul(p2);
	number.set_argument(f2);

	cout<<"\nКомплексное число 3: ";
	cout<<p2<<"+"<<"e^"<<"i*"<<f2<<endl;

	//------------------------

	cout<<"\nМодуль комплексного числа 4: ";
	cin>>p3;

	cout<<"Аргумент комплексного числа 4: ";
	cin>>f3;

	number.set_modul(p3);
	number.set_argument(f3);

	cout<<"\nКомплексное число 4: ";
	cout<<p3<<"+"<<"e^"<<"i*"<<f3<<endl;
	//------------------------
}
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39233777
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigli перезагрузку операторов
Вас отчислят, ничего страшного
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39233803
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigli,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class ComplexNumber{

public:
	ComplexNumber(){
		cout<<"Constructor"<<endl;
	}
// ...
        ComplexNumber operator +(const ComplexNumber &rh) const {
              // implementation
        }
// ...
};



и так далее.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39236924
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оператор "плюс" логичнее сделать отдельно, можно например другом если нужно..

в вобще вот
http://en.cppreference.com/w/cpp/numeric/complex
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237170
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно. А сколько строк кода надо будет написать если я хочу умножать обычные числа (Number)
на комплексные ComplexNumber и на матрицы MatrixOfNumber.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237185
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИнтересно. А сколько строк кода надо будет написать если я хочу умножать обычные числа (Number)
на комплексные ComplexNumber и на матрицы MatrixOfNumber.
а если в наличии float и double варианты комплексных?
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237198
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonИнтересно. А сколько строк кода надо будет написать если я хочу умножать обычные числа (Number)
на комплексные ComplexNumber и на матрицы MatrixOfNumber.

Привет, а тебе ехать или шашечки ?

Если ехать, то постановку задачи нужно понимать,
в большенстве прикладных задач
вместо комплЕксного счисления проще использовать тригонометрию.

И вобще с современными GPU проекция вещественных числел
на множество натуральных числел
( комплексное счисление на регистрах CPU ) имеет смысл
в очень редких случаях очень глубокой и тонкой оптимизации
обьемных вычислений.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kmaytonИнтересно. А сколько строк кода надо будет написать если я хочу умножать обычные числа (Number)
на комплексные ComplexNumber и на матрицы MatrixOfNumber.

Привет, а тебе ехать или шашечки ?
Нет я хочу вот как-то вот как в МатКаде.

Код: plaintext
1.
2.
3.
4.
5.
Number n=Number(10.0);
ComplexNumber c=ComplexNumber(3.0,1.0);
MatrixOfNumber m=IdentityMatrix(2);

res=n*c*m;



Пока без оптимизаций.

Имею право? Но интересует меня другое?

Мои запросы растут линейно. А как будет расти объем нужного кода?
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237218
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonд0kпропущено...


Привет, а тебе ехать или шашечки ?
Нет я хочу вот как-то вот как в МатКаде.

Код: plaintext
1.
2.
3.
4.
5.
Number n=Number(10.0);
ComplexNumber c=ComplexNumber(3.0,1.0);
MatrixOfNumber m=IdentityMatrix(2);

res=n*c*m;



Пока без оптимизаций.

Имею право? Но интересует меня другое?

Мои запросы растут линейно. А как будет расти объем нужного кода?

Если ты спрячешь операции с комплексными числами
за перегрузкой операторов то обьем кода не сильно увеличтся, а
такты процессора будут расти как минимум в арифметической прогресии.

При правильной постановке задачи и выборе алгоритма,
все это с оптимизируется до тригонометрических
операций без прогресии тактов на CPU.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237225
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonд0kпропущено...


Привет, а тебе ехать или шашечки ?
Нет я хочу вот как-то вот как в МатКаде.

Код: plaintext
1.
2.
3.
4.
5.
Number n=Number(10.0);
ComplexNumber c=ComplexNumber(3.0,1.0);
MatrixOfNumber m=IdentityMatrix(2);

res=n*c*m;



Пока без оптимизаций.

Имею право? Но интересует меня другое?

Мои запросы растут линейно. А как будет расти объем нужного кода?


Я прошу прощения , а у тебя сколько пространственных измерений
в задаче ?

Если ты уже используешь вещественные аргументы ?

Ты моделируешь оптимальную укладку шаров в 100500-мерном простарстве?
Хочешь оптимизировать алгоритм ADSL сжатия под хранение ГИС ?
:)
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237231
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док как всегда обломал

Я искал границы разумной генерализации. Тоесть считать всё в матрицах или имплменить дохренища
перегруженных функций или мета-кода или вообще обобщить сам метод умножения

ПыСы. Шары я не укладывал если чо.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237239
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДок как всегда обломал

Я искал границы разумной генерализации. Тоесть считать всё в матрицах или имплменить дохренища
перегруженных функций или мета-кода или вообще обобщить сам метод умножения

ПыСы. Шары я не укладывал если чо.

Я спросил тебе шашечки или ехать ?
авторРассмотрим плоскость с прямоугольной системой координат. Каждому комплексному числу z=x+iy сопоставим точку плоскости с координатами \left\{ x, y \right\} (а также радиус-вектор, соединяющий начало координат с этой точкой). Такая плоскость называется комплексной (или плоскостью Аргана). Вещественные числа на ней занимают горизонтальную ось, мнимая единица изображается единицей на вертикальной оси; по этой причине горизонтальная и вертикальная оси называются соответственно вещественной и мнимой осями.

Часто бывает удобно рассматривать на комплексной плоскости также полярную систему координат, в которой координатами точки являются расстояние до начала координат (модуль) и угол радиус-вектора точки (показанного синей стрелкой на рисунке) с горизонтальной осью (аргумент).


Комплексное счисление нужно как абстракция , что бы не тянуть
с собой 100500 мерую систему координат в формулах.
Когда матформулы разворачиваются в такты процессора , то
комплексное счисление ни разу не панацея.
Комплексное счисление аналог темплейтов в С++
который умешьнает количество видимого кода
на экране , но код для компилятора
количество кода межет увеличивать в прогрессии.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237264
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилsigli перезагрузку операторов
Вас отчислят, ничего страшного

Если он скажет что комплекстое счисление над вещественными числами
в программировании удел быдлокодеров, а постановку
задачи нужно ставить через тригонометрию на GPU , но не выгонят,
а еще и в аспирантуру предложат :)
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237296
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДок как всегда обломал

Я искал границы разумной генерализации. Тоесть считать всё в матрицах или имплменить дохренища
перегруженных функций или мета-кода или вообще обобщить сам метод умножения

ПыСы. Шары я не укладывал если чо.

Конечнов матрицах, оптом на GPU .....

Потому что эта пергрузка будет вызвать
пустые переключениея контекстов выполнения CPU-GPU
если окажется производительность флопсов CPU нехватает
и нужно использовать GPU
и по этой причине перегрузку придется соптимизировать.

Единственое место, где комплексное счисление имеет место на CPU с перегрузкой,
это использование целых ( натуральных ) числел в аргументах.
...
Рейтинг: 0 / 0
Перегрузка оператора (комплексные числа)
    #39237312
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилпропущено...

Вас отчислят, ничего страшного

Если он скажет что комплекстое счисление над вещественными числами
в программировании удел быдлокодеров , а постановку
задачи нужно ставить через тригонометрию на GPU , но не выгонят,
а еще и в аспирантуру предложат :)

зы правильно оформил , что бы без обид.....
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегрузка оператора (комплексные числа)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]