Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на сумму ряда
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
sintanial
Помогите плиз разобраться. Короче пытаюсь сдать задачу учителю по программированию, но он не как не принимает. Говорит что что то не правельно но тоно не говорит что именно =).
Вот задачка
При заданном значении x и eps вычислить s(x,e), прекратив вычисления кода очередной член суммы по абсолютной елечине станет меньше e. При том же значении x вычеслить функцию y(x). Близость значений s(x,e) и y(x) указывает на правельность вычислений (ЭТО ЗАДАНИЕ ИЗ МЕТОДИЧКИ)

Вот сами функции и ряд

s(x,e)=x-x^2/2+x^3/3-x^4/4+x^5/5-...; y(x)=ln(1+x); [-1<x<=1]

Я программу написал, она была простенька, но после этого преподаватель попросил что бы я написал программу во первых с помощью функции во вторых, нужно вычислять сумму ряда при трех разных значениях e+ каждое значение е нужно вводить самому. Дальше еще сделать так что бы на экран выводилось количество итераций, и выводить достигнута ли точность или нет.+ еще конечное количество итераций задавать самому.
Вот код, что тута не правельно =) ?
 
const eps=1e-7;  
var x,c,y,e:real;
	i,l,j:integer;
	fl:boolean;
procedure summa(x,e:real; l:integer;var s:real;var f:boolean; var n:integer);
var a:real;
begin
  n:=1;
  a:=x;  {первый член}
  s:=a;
  while (abs(a)>e) and (n<l) do  
	begin
	  n:=n+1;
	  a:=a*(-1)*n/(n+1);  {рекурентная формула}
	  s:=s+a;
	end;
  s:=s*2;
	if abs(a)<e then
	  f:=true
	else
	  f:=false;
end;

begin
  writeln('vvedite x,l');
  readln(x,l);
  y:=ln(x+1);
  for i:=1 to 3 do
	begin
	  writeln ('vvedite e');
	  readln(e);
	  summa(x,e,l,c,fl,j);
	  if fl then
	  writeln('tochno')
	  else
	  writeln ('ne tochno');
	  writeln('s=',c,'  y=',y,'  iteracii=',j);
	end;
end.



Добавлено через 12 мин.
И еще помогите с еще одной проблемкой. У меня задание
Нужно найти предел последовательности an=(1-cos(2/n))/1/n*sin(1/n) при n->бесконечность.(предел этой последовательность заранее дан он равен "2" . Дан он для того что бы сравнить примерное значение вычисляемого на паскале последовательности и 2)

Я предел вычислил через вот такой код

var an,an1,eps,x,y,z,c:real;
i,n:integer;
begin
  readln(eps);
  an1:=(1-cos(2))/sin(1);
  i:=0;
  n:=1;
  repeat
    n:=n+1;
  an:=an1;
    x:=1/n;
    y:=1/n+x;
    an1:=(1-cos(y))/(1/n*sin(x));
    i:=i+1;
  until abs(an1-an)<eps;
    writeln(an1);
    writeln(i);
end.



А как вычислить предел вот такой последовательности ? an= 1/(n+1)+1/(n+2)+...+1/2*n n->бесконечность. (Lim (an)= ln2 тоже дан заранее для сравнения)

Подскажите пожалуйста

Добавлено через 10 мин.
Подскажите пожааааалуйста =) ммммплииииз
Client
Цитата
А как вычислить предел вот такой последовательности ? an= 1/(n+1)+1/(n+2)+...+1/2*n

Делаешь цикл с параметром, значение которого прибавляешь к N вот здесь
1/(n+i)
sintanial
Цитата(Client @ 14.12.2007 21:21) *

Делаешь цикл с параметром, значение которого прибавляешь к N вот здесь
1/(n+i)



Кхм кхм чуток не понял. =) Можно по точнее =)
Client
. . . 
For i:=1 to n do
   s:=s+1/(n+i);
. . .
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.