Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перегрузка оператора (комплексные числа) / 15 сообщений из 15, страница 1 из 1
11.05.2016, 20:28
    #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
11.05.2016, 21:19
    #39233777
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка оператора (комплексные числа)
sigli перезагрузку операторов
Вас отчислят, ничего страшного
...
Рейтинг: 0 / 0
11.05.2016, 21:51
    #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
16.05.2016, 21:35
    #39236924
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка оператора (комплексные числа)
оператор "плюс" логичнее сделать отдельно, можно например другом если нужно..

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

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

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

И вобще с современными GPU проекция вещественных числел
на множество натуральных числел
( комплексное счисление на регистрах CPU ) имеет смысл
в очень редких случаях очень глубокой и тонкой оптимизации
обьемных вычислений.
...
Рейтинг: 0 / 0
17.05.2016, 11:45
    #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
17.05.2016, 11:51
    #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
17.05.2016, 12:01
    #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
17.05.2016, 12:08
    #39237231
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегрузка оператора (комплексные числа)
Док как всегда обломал

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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