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

Вниз

Как возвести в 0,25 степень   Найти похожие ветки 

 
Гаврилов В.А.   (2005-07-02 13:01) [0]

Уважаемые мастера!

Подскажите пожалуйста как программно возвести число в 0,25 степень. В квадрат знаю, а как в 0,25 степень не знаю.

С уважением Гаврилов В.А.


 
P.N.P. ©   (2005-07-02 13:12) [1]

uses Math;
function Power()


 
A№t0№   (2005-07-02 13:50) [2]

c := exp(a*ln(b));
a - число возводимое в степень b


 
VMcL ©   (2005-07-02 13:55) [3]

или Sqrt(Sqrt(x))


 
uny ©   (2005-07-02 14:46) [4]

если показатель степени представлен в виде дроби = 1/4, 0.25 или 25/100,
1. то числитель этой дроби = "в какую степень нужно возвести основание"
2. знаменатель = "корень какой степени нужно извлечь из полученного в п.1 числа"

т.е. a^0.25 = a^(1/4) = корень 4-й степени из (а^1)


 
isasa ©   (2005-07-02 20:26) [5]

function x_y(x : extended; i : integer) : extended; overload;
var j : integer;
   y : extended;
begin
 if i=0 then Result:=1
 else begin
   y:=1;
   for j:=1 to abs(i) do y:=y*x;
   if i<0 then Result:=1/y
   else        Result:=y;
 end;
end;

function x_y(x : extended; i : extended) : extended; overload;
begin
 Result:=exp(i*ln(x));
end;


 
isasa ©   (2005-07-02 20:30) [6]

или
for j:=1 to abs(i) do y:=y*x;  => y:=x*x_y(x, i-1);


 
isasa ©   (2005-07-02 20:32) [7]

пардон
y:=x*x_y(x, abs(i)-1);


 
Гаврилов В.А.   (2005-07-02 21:32) [8]

Спасибо всем но я сделал так (это пример)
procedure TForm1.Button1Click(Sender: TObject);
var c,c2,c3: real;
begin
       c:=StrToFloat(Vvod100.text);
       c2:=StrToFloat(Edit2.text);
       c3:= exp(c*ln(c2));//с2 - число возводимое в степень с
       RzLineEdit1.Text:= FloatToStrF(c3,ffGeneral,10,5);
end;


 
ferr ©   (2005-07-02 22:09) [9]

Попрубуйте 5^(0.5) и (-1)^3.
Изпользуйте Power.


 
begin...end ©   (2005-07-02 22:11) [10]

"Дети Ивана Кулибина" (с)


 
ferr ©   (2005-07-02 22:12) [11]

нагадил в прошлом посте c примерами(спать пора)....  используйте Power...
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;


 
isasa ©   (2005-07-02 22:26) [12]

begin...end ©   (02.07.05 22:11) [10]
"Дети Ивана Кулибина" (с)

ну-ка, ну-ка.
А в стандарте Паскаля возведение в степень есть?


 
begin...end ©   (2005-07-02 22:29) [13]

> isasa ©   (02.07.05 22:26) [12]
> А в стандарте Паскаля возведение в степень есть?

А тут форум по стандарту Паскаля?


 
isasa ©   (2005-07-02 22:42) [14]

ну-ка, ну-ка.
А в Delphi возведение в степень есть?(как оператор)


 
begin...end ©   (2005-07-02 22:45) [15]

> isasa ©   (02.07.05 22:42) [14]

Ну-ка, ну-ка. Где в исходном вопросе требование возвести число в степень 0,25 оператором?


 
isasa ©   (2005-07-02 23:11) [16]

ну-ка, ну-ка.
Спросили - как
Ответили -
function Power()
function x_y

в у Кулибина как?  :)))))))))))))))


 
uny ©   (2005-07-02 23:32) [17]

begin...end
зачем ворчать, лучше приходить раньше ;)


 
begin...end ©   (2005-07-03 09:16) [18]

> isasa ©   (02.07.05 23:11) [16]

> Спросили - как

Да, спросили: как возвести число в степень 0,25.

> Ответили - ...

А ответили вот что. Вначале посоветовали Power -- стандартное и давно проверенное решение. Затем -- двойной Sqrt -- оригинальное решение, которое, кстати, работать будет быстрее Power. Вот на этом вполне можно было бы и закончить.

Вместо того, чтобы советовать:
а) использовать свойства логарифмов (а именно это свойство уже используется в стандартной и давно проверенной Power), приведя НЕПРАВИЛЬНУЮ формулу [2];
б) функцию возведения числа в ЦЕЛУЮ степень [5];
в) функцию возведения числа в вещественную степень без проверки на границы применимости свойства логарифмов, напр. когда показатель степени равен вещественному нулю [5];
г) использовать якобы существующий оператор ^ [9]
и т.д.


 
ferr ©   (2005-07-03 10:06) [19]

г) Я хотел привести примеры при каких обстоятельствах приведённый автором код не будет работать(ошибся), показав тем самым что надо использовать Power.



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
1-1120394991
Толян
2005-07-03 16:49
2005.07.18
Загрузка кода изи MEMO


1-1120291967
SpyBoy
2005-07-02 12:12
2005.07.18
Without forms


14-1119601537
КаПиБаРа
2005-06-24 12:25
2005.07.18
Стоит ли переходить с дневного на заочное обучение?


3-1118236075
Cooper
2005-06-08 17:07
2005.07.18
Програмирование БД под MS SQL Server


4-1116942710
Aleksandr.
2005-05-24 17:51
2005.07.18
Будет ли работать PostMessage из dll?