Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Вычисление среднего геометрического

Автор: BDS 4.05.2003 12:25

Помогите пожалуйста!
Мне нужно вычислить ср. геометрическое на Паскале!
Но я не знаю каким образом можно возвести в степень 1/n или вычислить корень n-ной степени! ???

Если кто знает, помогите пожалуйста!

Автор: Паук 4.05.2003 12:39

Код

(* Функция вычисления степени a^b *)

function power(a,b:real):real;
function relerror(observed,actual:real):real;
begin
    if actual=0.0 then relerror:=abs(observed)
    else relerror:=abs(observed/actual-1);
end;
var
i:byte;
res:real;
begin
if (trunc(B)=B) and (b>0) then
  begin
  res:=1;
  for i:=1 to trunc(B) do
  res:=res*a;
  power:=res;
  exit;
  end;
if a=0 then
  if b=0 then power:=1 else if b<0 then else power:=0
  else if a<0 then if abs(B)< 1e-10 then power:=1
  else if relerror(b,round(B))< 1e-8 then
  power:=(1-2*ord(odd(round(B))))*exp(b*ln(abs(a)))
  else if (relerror(1/b,round(1/B))< 1e-8) and odd(round(1/B)) then
  power:=-exp(b*ln(abs(a)))
  else else power:=exp(b*ln(a))
end;

Автор: BDS 4.05.2003 12:46

Большое спасибо Пауку за эту функцию !!!

Если кому понадобится эта прога - пришлю (вычисление ср. геометрического)

Автор: Паук 4.05.2003 12:52

Присылай конечно эту прогу, другим тоже может понадобиться smile.gif
А прелесть  этой функции как раз в том, что она работает с любыми числами, не обязательно целыми

Автор: Clane 4.05.2003 14:14

Пришли мне эту программу на clane@inbox.ru, расположу на сайте.