Главная страница
    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.043 c
1-1128510294
Gall
2005-10-05 15:04
2005.10.30
Сохранения рисунка


14-1128948874
Green-Templar
2005-10-10 16:54
2005.10.30
Удобочитаемость исходников


4-1125151602
Freez
2005-08-27 18:06
2005.10.30
Узнать имя текущего процесса


14-1128842983
Карелин Артем
2005-10-09 11:29
2005.10.30
Посоветуйте работающую связку виртуальная машина + линукс новый.


14-1128399860
12DFBDD
2005-10-04 08:24
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский