Главная Регистрация Вход Электротермические Установки и Системы Пятница, 24.11.2017, 06:38
  Работа с комплексными числами в Delphi - Форум Пишите нам на el-03@mail.ru | Приветствую Вас Гость | RSS

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Программирование и проектирование » Языки программирования » Работа с комплексными числами в Delphi
Работа с комплексными числами в Delphi
FedinMAДата: Понедельник, 05.05.2008, 17:03 | Сообщение # 1
Асс. каф. ФЭМАЭК
Группа: Модераторы
Сообщений: 227
Награды: 1
Репутация: 11
Статус: Offline
Конкретно проблема состоит в следующем: необходимо составить матрицу с комплексными элементами, при этом увеличивать в два раза размерность матрицы из-за отдельной работы с действительными и мнимыми частями особого желания нет..

Учиться надо так, чтобы это было тебе в радость.
 
DVKДата: Понедельник, 05.05.2008, 18:44 | Сообщение # 2
Группа: Удаленные





Раз тут народу мало обитает, я, незная дельфи, позволю себе написать, а точнее расказать, как я себе представляю решение: (я на перле когда-то пытался писать, так что не пинайте - там вообще типизация отсутствует smile )

1) Можно числа как строки хранить, если дельфи умеет работать с матрицами строк. Но в это памяти съест много.
2) Если допускается погрешность, можно "скленить действительную и мнимую часть (модуль и угол) в виде: RRRRRIIIII (MMMMMMAAAA).
Только обратные преобразования как-то смущают. И почему в 2 раза размерность увеличится? Верно: размерность +1.

 
FedinMAДата: Среда, 07.05.2008, 12:54 | Сообщение # 3
Асс. каф. ФЭМАЭК
Группа: Модераторы
Сообщений: 227
Награды: 1
Репутация: 11
Статус: Offline
Quote (DVK)
И почему в 2 раза размерность увеличится? Верно: размерность +1.

Положим, что размерность матрицы исходной системы комплексных уравнений равна 100 (100х100=10000 элементов матрицы). Каждое из этих 100 уравнений распадается, в свою очередь, на 2 уравнения: для действительной и мнимой частей. Тогда размерность квадратной матрицы становится равной 200, т.е. состоять она будет уже из 200х200=40000 элементов, из которых не менее половины, как ты понимаешь, будут нулевыми.

Вообще задача эта вчера уже была решена, но тема, естественно, продолжает оставаться актуальной.


Учиться надо так, чтобы это было тебе в радость.
 
DVKДата: Четверг, 27.11.2008, 19:09 | Сообщение # 4
Группа: Удаленные





OMG. Этож почему 200х200?
Было: 100х100х1 -> стало: 100х100х2.
 
FedinMAДата: Четверг, 27.11.2008, 22:28 | Сообщение # 5
Асс. каф. ФЭМАЭК
Группа: Модераторы
Сообщений: 227
Награды: 1
Репутация: 11
Статус: Offline
Quote (DVK)
100х100х2

Это же трехмерный массив ...
Мы вообще немного подзабыли термины. На самом деле, конечно же, размерность вообще не изменится (как была 2, так и останется), изменится размер.
Но ход мыслей я, кажется, понял. Действительно, казалось бы можно составить две матрицы размером 100х100 для Re и Im частей и решить две системы из 10000 уравнений, т.е. всего 20000 уравнений, а не 40000, как писалось выше, а нет..не получится. Дело в том, что как действительные, так и мнимые части вектор-столбца неизвестных входят одновременно и в вещественную, и в мнимую части каждого из уравнений системы.


Учиться надо так, чтобы это было тебе в радость.
 
DVKДата: Четверг, 27.11.2008, 22:42 | Сообщение # 6
Группа: Удаленные





Может я просто не понял. Какая матрица имелась ввиду? Матрица СЛАУ? Или Массив для хранения даннных?
 
FedinMAДата: Четверг, 27.11.2008, 22:57 | Сообщение # 7
Асс. каф. ФЭМАЭК
Группа: Модераторы
Сообщений: 227
Награды: 1
Репутация: 11
Статус: Offline
Именно матрица А СЛАУ A*x=b.

Учиться надо так, чтобы это было тебе в радость.
 
GarryДата: Четверг, 20.10.2011, 18:34 | Сообщение # 8
Школьник
Группа: Проверенные
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
Когда такое требовалось, составлял одномерную матрицу записей, которые в свою очередь и были комплексным числом. Либо в форме - длина вектора, угол, либо x,y. А для операций с элементами составить простенькие процедурки. Хотя сейчас уже есть аддоны для дельфи для работы с комплексными числами.
 
JuKOДата: Пятница, 21.10.2011, 16:59 | Сообщение # 9
Аспирант
Группа: Модераторы
Сообщений: 157
Награды: 2
Репутация: 7
Статус: Offline
Может стоит сделать гайд по решению данной проблемы и выложить его на сайте для всех страждущих?
Кто возьмется?


Jedem Das Seine
 
GarryДата: Понедельник, 24.10.2011, 13:41 | Сообщение # 10
Школьник
Группа: Проверенные
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
Code

type
    ComplexRI = Record
      Re,Im:real;
    end;
{или}   
      ComplexAF = Record
      a,fi:real;
    end;
{Логично использовать оба вида записей для облегчения работы и исключения путаницы при выполнении различных операций. Качественно обе записи абсолютно одинаковые, и различаются только именем записи и именем полей. }

var
    С1:array[1..100] of ComplexRI;
    C2:array[1..100] of ComplexAF;
begin

{тело программы}

end;

это пока только описание матриц комплексных чисел, потом приведу описание процедур для работы с ними


Сообщение отредактировал Garry - Понедельник, 24.10.2011, 13:43
 
Форум » Программирование и проектирование » Языки программирования » Работа с комплексными числами в Delphi
Страница 1 из 11
Поиск:

 

Copyright DEADalus © 2008-2017 Случайным встречам посвящается...
Яндекс цитирования