Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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 в 00:16.
Danny10 вне форума   Ответить с цитированием
Старый 27.01.2018, 00:05   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,754
Репутация: 6211
По умолчанию

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

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

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

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

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, 08:34   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 917
Репутация: 667
По умолчанию

Код:

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, 06:07   #5
Danny10
Новичок
 
Регистрация: 08.05.2009
Сообщений: 3
Репутация: 10
По умолчанию

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


19:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru