Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

Комплексные числа   Найти похожие ветки 

 
Beginner3 ©   (2007-10-04 12:45) [0]

Кто посоветует как в Дельфях решать систему линейных уравнений в комплексных числах. Для электрики.


 
Игорь Шевченко ©   (2007-10-04 12:50) [1]

так же, как в ТОЭ ? Я угадал ?


 
homm ©   (2007-10-04 12:50) [2]

> [0] Beginner3 ©   (04.10.07 12:45)
> Для электрики.

Это одногруппину так зовут? Благородно с твоей стороны взятся ей помочь.


 
Однокамушкин   (2007-10-04 12:52) [3]

Элементарно: два комплексных числа равны тогда и только тогда, когда равны по отдельности их целые и мнимые части, поэтому система из N линейных уравнений c N неизвестными в комплексных числах легко сводится к системе из 2N линейных уравнений с 2N неизвестными в действительных числах, которая затем решается стандартными методами


 
tesseract ©   (2007-10-04 12:54) [4]

В MatchCAD всё делали - отлично решалось :-)


 
Думкин ©   (2007-10-04 13:23) [5]

> Однокамушкин   (04.10.07 12:52) [3]

Больно ты шустрый. Кто сказал, что неизвестные некомплексные числа?


 
Думкин ©   (2007-10-04 13:24) [6]

> Однокамушкин   (04.10.07 12:52) [3]

Хотя сводится. :)


 
Инс ©   (2007-10-04 13:27) [7]


> Кто сказал, что неизвестные некомплексные числа?

Насколько я понял - речь действительно о задаче по ТОЭ, а там неизвестные - либо напряжения узлов (в комплексном виде), либо токи в ветвях (в комплексном виде), либо (комплексные) сопротивления ;-)


 
Думкин ©   (2007-10-04 13:29) [8]

> Инс ©   (04.10.07 13:27) [7]

Дело в другом. Она своидится к вдвое большей размерности. Я в ответе однокаменного не увидел сразу 2. Вот и поспешил. :(


 
Инс ©   (2007-10-04 13:32) [9]


> Думкин ©   (04.10.07 13:29) [8]

А, сорри, теперь я неправильно прочел. Приставку "не" в слове "некомплексные" не заметил. А вообще да, суть не в этом...


 
Mystic ©   (2007-10-04 14:08) [10]

Для того, чтобы решить систему линейных уравнений в любом поле необходимо реализовать операции сложения, умножения и взятия обратного элемента в этом поле, а потом реализовать любой метод решения СЛАУ основываясь на этих операциях.


 
Azize ©   (2007-10-04 16:33) [11]

TComplex=class
 a:Double;
 b:Double;
 constructor Create(a,b:Double);
 Procedure Add(Compl:TComplex);

...

 end;
 
 ...

Procedure TComlex.Add(Compl:TComplex);
Begin
  a:=a+Compl.a;
  b:=b+Compl.b;
End;

...


далее реализуешь алгоритм решения уравнения, я бы даже класс "уравнение" создал, и всё


 
Azize ©   (2007-10-04 16:34) [12]


> Azize ©   (04.10.07 16:33) [11]

да и класс "система уравнений"


 
Azize ©   (2007-10-04 16:41) [13]

если есть принцип решения за небольшую плату готов написать прогу))


 
Думкин ©   (2007-10-05 05:46) [14]

> Azize ©   (04.10.07 16:33) [11]
> TComplex=class

Лучше создать родительский класс с виртуальными методами. А от него уже порождать специальные - действительные числа, комплексные и т.д. Метод решения СЛАУ будет однофигственен, и работать будет с родительским.


 
shlst   (2007-10-05 08:05) [15]

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


 
Ping   (2007-10-05 08:36) [16]

Лучше создать родительский класс с виртуальными методами.

Лучше уж тогда record с методами класса и перегруженными операторами.


 
Думкин ©   (2007-10-05 08:57) [17]

> Ping   (05.10.07 08:36) [16]

Для этого должны быть доступны рекорды с методами класса и перегружаемостью оператора.


 
Ping   (2007-10-05 09:00) [18]

Думкин ©   (05.10.07 08:57) [17]

Их спрятали в Гималаях? :-)


 
Думкин ©   (2007-10-05 09:04) [19]

> Ping   (05.10.07 09:00) [18]

Безусловно. Или сия дичь безусловная принадлежность любой версии Дельфи?


 
Думкин ©   (2007-10-05 09:07) [20]

Да и причем тут рекорд? Сколько полей будет использоваться заранее не известно родителю - 1, 2, 4, ...


 
Ping   (2007-10-05 09:19) [21]

Или сия дичь безусловная принадлежность любой версии Дельфи?

Я как-то указания версии в вопросе не встретил. Так что могу предполагать любую версию, которую захочу...

Да и причем тут рекорд?

Удобнее.

Cколько полей будет использоваться заранее не известно родителю - 1, 2, 4, ...

И что тогда это будут за виртуальные методы "Лучше создать родительский класс с виртуальными методами"? Пример виртуального метода, и что они будут делать?


 
Думкин ©   (2007-10-05 09:21) [22]

> Ping   (05.10.07 09:19) [21]
> Или сия дичь безусловная принадлежность любой версии Дельфи?
>
>
> Я как-то указания версии в вопросе не встретил. Так что
> могу предполагать любую версию, которую захочу...

Вот и покажите чем это удобнее в 7-й версии.

> Да и причем тут рекорд?
>
> Удобнее.

Чем удобнее? Чем грузин?

> И что тогда это будут за виртуальные методы "Лучше создать
> родительский класс с виртуальными методами"? Пример виртуального
> метода, и что они будут делать?

Не виртуальный хотел изначально - абстрактный(но он ведь виртуальный?). А конкретизировать что он делает - в потомке.


 
Думкин ©   (2007-10-05 09:23) [23]

Хотя, что он будет делать - вопрос. :(


 
Ping   (2007-10-05 09:40) [24]

Чем удобнее? Чем грузин?

Использование record - не нужно создавать/удалять экземпляры классов.
Перегруженные операторы - интуитивно понятные операции с числами: "+", "-", вместо методов "Add()", "Sub()". При чем, можно перегрузить операторы для любых типов данных - целых, с плавающей запятой, комплексных... да хоть строчных представлений чисел.

абстрактный(но он ведь виртуальный?)

Методы, в общем случае, могут принимать параметры и могут возвращать результат. Какого типа будут параметры и результат? Экземпляры родительского класса? Ну тогда придется явно приводить типы, что несколько усложняет использование. Если результат - экземпляр класса, то кто будет отвечать за его удаление? Можно, конечно, для автоматического удаления, сделать и подсчет ссылок, но тогда нужно будет использовать интерфейсы. То есть, не все так просто...


 
Думкин ©   (2007-10-05 09:48) [25]

> Ping   (05.10.07 09:40) [24]

1. Да, я для Д7 ориентировался.
2. Да, тут также. Уже сталкивался в одной задаче с таким. С шаблонами бы вышло, а с тем что есть все одно также. Но класс я хотел, как абстрактный описатель других классов потомков и потому написал, что лучше. Причем применить все равно можно также, так что лучшесть только с 2006-го в создании, удалении.


 
Ping   (2007-10-05 10:05) [26]

TBaseClass = class
public
 procedure Add(With: TBaseClass): TBaseClass; virtual; abstract;
end;

TIntegerClass = class(TBaseClass)
private
 FValue: integer;
public
 procedure Add(With: TBaseClass): TBaseClass; override;
 property Value: integer read FValue write FValue;
end;

procedure TIntegerClass.Add(With: TBaseClass); TBaseClass;
begin
 // Создаем результат. Удалит ли его потом тот, кто будет пользоваться классом?
 Result := TIntegerClass.Create;

 // Тут приходится приводить типы
 // Причем контроль того, что With - именно TIntegerClass - только на этапе выполения, что чревато...
 TIntegerClass(Result).FValue := FValue + (With as TIntegerClass).FValue;
end;


И использование:

var
 Int1: TIntegerClass;
 Int2: TIntegerClass;
 Int3: TIntegerClass;
begin
 Int1 := TIntegerClass.Create;
 try
   Int1.Value := 2;
   Int2 := TIntegerClass.Create;
   try
     Int2.Value := 2;
     Int3 := TIntegerClass(Int1.Add(Int2)); // опять приводим типы
     try
        ShowMessage("Result: " + IntToStr(Int3.Value));
     finally
       Int3.Free; // А где же конструктор?
     end;
   finally
     Int2.Free;
   end;
 finally
   Int1.Free;
 end;
 // И это все для того, чтобы просто 2 + 2 = 4
end;


То есть, я все же за record. Ну да, в Delphi 7 ими не воспользуешься. Но и на дворе уже не 2002 год.

P.S. А у меня Delphi 6... :-)


 
Ping   (2007-10-05 10:08) [27]

P.P.S. Ой, function Add(). :-)


 
Думкин ©   (2007-10-05 10:16) [28]

> Ping   (05.10.07 10:05) [26]

Да, все так. Я когда дружественные числа искал с этим сталкивался. Забыл уже. Каюсь.


 
Инс ©   (2007-10-05 10:22) [29]

А зачем возиться с комплексными числами, если в [3] сказано, что система сводится к действительным числам. Просто по отдельности расписываем равенство для вещественных и мнимых частей.

PS: А для комплексных в D7 есть VarCmplx


 
Думкин ©   (2007-10-05 10:27) [30]

> Инс ©   (05.10.07 10:22) [29]

СЛАУ бывают и для других множеств.


 
euru ©   (2007-10-05 10:36) [31]


> Ping   (05.10.07 10:05) [26]
> То есть, я все же за record. Ну да, в Delphi 7 ими не воспользуешься.
>  Но и на дворе уже не 2002 год.
В D7 и раньше есть object.


 
Ping   (2007-10-05 10:46) [32]

В D7 и раньше есть object.

Там нет перегрузки операторов.


 
KSergey ©   (2007-10-05 10:59) [33]

> shlst   (05.10.07 08:05) [15]
> тут такие знатоки все, подскажите образ этого комплексного
> числа.

Ветер.
Он дует в определенном направлении с определенной силой.

Правда - на сколько я понимаю - на воздужных потоках не просто показать сложение комплексных чисел, даже в дальней зоне... Хотя и не знаю, может ошибаюсь.

PS
А может вообще в этом всем сильно ошибаюсь :)


 
Romkin ©   (2007-10-05 11:21) [34]


> Ping   (05.10.07 10:46) [32]
> В D7 и раньше есть object.Там нет перегрузки операторов.
>

Она есть в Delphi 6 и выше, правда, в несколько необычном виде, через custom variants. Модуль с примером уже упомянули, VarCmplx.
А в Delphi 2006 для win32 есть и перегрузка операторов, причем именно для записей.


 
7BE1A792   (2007-10-07 22:12) [35]

Этот специфический эротизм сочетался с неизвестной на Земле обязательностью одежды.
Никто не смел появиться в общественных местах или находиться дома в присутствии других
людей иначе, как полностью прикрыв свое тело.



Страницы: 1 вся ветка

Текущий архив: 2007.11.04;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.02 c
15-1191477876
PPop
2007-10-04 10:04
2007.11.04
Проверить, с какой стороны лежит точка.


2-1192225140
Mozgodol
2007-10-13 01:39
2007.11.04
Нужно покумекать


15-1191264741
PM
2007-10-01 22:52
2007.11.04
новый проект


2-1191572966
Scarllett
2007-10-05 12:29
2007.11.04
URL/HTML открытого окна MS IE


2-1191936276
денизко
2007-10-09 17:24
2007.11.04
отличия Assign от p<>nil