Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Степень в Паскале.


Miwa ©   (2002-04-19 11:01:00) 

Как можно россчитать сабж? Есть старая формула типа a:=exp(b*ln(c)), но ведь она работает только с с>0. А в других случаях надо проверять знаки для b, c. И потом, при c->0 ln(c)->бескончность. Так есть ли возможность посчитать иначе?


Alx2   (2002-04-22 08:16:00) [1]

>Romkin © (19.04.02 14:29)
см. поле комплексных чисел


Romkin   (2002-04-19 14:29:00) [2]

я хотел сказать, что операция возведения отрицательного числа в степень с показателем, не представимым в виде p/q, где p & q - целые числа, в алгебре не определена, именно по причине того, что возведение в такую степень определяется как exp(b*ln(c)), также не определено возведение отрицательного числа в степень вида p/q где 1. q - четное, 2. p & q - взаимно простые (допустим, 1/2, sqrt(c) - дает ошибку даже на калькуляторе). Условие (2) приводит к тому, что p - нечетное
Так лучше?
Выход: в случае представления степени в виде p/q (q - нечетное, p & q - взаимно простые) просто res := -power(-c,p/q) при c


Alx2   (2002-04-19 14:12:00) [3]

>Как там насчет разложения в ряд? ;о))

Ребята, вы чего?!
Какой на фиг ряд. Для возведения в степень-то. (А если ряд степенной, как в нем возводить?:))
Разве трудно перед a:=exp(b*ln(c)) проверку на допустимость только лишь значения "c" сделать? Если нужно в комплексной форме (чтобы и для отрицательных и для положительных) - то см. Alx2 © (19.04.02 11:14)


Miwa   (2002-04-19 14:06:00) [4]

Да, там как раз то, что мне не понравилось:
For fractional exponents, or |exponents| > MaxInt, base must be > 0.
Как там насчет разложения в ряд? ;о))


VictorT   (2002-04-19 13:55:00) [5]


> Посмотрите исходники функции Power, которая находится в Math.pas и перенесите её в свою программу.

А вот и не заканает, сам глянь


Antiox   (2002-04-19 12:13:00) [6]

отрицательные числа в математике можно возводить только в целую степень

:)))

>Miwa © (19.04.02 11:01):

Посмотрите исходники функции Power, которая находится в Math.pas и перенесите её в свою программу.
Если это не подходит, то в любом случае - всегда можно воспользоваться разложением в ряд с заданной точностью.


Alx2   (2002-04-19 11:51:00) [7]

>отрицательные числа в математике
>можно возводить только в целую степень
Ну-ну...


Romkin   (2002-04-19 11:27:00) [8]

Дробная степень не определена для отрицательных значений, и всегда считается именно по данной формуле. exp(b*ln(c)) ... c^(-b). А при с -> 0 ln(c) -> минус бесконечность, и ехр(b*ln(c)) -> 0
Так что все верно
отрицательные числа в математике можно возводить только в целую степень


Alx2   (2002-04-19 11:14:00) [9]

Конечно :)
если a<>0 то
a^b=exp(b*ln(abs(a)))*cos(b*(1/2-1/2*signum(a))*Pi)+I*exp(b*ln(abs(a)))*sin(b*(1/2-1/2*signum(a))*Pi)
где signum(x)=x/abs(x)


Наверх

Титульная страница Поиск, карта сайта Написать письмо