Консультация № 139436
07.06.2008, 12:48
0.00 руб.
0 2 2
Уважаемые эксперты, пожалуйста помогите решить задачу, я даже не могу понять с чего сдесь начать, может сдесь нужно с помощью цикла?
Я задачу сохранил скриншотом на рисунке, адрес которого указа в приложении, искренне надеюсь на вашу помощь. Пожалуйста. Заранее спасибо.

Приложение:
http://k750i.wen.ru/676.JPG

Обсуждение

Неизвестный
07.06.2008, 14:12
общий
это ответ
Здравствуйте, Пашков Дмитрий Владимирович!

Решение Вашей задачки в приложении. Единственное, что меня удивило - сумма почему-то стремится к нулю. Если такого быть не должно, сообщите, буду ломать голову дальше.

Приложение:
Program Pr139436; Uses CRT; Var x, eps, p, sum: Real; k: Integer; Begin ClrScr; Write(‘eps = ‘); ReadLn(eps); Write(‘x = ‘); ReadLn(x); if eps < 1e-10 then eps := 1e-10; { eps > 0 всегда! } p := x; k := 0; sum := 0; While abs(p / (2*k + 1)) > eps do begin sum := sum + p / (2*k + 1); inc(k); p := - p * x*x / k; end; WriteLn(‘Summa = ‘, sum); ReadLn; End.
давно
Профессор
401888
1232
07.06.2008, 16:40
общий
это ответ
Здравствуйте, Пашков Дмитрий Владимирович!
В приложении мое решение этой задачи, выполненное точно по условию. Проверил при х от 0,1 до 1 в Excel. Все сходится и что удивительно сумма к нулю не стремится. Просто при малых х она мало изменяется и нужно брать очень высокую точность, до 8-9 знака, чтобы почуствовать разницу. При х=1, разница при различных е более заметна.

Приложение:
uses crt;var k:word; x,e,sum,y:double;function fakt(t:word):longint;{функция факториал}var i,n:integer;beginn:=1;for i:=1 to t don:=n*i;fakt:=n;end;function Step(a:real;b:word):real;{функция степень}var i:integer;n:real;beginn:=1.0;for i:=1 to b don:=n*a;Step:=n;end;begin {начало программы}clrscr;repeatwrite(‘Vvedite 0<x<=1 x=‘); {проверяем правильность ввода х}readln(x);until (x>0)and(x<=1);write(‘e=‘);readln(e);k:=0;y:=step(x,2*k+1)/(fakt(k)*(2*k+1));sum:=y;while y>=e do {пока очередной элемент<e} begin k:=k+1; y:=step(x,2*k+1)/(fakt(k)*(2*k+1)); if k mod 2=0 then sum:=sum+y {если номер положительный} else if k mod 2<>0 then sum:=sum-y; {если отрицательный} end;writeln(‘Summa=‘,sum:5:5);readlnend.
Форма ответа