Цикл "repeat until"

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
Аватара пользователя
Надюха
Сообщения: 1
Зарегистрирован: 06 ноя 2007, 08:26
Откуда: Львов
Контактная информация:

06 ноя 2007, 08:39

Нужно вычислить функцию двумя методами: как сумму ряда и непосредственно, подставляя значение в формулу. Вроде все правильно, но сумму значений выводит неправильную, в следствие чего полученная погрешность не совпадает с заданной.
f=1/(1-x); x=0.72; d=1e-5; a n-ое равно х в степени n.

Код: Выделить всё

program R9d;
const
	n0: shortint=0;
	d: real =1e-5;
var
	x, a, F, S: real;
	n: byte;
BEGIN
   writeln (‘Vvedit6 zna4enn9 argymenty x’);
   readln (x); 	                                 
   a:=1; S:=0; n:=n0; 	                                 
   repeat 	                                 
	S:=S+a;                                     
	n:=n+1; a:=exp(n*ln(x))/x;                     
	writeln (n:4, a:12:5, S:12:5);    
   until abs(a)<d;                                        
   F:=1/(1-x); 	                                 
   writeln (‘Syma r9dy’, S:12:5, ‘Fynkci9’:15, F:12:5); 
   writeln (‘Poxubku: Zadana’, d:8);
   writeln (‘Dos9gnyta’:15, abs(F-S):8);
END.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

07 ноя 2007, 12:59

Если вы заметили, F и S в конце отличаются на единицу. Может в этом дело, может Х в степени 0 включать не надо? Тогда погрешности практически совпадают.
It's a long way to the top if you wanna rock'n'roll
Ответить