Форум «Всё о Паскале» _ Задачи _ вычисление F(x)=(1+x)^(5/2) разложением в ряд
Автор: Szug 8.01.2007 0:08
Уважаемые ПРОФИ!!! Очень прошу проверить правильность моего изваяния. Задача: составить программу вычисления F(x)=(1+x)^(5/2) разложением в ряд при |x|<1 c точностью e=0.0001. Вычисления оформить в виде подпрограммы-функции. Вот тело:
Код
Program KR;
Function F(var x:real):real; var Ut,Up,P,e:real; i,n:integer; begin if abs(x)<1+0.001 then begin i:=0; n:=1; e:=0.0001; Up:=1; P:=1; repeat {начало цикла вычисления значений F} Ut:=Up*(2.5-i)*x/n; {вычисление U(k+1)} P:=P+Ut; inc(i); inc(n); Up:=Ut; until abs(Ut)<=e+1e-8; { проверка Е- выход из цикла} F:=p; end else writeln('неверное X'); end; {конец функции}
var x,Fx:real; begin writeln('Введите Х'); readln(x); Fx:=F(x); writeln('F = ',Fx);{вывод на экран} readln; end.
Укажите мне на имеющиеся ошибки, ПОЖАЛУЙСТА! Срочно надо сдать контрольную. СПАСИБО!!!
Извените, ошибочка вышла в условии, уже исправил
Автор: klem4 8.01.2007 0:44
Считает твоя функция неправильно ... Сделай функцию для проверки и сравнивай значение своего Fx с
function RealFunc(x: real): real; begin RealFunc := exp(5 * ln(1 + x)) / 2; // при x = 1, ((x +1)^5) / 2 = 32/2 = 16 end;