Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2018, 22:42   #1
Danny10
 
Регистрация: 08.05.2009
Сообщений: 3
По умолчанию Логарифм комплексного числа

нужно написать процедуру, которая считала бы логарифм комплексного числа

Unit complexn;
Interface
type
complex= record
re, im: real;
end;
procedure Logc (b: complex; var c: complex);
const c: complex= (re: 0.1; im: -1);
implementation

procedure LogC;
begin
c.re:=ln(sqrt(sqr(b.re)+sqr(b.im))) ;
c.im:= arctan(b.im/b.re);
end; {logC}
end.
Данная штука работает, но неверно.

Последний раз редактировалось Danny10; 26.01.2018 в 23:16.
Danny10 вне форума Ответить с цитированием
Старый 26.01.2018, 23:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ну так пиши, а здесь не решатель задач

Покажите свои наработки, конкретные вопросы и т.п.
http://www.programmersforum.ru/announcement.php?f=31

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.01.2018, 23:17   #3
Danny10
 
Регистрация: 08.05.2009
Сообщений: 3
По умолчанию

Исправил
нужно написать процедуру, которая считала бы логарифм комплексного числа

Unit complexn;
Interface
type
complex= record
re, im: real;
end;
procedure Logc (b: complex; var c: complex);
const c: complex= (re: 0.1; im: -1);
implementation

procedure LogC;
begin
c.re:=ln(sqrt(sqr(b.re)+sqr(b.im))) ;
c.im:= arctan(b.im/b.re);
end; {logC}
end.
Данная штука работает, но неверно.
Danny10 вне форума Ответить с цитированием
Старый 27.01.2018, 07:34   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Код:
function LogC(b:complex): complex;
begin
     Result.re:=ln(sqrt(sqr(b.re)+sqr(b.im))) ;
     Result.im:= arctan(b.im/b.re);
end; {logC}
Black Fregat вне форума Ответить с цитированием
Старый 28.01.2018, 05:07   #5
Danny10
 
Регистрация: 08.05.2009
Сообщений: 3
По умолчанию

ты не заметил, что сверху тоже самое написано. оно работает неверно.
возьми число -1-2i и посмотри, что твоя функция выдаст и что выдаст калькулятор, https://www.kontrolnaya-rabota.ru/s/kopleksnyie-chisla/
и плюс это должен быть паскаль
Danny10 вне форума Ответить с цитированием
Старый 28.01.2018, 10:00   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Да, действительно поспешил, проверил только для первой четверти.
Для второй и третьей четверти нужно делать коррекцию аргумента на пи и -пи соответственно.

А ещё для мнимой оси арктангенс упадет, нужно брать плюс/минус пи/2 явно.

В общем, куча ветвлений в зависимости от знаков b.re и b.im
Black Fregat вне форума Ответить с цитированием
Старый 28.01.2018, 10:15   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

главное значение должно быть в интервале (−пи,пи]. В случае ТС нужно -пи к результату мнимой части
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование перезагрузки операторов для комплексного числа MAx721 Общие вопросы C/C++ 2 04.10.2015 09:02
C++ Builder возведение комплексного числа в целочисленную степень mexmexmex Помощь студентам 3 04.12.2011 10:58
Корень из комплексного числа в С++ Versiti Помощь студентам 0 24.10.2011 20:51
Как извлечь корень n-степени из комплексного числа Natasha-pomosh Помощь студентам 7 18.01.2010 18:54
описание комплексного числа!!! Medik07 Помощь студентам 0 02.11.2009 22:21