Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизКак возвести в 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.048 c