Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Не могу вычислить ошибку


Рекомендуемые сообщения

Как ни странно, прога работает, но при изменении параметров ввода результата никакого.

Код:

uses crt;

var e,a,x:real;

n:integer;

begin

clrscr;

e:=0.001;

n:=1;

x:=0.45;

writeln ('Obchislennya znachennya sumi ryadu');

if abs(a)<=e then begin

a:=ln(n+1)*exp(-1)*((ln(2*n)*exp(x))/((2*n)*(2*n-1)));

n:=n+1;

end;

writeln ('Znachennya sumi z zadanou tochnistyu ',e:5:3,' = ',a:5:5);

writeln ('Pidsumovano ',n,' elementiv ryadu');

readln;

end.

Условие:

вычислить сумму ряда с точностью e (эпсилон). Под приближенными значениями суммы ряда с точностью е подразумевается сумма тех додатков, для которых выполняется условие |An|>e

Формулу вклеить не могу, пишу словами:

Сумма от n=1 до бесконечности додатков (-1) в степени (n+1)*(x в степени 2n/(2n*(2n-1))), где:

х=0,45

Спасибо всем заранее.

Ссылка на комментарий
Поделиться на другие сайты

Deather:

Как ни странно, прога работает
Работать-то она работает :) . Работающую прогу написать несложно. Сложно написать прогу, которая работает правильно, а делающую это эффективно - сложнее в квадрате.

Но вернемся к нашим баранам.

if abs(a)<=e then ...

Значит, при первом запуске программы проверяем значение a, которое нам даровали боги. Никто его не задавал. Поэтому

при изменении параметров ввода результата никакого.
При повторных запусках программа ничего вычислять не будет, поскольку значение a, отменяющее вычисления по формуле, будет даровано уже предыдущим запуском программы.

Ну, а дальше при первом запуске программы что-то, конечно, вычисляется, но совсем не то. Формула для члена ряда неправильно записана (правильно, ограничиваясь положительными значениями x, было бы

a:=(2*(n mod 2)-1)*exp(2*n*ln(x))/(2*n*(2*n-1))

), кроме того, цикла в программе нет, значит, вычисляться будет не сумма ряда, а только один член ряда.

P.S. Да и прямое вычисление членов ряда по исходной формуле неэкономично, лучше использовать рекуррентный метод - вычисление каждого члена ряда через предыдущий, это резко сокращает объем вычислений, подробнее в топике Вычисление значения суммы членов бесконечного ряда.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...