Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возведение в нецелую степень 
:(
    Опции темы
Makarofff
Дата 27.2.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 29.1.2005

Репутация: нет
Всего: нет



Возведение в нецелую степень
Как реализовать?
PM MAIL   Вверх
Romtek
Дата 27.2.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 7.12.2004
Где: Холон

Репутация: нет
Всего: 4



A^N = Exp(N * Ln (A)) {для A>0}
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
Makarofff
Дата 27.2.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 29.1.2005

Репутация: нет
Всего: нет



Цитата(Romtek @ 27.2.2005, 12:12)
A^N = Exp(N * Ln (A)) {для A>0}

Как будет для А<0?
PM MAIL   Вверх
dm9
Дата 27.2.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



А для отрицательных чисел операции возведения в степень не существует (кроме частных случаев). Это уже пойдёт переход в комплексную плоскость.

PM MAIL ICQ   Вверх
Aleche
Дата 27.2.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Makaroff!!! ВОТ кое-что написала:
function power(b:real;n:integer):real;
begin
if b=o then power:=0 else
if b<0 then power:= neg(n)*exp(n*ln(-b)) else power:=exp(n*ln(b))
end;(возведение в степень ,n-степень)
function neg( exponent: integer):integer;
begin
if odd(exponent) then neg:=-1 else neg:=1
end;(возведение в степень -1 ) smile smile
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 27.2.2005, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



У ти какая умная!!! smile smile

+ пользуйся тегами кода!!!!

P. S.
Sorry за оффтоп, не удержался!
PM   Вверх
Aleche
Дата 27.2.2005, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Да,да такая!!!!!!!!!!Какие теги????Уже второй раз на форуме спрашиваю -никто не отвечает!!!!А за оффтоп непростительно!!!!!! smile smile
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 27.2.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



[code@=delphi]сам код[/code@]
Без символа @

Это сообщение отредактировал(а) Pakshin A. S. - 27.2.2005, 18:57
PM   Вверх
dm9
Дата 27.2.2005, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



Тэги code.

Нажми на кнопку "КОД", и в поле ввода появятся тэги [ code ][ /code ] (без пробелов у квадратных скобок, сейчас вставил пробелы, чтобы форум их не обработал).

Можно тэги вводить просто руками.

Если пользоваться тэгами [ code ][ /code ], то форум подсветит код в соответствии с правилами того языка программирования, которому посвящён форум.

Можно также явно указать язык программирования (стиль подсветки).
Например, [ code=cpp ][ /code ] подсветит код в стиле C++,
[ code=delphi ][ /code ] - в стиле pascal/delphi.

Пример:

Код
program t;
begin
  write ('Hello, world!');
end.


PM MAIL ICQ   Вверх
Irokez
Дата 27.2.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: нет
Всего: 53



Код

if b=0 then power:=0
else power:= (n/abs(n))*exp(n*ln(abs(b)));

PM   Вверх
Zero
Дата 27.2.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(dm9 @ 27.2.2005, 19:00)
(без пробелов у квадратных скобок, сейчас вставил пробелы, чтобы форум их не обработал)

А ещё можно было написать русские символы кое-где...
[cоde=delphi]

[/code]
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 27.2.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Ну праильно... давайте придумывать как писать примеры... Для комодеров и выше можно использовать коды [mod][/mod]
PM   Вверх
Snowy
Дата 27.2.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



По теме:
А как начет того, что отрицательные числа, возведенные в четную степень становятся положительными?
А числа, возведенные в отрицательную степень равны обратному значению положительной степени?
В коде я этого не заметил...
PM MAIL   Вверх
Snowy
Дата 27.2.2005, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



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

function power(b,n:real):real;
begin
 if b=0 then power:=0 else
 if b<0 then power:= neg(n)*exp(n*ln(-b))
 else begin
   power:=exp(n*ln(b));
   if odd(Round(b)) then power:=-power;    
 end;
end;

Вот так он работает и возводит в в нецелую степень.

Это сообщение отредактировал(а) Snowy - 27.2.2005, 20:14
PM MAIL   Вверх
dm9
Дата 27.2.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



Вот это и есть те исключения smile

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

Что-то типа так:
Код
angle := 180 * Ord (base < 0) * power;
t_angle := Trunc (angle);
Result := Exp (power * Ln (Abs (base)));
if t_angle mod 360 = 180
then Result := -Result;
if (t_angle mod 180 <> 0.0) or (t_angle - angle <> 0.0)
then ShowMessage ('Решение существует только в комплексное плоскости');


Могут быть погрешности, но они примерно равны погрешностям определения целости числа power...

base - основание степени.
power - показатель.

Добавлено @ 20:26
Snowy, ну это не серьёзно smile У тебя код не совсем корректен.

Это сообщение отредактировал(а) dm9 - 27.2.2005, 20:38
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.