end; my_func:=s; writeln('s=',s); end; Begin clrscr;
x:=-1; while x<=1 do
begin y:=my_func(x); x:=x+0.1; end;
readkey; End.
мисс_граффити
15.01.2007 1:44
Цитата
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
xlr8
15.01.2007 2:35
люди..я знаю и извеняюсь за то что спрашиваю уже давно избитую тему..но всё таки..я вас очень прошу..я же не прошу с нуля всё это делать..пожалуйста, просто подскажите..
volvo
15.01.2007 4:32
Подсказываю: во-первых, в приведенный тобой ряд функция раскладывается только при 0 <= X <= 1, не забывай это при вводе данных... А во-вторых, я бы делал вот так:
const eps = 0.000001;
var X, s, p: real; p_above: longint;
next: real; n, sign: integer;
begin write('X [0 .. 1] = '); readln(X);
s := 1; p := 1; sign := 1; p_above := 1;
n := 1; repeat if n <= 2 then p_above := 1 else inc(p_above, 2); p := p * X * (p_above / (2 * n)); s := s + sign * p;
sign := - sign; inc(n); until p < eps;
writeln('sqrt(1 + x) = ', s:10:6); writeln('test: ', sqrt(1 + x):10:6); { <--- Это для теста, можно убрать эту строку } readln; end.
xlr8
15.01.2007 4:37
спасибки..будем разбиратся..ВОТ только гадость..если вот с таким условием? я прикрепил правильное изображ. просто устный коммент. плз..
xlr8
15.01.2007 23:04
Function _func(x:real):real;
Var i:integer; sum,p,a,b:extended;
begin i:=1; a:=1; b:=1; p:=1; sum:=1;
while abs(a/b*p)>0.00001 do
begin a:=-a*(2*i-3); p:=p*x; b:=b*2*i; sum:=sum+a/b*p;
i:=i+1; end; _func:=sum;
end;
Всё..вышло..решение собственно вверху..всем спасибо..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.