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

 

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