Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизКак реализовать возведение числа в произвольную степень? Найти похожие ветки
← →
A JI E LLI A (2003-11-29 21:29) [0]Подскажите, как можно реализовать возведение числа в произвольную степень, например 2.2, 5.69 и т.д., плиз!
← →
Anatoly Podgoretsky (2003-11-29 21:43) [1]По английски это Power
← →
Александр из Минска (2003-11-29 21:58) [2]Да, да... Power в модуле Math
← →
Mr.Nobody (2003-11-29 22:32) [3]А еще можно выпендриться и реализовать самому...
a=b^k => ln(a)=ln(b^k) => ln(a)=k*ln(b) => exp(ln(a))=exp(k*ln(a)) => a=exp(k*ln(a))
т.е. в Delphi exp(k*ln(a)) даст Вам a в степени k
← →
Александр из Минска (2003-12-01 16:08) [4]Mr.Nobody
Наверное Вы имели ввиду exp(k*ln(b)) (b - число; k - степень)
А знаете ли Вы, что эта штука не пройдет, когда у Вас число b < 0!!!
← →
Floppy (2003-12-01 16:19) [5]>Александр из Минска © (01.12.03 16:08) [4]
А каким образом ВЫ это реализуете "вручную", без Дельфи (или это ГЛЮК Дельфи)?
Если знаете, выложите решение для отрицательного "b" и дробного (НЕ ЧЁТНОГО) "k".
Спасибо
← →
Думкин (2003-12-01 17:40) [6]
> [5] Floppy (01.12.03 16:19)
А в чем проблема? Одно условие и все, а поделить всегда можно.
← →
Александр из Минска (2003-12-01 17:48) [7]Я же уже писал, что в модуле Math (unit ..., Math;) есть Функция для возведения любого числа в любую степень!
← →
nikkie (2003-12-01 18:09) [8]>Александр из Минска
чушь не порите
function Power(const Base, Exponent: Extended): Extended;
Description
Power raises Base to any power. For fractional exponents or exponents greater than MaxInt, Base must be greater than 0.
← →
Александр из Минска (2003-12-02 20:17) [9]to nikkie:
Не знаю, кто тут чушь порет, но у меня все прекрасно работает!
ShowMessage(FloatToStr(Power(-5, 3))); //выводит -125
ShowMessage(FloatToStr(Power(-5, 2))); //выводит 25
ShowMessage(FloatToStr(Power(-5, -2))); //выводит 0.04
ShowMessage(FloatToStr(Power(-5, -3))); //выводит -0.008
Все РАБОТАЕТ НОРМАЛЬНО!!!
← →
Nikolay M. (2003-12-02 20:25) [10]
> Александр из Минска © (02.12.03 20:17) [9]
For fractional exponents or exponents greater than MaxInt, Base must be greater than 0.
Математику давно проходили? И, похоже, все больше мимо?
← →
Александр из Минска (2003-12-02 22:44) [11]to Nikolay M.
Можете по-русски написать? Все же работает... Что Вам не нравится?
А математику я до сих пор изучаю (10-ый класс)!
← →
Александр из Минска (2003-12-02 23:00) [12]Все понятно... Но к сожалению, я этого не знаю!
← →
Nikolay M. (2003-12-03 09:14) [13]
> Александр из Минска ©
Объясняю доступно, на пальцах и легкоусвояемо.
Всем, даже школьникам, известно, что при возведении отрицательного числа в четную степень получится положительное число ( (-2)^2 = (-2)*(-2) = 4), при возведении в нечетную - получится отрицательное число ( (-2)^3 = (-2)*(-2)*(-2) = -8).
В частном случае отрицательное число можно иногда (зависит от четности n и m) возвести в степень вида n/m: a^(n/m) = корень m-й степени из (a^n). В общем случае для произвольного дробного числа этого сделать нельзя.
← →
Думкин (2003-12-03 10:42) [14]> [13] Nikolay M. © (03.12.03 09:14)
Можно, только надо в комплексные числа окунаться.
> [9] Александр из Минска © (02.12.03 20:17)
Попробуй
ShowMessage(FloatToStr(Power(-5.3, 3.2)));
ShowMessage(FloatToStr(Power(-5.3, -3.2)));
← →
Nikolay M. (2003-12-03 11:01) [15]
> Думкин © (03.12.03 10:42) [14]
Угу. А есть еще гиперкомплексные. А можно вообще не зацикливаться на вещественных числах, а работать с произвольными группами или полями. А еще я и не такие слова знаю :?)
Тока не уверен, что Math.Power меня поймет :?)
← →
Amoeba (2003-12-03 12:55) [16]Посмотри ф-ию
function XtoY (const X, Y: Extended): Extended;
в библиотеке ESBMaths
http://www.esbconsult.com.au/downloads.html
http://www.esbconsult.com.au/esbmaths.zip
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c