IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Turbo Pascal метод симпсона и точность, надо добавить эпсилон
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский

Репутация: -  1  +


Очень нужна помощь.. В общем суть- вычислить интеграл методом симпсона.. Всё считает,но еще нужен эпсилон- точность,которую надо забивать при расчете( напр. 0,1 ;0,01 и т.д.). Я не могу сообразить как вставить эпсилон сюда.. Я учусь только программировать, подошла к преподу- а он даже объяснить ничего не может((надеюсь на вашу помощь.... уже долго сижу с этой проблемой и никак не могу понять... вот код:
program Simpson;
uses crt;
{integriruemaya funkciya}
function F(x:Real):Real;


begin
F:=exp(2*sin(x)) * sin(5 + 2* cos(x) );
end;

var a,b,h,x: real;
i,n: integer; {n-chislo tochek na interv}
integ: real;

begin
clrscr;
{interval integrirovaniya}

a:=0;
b:=2*pi;

{osnovnaya programma}

write ('Vvedite kolichestvo razbieniy intervala (chetnoe) n= '); readln(n);
if (n mod 2) > 0 then
begin
n:=n+1;
writeln('Chislo n bilo vvedeno nechetnoe i bilo zameneno na n=',n);
end;
h:=(b-a)/n;
integ:=F(a)+F(b)+4*F(a+h);
for i:=1 to (n div 2 ) -1 do
begin

x:=a+2*h*i;
integ:=integ + 2*F(x) + 4*F(x+h);
end;
integ:=h*integ/3;



writeln('Integral= ',integ:10:6);
readln;
end.



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Точность можно применить следующим образом:
1. Объявить функцию для вычисления интеграла методом Симпсона
FUNCTION Sympson(a, b : Real; n : Integer) : Real;
или
TYPE TFunction = FUNCTION (x : Real) : Real;
FUNCTION Sympson(a, b : Real; f:TFunction; n : Integer) : Real;
в неё передавать помимо прочего количество интервалов n.
2. В основной программе функцию вызывать несколько раз, и каждый раз удваивать количество интервалов n.
Разница между двумя приближёнными вычислениями и будет погрешность.

После этой вводной уже легко пристроить таинственную эпсилон: в цикле вычислять интеграл до тех пор, пока разность между приближениями не станет меньше эпсилон (не забывая удваивать n).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 13:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name