Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Вниз

Степень в Паскале.   Найти похожие ветки 

 
Miwa   (2002-04-19 11:01) [0]

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


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

Конечно :)
если 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)


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

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


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

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


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

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

:)))

>Miwa © (19.04.02 11:01):

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


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


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

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


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

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


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

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

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


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

я хотел сказать, что операция возведения отрицательного числа в степень с показателем, не представимым в виде 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<0
в случае целой степени та же функция отработает правильно в любом случае (uses Math)


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

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



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

Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.017 c
3-17469
Кирилл2
2002-04-11 18:58
2002.05.06
DBGrid+16 цветов = глюк


4-17725
amamed_3071
2002-03-01 08:43
2002.05.06
Помагите с Attach -ом


1-17629
Ptushenko Denis
2002-04-23 07:54
2002.05.06
Где можно взять компанент DirectX для Delphi6 ?


1-17539
VJar
2002-04-24 00:08
2002.05.06
Как проверить запуск приложения?


6-17651
Pat
2002-02-22 00:48
2002.05.06
NMFTP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский