|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
25.12.2011, 13:42 | #1 (permalink) |
Новичок
Регистрация: 25.12.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вычислить приближённый интеграл в Pascal ABC
Вычисл. приближ. интеграл использ. след. квадратур. формулы: а) прямоугольн. б) трапец. в) симпсона с двумя квадратур. узлами. Для всех этих формул. оценить погреш.интегрир. Найти точное знач дан интеграла |
25.12.2011, 13:42 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Аналогичные посты уже размещались на нашем форуме, вот их список Вычислить методом тарапеции в VBA Помогите вычислить функцию Помогите пожайлуста, вычислить функцию Вычислить сумму |
25.12.2011, 21:50 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Значит, так. Ничего про квадратурные (кратные) узлы и прочую заумь не знаю, но вот взял свою старую программу по численному интегрированию и переделал под Вашу функцию. Тут, правда, делается так: число разбиений промежутка удваивается, пока не будет достигнута нужная точность. Посмотрите, может быть пригодится:
Код:
Const a=0.0; b=1.0; Function F(x:Real):Real; begin F:=1.0/(x+1.0); end; Function Antiderivative(x:Real):Real; begin Antiderivative:=Ln(1+x); end; Procedure Rectangle; var i,N:Integer; Sum1,Sum2,h:Real; begin N:=5; h:=(b-a)/N; Sum1:=0; for i:=0 to N-1 do Sum1:=Sum1+h*F(a+h*i); Sum2:=Sum1; Repeat Sum1:=Sum2; N:=N*2; h:=(b-a)/N; Sum2:=0; for i:=0 to N-1 do Sum2:=Sum2+h*F(a+h*i); Until ABS(Sum2-Sum1)<0.001; WriteLn('Rectangle: ', Sum2:10:5); end; Procedure Trapezium; var i,N:Integer; Sum1,Sum2,h:Real; begin N:=5; h:=(b-a)/N; Sum1:=(F(a)+F(b))/2*h; for i:=1 to N-1 do Sum1:=Sum1+h*F(a+h*i); Sum2:=Sum1; Repeat Sum1:=Sum2; N:=N*2; h:=(b-a)/N; Sum2:=(F(a)+F(b))/2*h; for i:=1 to N-1 do Sum2:=Sum2+h*F(a+h*i); Until ABS(Sum2-Sum1)<0.001; WriteLn('Trapezium: ', Sum2:10:5); end; Procedure Simpson; var i,N:Integer; Sum1,Sum2,h:Real; begin N:=2; h:=(b-a)/(2*N); Sum1:=(F(a)+F(b))/3*h; for i:=1 to N do Sum1:=Sum1+4.0*h/3.0*F(a+h*(2*i-1)); for i:=2 to N do Sum1:=Sum1+2.0*h/3.0*F(a+h*(2*i-2)); Sum2:=Sum1; Repeat Sum1:=Sum2; N:=N*2; h:=(b-a)/(2*N); Sum2:=(F(a)+F(b))/3*h; for i:=1 to N do Sum2:=Sum2+4.0*h/3.0*F(a+h*(2*i-1)); for i:=2 to N do Sum2:=Sum2+2.0*h/3.0*F(a+h*(2*i-2)); Until ABS(Sum2-Sum1)<0.001; WriteLn('Simpson: ', Sum2:10:5); end; BEGIN Rectangle; Trapezium; Simpson; WriteLn('Accurate value:', (Antiderivative(b)-Antiderivative(a)):10:5); ReadLn; END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
26.12.2011, 21:55 | #6 (permalink) |
Новичок
Регистрация: 25.12.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасибо и на этом)))
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|