Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.053 c
2-1128610711
SMATMP
2005-10-06 18:58
2005.10.30
property Bitmap.ScanLine


8-1113670496
Comrade
2005-04-16 20:54
2005.10.30
Яркость, Цвет, Контрастность Видео


1-1128674267
Yozch1
2005-10-07 12:37
2005.10.30
Проблема с кодирование темы сообщения в idMessage


6-1121436507
DSKalugin
2005-07-15 18:08
2005.10.30
Проверить дату обновления файла на WEB Server-е


14-1129093537
Ega23
2005-10-12 09:05
2005.10.30
С днем рождения! 12 октября





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