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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> Интегрирование методом Симсона (вывод погрешности), Не сходятся результаты.
kvadrat
сообщение 19.12.2008 19:23
Сообщение #1


Пионер
**

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

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


Ответ в паскале несовпадает с ответом в Маткаде (в прикреплённом рисунке)

program Simpson;

{integriruemaya funkciya}
function F(x:Real):Real;
begin
F:=-21/(sqr(6-7*x));
end;

function F1(x:Real):Real;
begin
F1:=14*(6-7*X)*(6-7*X)*(6-7*X)*(-1);
end;

var a,b,h,x,pogr :real;
n,i :integer;
integ :real;

begin
write('Vvedite nachalo integrirovaniya a='); readln(a);
write('Vvedite konec integrirovaniya b='); readln(b);
write('Vvedite kolichestvo razbieniy intervala (chetnoe chislo) n='); readln(n);
if (n mod 2)>0 then
begin
n:=n+1;
writeln('Chislo n bylo vvedeno nechetnoe ono bylo 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/2);
pogr:=abs((((b-a)*exp(ln(h)*4))/180)*F1(a));
end;
integ:=h*integ/3;

writeln('Integral = ',integ:0:15);
writeln('pogreshnost=',pogr:0:15);
end.


Прикрепленное изображение
Почему так? blink.gif

Сообщение отредактировано: kvadrat - 19.12.2008 19:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 19.12.2008 21:30
Сообщение #2


N337
****

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

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


Во первых, integ:=integ+2*F(x)+4*F(x+h) - не h/2;

Во вторых, тем же MathCad можно было правильно посчитать 4-ю производную:
function F1(x:Real):Real;
begin
F1:=-6050520/exp(ln(6-7*x)*6);
end;



Сообщение отредактировано: xds - 19.12.2008 21:47


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.04.2024 13:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"