Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 12:28   #1
fos1k
Новичок
Джуниор
 
Регистрация: 20.12.2009
Сообщений: 4
По умолчанию Приближенное вычисление опред. интеграла. Поправте код.

Вообщем дано задание решить опред. интеграл a=1 b=2

и дан пример кода только для другой функции

Код:
program metod;
uses crt;
Type Funct=Function(s:real):Real;
Var a,b:real;
n:integer;
res:real;
Function F(x:real):real;
Begin
F:=1/(1+x*x);
End;
Procedure Rect(a,b:real;n:integer; F:Funct; var y: real);
var x,h:real;
i:integer;
begin
x:=a;
h:=(b-a)/n;
y:=0;
For i:=1 to n do
Begin
x:=x+h;
y:=y+F(x);
End;
y:=y*h
end;
Procedure Trap(a,b:real;n:integer; F:Funct; var y:real);
Var x,h:real;
i,n1:integer;
Begin
h:=(b-a)/n;
n1:=n-1;
y:=(F(a)+F(b))*0.5;
For i:=1 to n1 do
Begin
x:=a+i*h;
y:=y+F(x);
End;
y:=y*h
end;
Procedure Simp(a,b:real;n:integer; F:Funct; var y:real);
Var x,h,y1,y2,y3:real;
i,j,n1,n2:integer;
Begin
n1:=n-1; y2:=0; y3:=0;
h:=(b-a)/n; y1:=F(a)+F(b);
i:=1;
Repeat
x:=a+i*h;
y2:=y2+F(x);
i:=i+2;
until (i>n1); y2:=y2*4;
i:=2;
Repeat
x:=a+i*h;
y3:=y3+F(x);
i:=i+2;
until(i>n1); y3:=y3*2;
y:=h/3*(y1+y2+y3);
End;
Begin
Clrscr;
Write ('Введите a: ');
Readln(a);
Write ('Введите b: ');
Readln(b);
Write ('Введите n: ');
Readln(n);
rect(a,b,n,F,res);
Writeln('Формула прямоугольников: ',res:7:4); Trap(a,b,n,F,res);
Writeln('Формула трапеций: ',res:7:4); Simp(a,b,n,F,res);
Writeln('Формула Симпсона ',res:7:4);
readln;
End.
Код рабочий и все делает замечательно, по логике мне просто надо подставить свою функцию. Но дело в том что этот код работает только в PascalABC, в самом Turbo Pascal 7.0 он жалуется на процедуры, но я не знаю что делать, как заставить его работать в самом TP 7 ? (надо сдать в электронном виде рабочий вариант, а в вузе нету другой проги кроме TP 7 )

Вариант 2 (запасной) как сформировать код без процедур, чтоб он вычислял лишь по какому то одному методу?
fos1k вне форума Ответить с цитированием
Старый 20.12.2009, 18:40   #2
anna_
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 20
По умолчанию

...........................
anna_ вне форума Ответить с цитированием
Старый 20.12.2009, 18:42   #3
fos1k
Новичок
Джуниор
 
Регистрация: 20.12.2009
Сообщений: 4
По умолчанию

может кто нить помочь ??
fos1k вне форума Ответить с цитированием
Старый 20.12.2009, 18:55   #4
tiger
Пользователь
 
Регистрация: 30.03.2008
Сообщений: 52
По умолчанию

Цитата:
Сообщение от fos1k Посмотреть сообщение
может кто нить помочь ??
а что тут сложного? убери F:func со всех процедур а также F при выводе результата.
Код:
//Строчки с изменениями
Procedure Rect(a,b:real;n:integer; var y: real);
Procedure Trap(a,b:real;n:integer; var y:real);
Procedure Simp(a,b:real;n:integer; var y:real);
rect(a,b,n,res);
Writeln('Формула прямоугольников: ',res:7:4); Trap(a,b,n,res);
Writeln('Формула трапеций: ',res:7:4); Simp(a,b,n,res);
tiger вне форума Ответить с цитированием
Старый 20.12.2009, 18:59   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

А если вручную найти неопр интеграл от твоей функции, описать алгебраические действия в подпрограмме function а потом просто
oprint:=F(1)-F(2);
writeln(oprint);
end.
Такое не прокатит? Просто проблемма в нахождении самого неопр интеграла, тут придется несколько раз применять интегрирование по частям. Достаточно долго и трудно.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 20.12.2009, 23:29   #6
fos1k
Новичок
Джуниор
 
Регистрация: 20.12.2009
Сообщений: 4
По умолчанию

tiger спасибо помогло!
fos1k вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приближенное вычисление значения функции cos(x) c++ Отблагодарю голосами в контакте! megavolt91 Помощь студентам 9 25.05.2009 20:26
Вычисление интеграла StudeHt Помощь студентам 1 01.05.2009 19:16
Вычисление определённого интеграла Mr_Frost Помощь студентам 11 14.03.2009 02:09