Jump to content
СофтФорум - всё о компьютерах и не только

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


 Share

Recommended Posts

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

Код:

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

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

Link to comment
Share on other sites

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. Да и прямое вычисление членов ряда по исходной формуле неэкономично, лучше использовать рекуррентный метод - вычисление каждого члена ряда через предыдущий, это резко сокращает объем вычислений, подробнее в топике Вычисление значения суммы членов бесконечного ряда.

Edited by Тролль
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...