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

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

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

 
 Ответить  Открыть новую тему 
> Метод Трапеции и Симпсона
Selena
сообщение 6.12.2005 6:30
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский
Реальное имя: Ольга

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


Помогите пожалуйста дописать программу.
Задача в приложенном документе.

Я не могу сообразить как мне сделать это:"Вычислить разность в количестве итераций"

Вот что у меня получилось:
Program Lab4_2;
Uses Wincrt;
Type
func=Function(xa:Real):Real;
Var
x1,x2,T1,S1,R1,R ,T2,S2, x:Real;
A,B,Exp,Eps:Real;
n1,n2,n:Word;
w:text;

Function Int(xa:Real):Real;Far;
Begin
Int:=((sin(xa*xa+0.5))/((cos(xa*xa+0.5))))/(1+2*xa*xa);
End;

Function MTrap(Aa,Ba:Real;na:Word;Int:func):Real;
Var i:Word; S,x,h:Real;
Begin
h:=(Ba-Aa)/na;
S:=(Int(Aa)+Int(Ba))*0.5;
x:=Aa+h;
For i:=1 to na-1 do
Begin S:=S+Int(x);x:=x+h;End;
MTrap:=S*h;
End;


Function MSims(Aa,Ba:Real;na:Word;Int:Func):Real;
Var i:Word;s,x,h:Real;c:shortint;
Begin
h:=(Ba-Aa)/na;
S:=Int(Aa)+Int(Ba);
c:=1; x:=Aa+h;
For i:=1 to na-1 do
Begin
S:=S+Int(x)*(c+3);
c:=-c;
x:=x+h;
End;
MSims:=S*h/3;
End;


Begin
WriteLn('1. Вычисление значений определенного интеграла');WriteLn;
WriteLn('Введите левую границу интервала');Read(A);
WriteLn('Введите правую границу интервала’);Read(B);
WriteLn('Введите число разбиений n');Read(n);
WriteLn('Введите точность Exp'); Read(Exp);
T1:=MTrap(A,B,n, Int);
repeat
n1:=2*n;
T2:=MTrap(A,B,n1,Int);
R:=Abs(T2-T1);
T1:=T2;
until R<Exp;
WriteLn('Интеграл решенный методом Трапеции равен ',T2:9:7);
WriteLn('Необходимое число интервалов разбиения: ',n1:6);
Writeln;
S1:=MSims(A,B,n, Int);
repeat
n2:=2*n;
S2:=MSims(A,B,n2,Int);
R:=Abs(S2-S1);
S1:=S2;
until R<Exp ;
WriteLn( 'Интеграл решенный методом Симпсона равен ',S2:9:7);
WriteLn('Необходимое число интервалов разбиения: ',n2:6);
End.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 3.06.2008 11:22
Сообщение #2


Гость






правилно
 К началу страницы 
+ Ответить 

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

 



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