Главная страница
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.52 MB
Время: 0.057 c
14-1129023517
dr Tr0jan
2005-10-11 13:38
2005.10.30
Помогите вспомнить название и исполнителя композиции.


2-1128586322
SQL-nik
2005-10-06 12:12
2005.10.30
Помогите с ADO


2-1128689534
Id
2005-10-07 16:52
2005.10.30
Не могу создать базу


2-1128164730
Yura32
2005-10-01 15:05
2005.10.30
Memo


1-1128756784
ShotGun
2005-10-08 11:33
2005.10.30
Как разархивировать программно зип файл?