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

Вниз

Алгоритм возведения числа в произвольную степень   Найти похожие ветки 

 
ArtemESC ©   (2005-10-07 19:54) [0]

Мне нужна общая схема этого алгоритма...
{Вроде бы есть какой то метод разложения в ряды?}


 
Eraser ©   (2005-10-07 20:01) [1]


> ArtemESC ©   (07.10.05 19:54)

c := exp(b*ln(a));,
Power из Math.pas


 
vrem   (2005-10-07 20:07) [2]

два ряда изучить - вычисления экспоненты и натурального логарифма,
применить [1]


 
ArtemESC ©   (2005-10-07 20:09) [3]

>>Eraser
Спасибо, но ты меня не понял.


Мне нужен общий алгоритм вычисления...
А не Delphi - йская реализация.


 
Eraser ©   (2005-10-07 20:14) [4]


> ArtemESC ©   (07.10.05 20:09) [3]

Всмысле алоритм вычисления логарифма?
Тогда смотри справочник по математики, где описаны числиные методы.


 
Lamer@fools.ua ©   (2005-10-07 21:13) [5]

>>ArtemESC ©   (07.10.05 20:09) [3]

[1] - это и есть общий алгоритм вычисления.


 
default ©   (2005-10-07 21:19) [6]

Lamer@fools.ua ©   (07.10.05 21:13) [5]
тогда скажите чему равно Ln(0), например, раз про общность заикнулись


 
Lamer@fools.ua ©   (2005-10-07 21:22) [7]

>>default ©   (07.10.05 21:19) [6]

Бесконечность.


 
begin...end ©   (2005-10-07 21:24) [8]

> Lamer@fools.ua ©   (07.10.05 21:22) [7]

Э-э-э... Т.е. число e в степени "бесконечность" равно нулю?

:о)


 
Lamer@fools.ua ©   (2005-10-07 21:24) [9]

Обманул. Минус бесконечность, конечно.


 
default ©   (2005-10-07 21:25) [10]

Lamer@fools.ua ©   (07.10.05 21:22) [7]
бесконечность понятие теоретическое, хотя, в процессоре и существует понятие inf, но там условность
а Ln(-5)?


 
Lamer@fools.ua ©   (2005-10-07 21:26) [11]

>>begin...end ©   (07.10.05 21:24) [8]

Ну вот. Поймали на горячем. Сразу говорю: стыдно.


 
Lamer@fools.ua ©   (2005-10-07 21:27) [12]

>>default ©   (07.10.05 21:25) [10]

Могу ошибаться, но, наверное, уже что-то комплексное будет. Либо вообще не будет.


 
default ©   (2005-10-07 21:28) [13]

Lamer@fools.ua ©   (07.10.05 21:26) [11]
не сказали же что +бесконечность:)


 
default ©   (2005-10-07 21:29) [14]

вообщем, Power из Math не при всех входных данных корректен
в местном факе вроде даже есть его доделка


 
default ©   (2005-10-07 21:35) [15]

"function Power(const Base, Exponent: Extended): Extended;
begin
 if Exponent = 0.0 then
   Result := 1.0               { n**0 = 1 }
 else if (Base = 0.0) and (Exponent > 0.0) then
   Result := 0.0               { 0**n = 0, n > 0 }
 else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then
   Result := IntPower(Base, Integer(Trunc(Exponent)))
 else
   Result := Exp(Exponent * Ln(Base))
end"
к примеру, на Power(-2, 3.5) будет ошибка


 
Lamer@fools.ua ©   (2005-10-07 22:10) [16]

>>default ©   (07.10.05 21:35) [15]

>к примеру, на Power(-2, 3.5) будет ошибка

Было бы странно, если бы её не было, учитывая то, что функция работает c действительными аргументами и возвращает действительное число.


 
default ©   (2005-10-07 22:16) [17]

Lamer@fools.ua ©   (07.10.05 22:10) [16]
да, верно, но это не снимает ошибки борландовой ф-ции ибо Power(-8, 1/3) должно давать -2, но Power это не понимает


 
Lamer@fools.ua ©   (2005-10-07 23:25) [18]

>>default ©   (07.10.05 22:16) [17]

Тогда функцию нужно объявлять по-другому. Число 1/3 не получится записать конечной двоичной дробью.


 
default ©   (2005-10-07 23:28) [19]

Lamer@fools.ua ©   (07.10.05 23:25) [18]
есть доделка Power, объявление менять не требуется


 
palva ©   (2005-10-07 23:36) [20]

А какое число эта доделка возвращает при следующем обращении?

Power(-1, 1/2)

Тут два варианта i и -i. Но функция должна возвращать Extended.


 
default ©   (2005-10-07 23:39) [21]

palva ©   (07.10.05 23:36) [20]
"функция работает c действительными аргументами и возвращает действительное число."
на комплексные числа Power не притендует
всего лишь нужно учесть ситуацию вроде Power(-8, 1/3)=-2


 
Lamer@fools.ua ©   (2005-10-07 23:47) [22]

>>default ©   (07.10.05 23:28) [19]

Я рад. Это секретная разработка ФСБ? :o)


 
palva ©   (2005-10-07 23:50) [23]

Одно из значений Power(-8, 1/3) очень близко к действительному числу -2. Я не написал, что точно равно, поскольку значение 1/3 передается функции в приближенном виде. Данное число -2 и берется в качестве результата, а другие два результата игнорируются. Но это в данном случае. В общем случае результат будет комплексным и, возможно, далеким от какого нибудь действительного числа. Поэтому я и спросил, что будет возвращено, если написать Power(-1, 1/2)


 
default ©   (2005-10-08 00:01) [24]

Lamer@fools.ua ©   (07.10.05 23:47) [22]
да нет почему
если брать степени X=1/N(и отрицательные базисы), где N - натуральное
то нужно убедиться в нечётности N, например, через
if Odd(Trunc(1/X))
и потом результатом взять -Exp(Exponent * Ln(Abs(Base)))


 
Lamer@fools.ua ©   (2005-10-08 02:21) [25]

>>default ©   (08.10.05 00:01) [24]

А погрешность?

Если (-8)^0.333(3) = -2, то (-8)^0.33333333333334, например, чёрт его знает, чему там равняется.



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

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

Наверх





Память: 0.5 MB
Время: 0.034 c
14-1128760068
Buss
2005-10-08 12:27
2005.10.30
Фраза


1-1128432113
Dell3r
2005-10-04 17:21
2005.10.30
Find in DBRichEdit


14-1128489705
IfBeginThenEnd
2005-10-05 09:21
2005.10.30
Утечка памяти


14-1128622635
NewWonder
2005-10-06 22:17
2005.10.30
Html


8-1112943093
vidiv
2005-04-08 10:51
2005.10.30
Драйвер виртуальной звуковой карты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский