0

я наткнулся на интересное упражнение, и он говорит: Реализовать функцию х^у, используя стандартные функции Turbo PascalВозведение действительных чисел

Для integer переменных можно использовать for петлю, но я не могу понять, как для работы с переменными real в этом случае.

Я думал о том, как это сделать с помощью Taylor серии (не могу понять, как использовать его для потенцирования), и я также узнал, что x^y = exp(y*log(x)) но есть только ln (натуральный логарифм) в стандартных функций ...

PS Я не прошу вас писать код: дайте мне посоветовать или ссылку или что-то, что поможет решить эту проблему, пожалуйста.

+1

Если только логарифм это вопрос, то вы можете примените формулу журнала и базу изменений. –

+0

@AbhishekBansal, объясните довольно подробно, пожалуйста. – yulian

ответ

3

лог (х) в формуле является натуральный логарифм, так что вы можете использовать

x^y = exp(y*ln(x)) 

без каких-либо сомнений. Оба ехр и пер являются стандартными Turbo Pascal функции

(общая формула х^у = Ь^(у * База-б логарифм х)

+0

Спасибо, я проверю но не могли бы вы объяснить, как вы узнали, что 'log (x)' int задается как 'ln (x)', пожалуйста? – yulian

+0

log (x) - абстрактный логарифм без базовой индикации. Использование опыта подразумевает естественный логарифм. – MBo

1

лог х базы у = п (х)/п (у) = (х войти основание 10)/(вход у основания 10)

Следующая ссылка содержит больше информации о логарифмов. Проверьте раздел «Изменение базы». http://en.wikipedia.org/wiki/List_of_logarithmic_identities

Вы можете изменить базу на естественный логарифм и вычислить соответственно.

For x = 3.2, y = 2.5, 
Say 3.2^2.5 = m 
ln(m) = 2.5*ln(3.2) 
Hence m = exp(2.5 * ln(3.2)) 

На самом деле для выше, вы даже не нужно менять основы

+0

Как это можно применить для 'x: = 3.2' и' y: = 2.5', например? – yulian