Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помощь в нахождении ошибки в ряде Тейлора

Автор: _NooB_ 30.09.2010 17:49

Здравствуйте. Задание: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от Хнач до Хкон с шагом h с точностью e.
Таблица должна содержать значение аргумента, функции и количество просуммированных членов ряда.
Пример: e^x=1+x+x^2/2!+x^3/3!+...+x^n/n! (Прошу прощения, что вручную)

Сама программа с ошибкой - не могу найти ошибку:

Program name;
var xk,xn,h,e:real;
x,fx,fx1,s,a:real;
i,j,n:integer;
BEGIN
writeln('Vvedite xk,xn,h,e');
readln(xk,xn,h,e);
writeln('Vi4islit funkcii s pomosiu rada Teilora');
writeln;
writeln('__________')
writeln(' Nn X fx fx1 n ');
writeln;
n:=trunc((xk-xn)/h)+1;
For i:=1 to n do
begin
x:-xn+(j-1)*h;
s:=1;
a:=1;
j:=1;
repeat
writeln(a:10:2,j:10);
readln;
a:=a*x/j;
s:=s+a;
inc(j);
until a>e;
fx:=s;
fx1:=exp(x);
writeln(' ',i:5,' ',x:8:2,' ',fx:8:3,' ',fx1:8:3,' ',j:5);
end;
writeln('__________');
readln;
end.

Автор: volvo 30.09.2010 18:57

Во-первых, исправь синтаксические ошибки, а во-вторых, в строке №26 (там где until), знак поменяй с "больше" на "меньше"...

Автор: _NooB_ 1.10.2010 0:23

Одна из ошибок как раз и была в этом - знак, как Е может быть больше А, когда точность Е задается, к примеру, 0.001, а А, к примеру, = 3

Автор: volvo 1.10.2010 0:27

Одна из твоих ошибок - это непонимание того, что Until заканчивается, когда условие становится истинным, в отличие от While. Проще говоря, там обратное условие.

Repeat ... Until (условие) - это Продолжать ... Пока (условие = False), как только станет True - все, стоп...

Автор: _NooB_ 1.10.2010 1:27

В итоге мне всего лишь надо поменять знак? Но так вначал и было, пока преподаватель меня не поправил с этим(((
Но итог пока тот же: вывод на таблицу пока идет с ерундой ответов - я могу вводить разные значения, а ответ может быть тот же.
Посмотрите, пожалуйста, может я еще что упустил? smile.gif