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

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

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

> Задача на вычисление интеграла, Вычисление интеграла и значения функций
garry_m
сообщение 8.12.2005 23:55
Сообщение #1


Новичок
*

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

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


И снова привет! Тут мне задали решить задачку, но в итоге, решая ее, я запутался напрочь...

Поставленная задача:
Прикрепленное изображение

Я пытался ее решить, но ничего не выходит увы...
Код:
uses crt;

type tFunct=function(x:real):real;
var sum:real;{peremennaja summi}
x,y,z,e,{-peremennije po usloviju}
a1,a2,b1,b2{intervali dlja functij},
Integ1,Integ2 {-Rezultati rascheta integralov}: real;
{Functija (x^2-1)*10^-2*x}
function f1(x:real):real;far;
var tmp:real;
i:integer;
begin
tmp:=1;
for i:=1 to 3 do tmp:=tmp*((x^2-1)*10^-2*x);
f1:=tmp;
end;
{Functija 1/(ln(x))^2}
function f2(x:real):real;far;
var tmp:real;
i:integer;
begin
tmp:=1;
for i:=1 to 3 do tmp:=tmp*x;
f2:=tmp*1/(x*ln(x)^2);
end;
{Integral}
function integr (x,y,e:real;F:tFunct):real;
var di,dx,sum1,sum2:real;
n:longint;
zf1,zf2,min,max:real;
dd:integer;
begin
di:=y-x; {Dlina intervala}
n:=10; {Nachalnoje znachenije kol-va intervalov}
repeat
dx:=di/n;
sum1:=0; sum2:=0;
z:=x;
while z<y do
begin
zf1:=F(z);zf2:=F(z+dx);
if zf1<zf2 then begin min:=zf1;max:=zf2;end
else begin min:=zf2;max:=zf1;end;
sum1:=sum1+dx*min;
sum2:=sum2+dx*max;
z:=z+dx;
{----v processe.... dlja polzovatelja}
dd:=dd+1;
case dd of
1:write('\');
2:write('|');
3:write('/');
4:write('-');
else
begin dd:=0;write('\');end;
end;
gotoxy(WhereX-1,WhereY);
{----------------------}
end;
write('.');
n:=2*n;
until abs(sum2-sum1)<e;
integr:=sum1;
writeln;
end;

{osnovnaja programma}
begin
clrscr;
repeat
write('Vvedite tochnost vichislenija integrala e: ');
readln(e);
until e>0;
writeln('Po usloviju A1=0 i B1=0.4');
repeat
write('Vvedite interval A..B dlja pervogo integrala: ');
readln(a1,b1);
until a1<b1;
writeln('Po usloviju A2=2.0 i B2=2.5');
repeat
write('Vvedite interval A..B dlja vtorogo integrala: ');
readln(a2,b2);
until a2<b2;
write('Podozhdite idet raschet');
Integ1:=integr(a1,b1,e,f1);
writeln('Integral ot ((x^2-1)*10^-2*x) = ',integ1:12:6);
write('Podozhdite idet raschet');
Integ2:=integr(a2,b2,e,f2);
writeln('Integral ot 1/x*(ln(x))^2 = ',integ2:12:6);
write('Dlja prodolzhenija mazhmite Enter...');
readkey;
end.


Сообщение отредактировано: volvo - 9.12.2005 0:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
klem4
сообщение 9.12.2005 0:22
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Елки-палки, FAQ для красоты сделан ?

FAQ : Численное интергирование, метод прямоугольников

Сообщение отредактировано: klem4 - 9.12.2005 0:23


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
garry_m
сообщение 9.12.2005 21:49
Сообщение #3


Новичок
*

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

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


То, что написано в FAQ мне понятно!
У меня не получается связать все вместе, то что я отпостил. В моей задаче почти все сделано... вот я к вам и обращаюсь за помощью. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.12.2005 21:57
Сообщение #4


Гость






Я не понял, а зачем ты так извращался с функциями F1 и F2? Все же гораздо проще:

uses crt;

type
TFunct = function(x: real): real;

var
x,y,z,e,
a1,a2,b1,b2: real;


function f1(x: real): real; far;
begin
f1 := (sqr(x) - 1) * Exp((-2*x)*Ln(10));
end;

function f2(x: real): real; far;
begin
f2 := 1 / (x * sqr(ln(x)));
end;

{ Integral }
function integr(x, y, e: real; F: TFunct): real;
const
n = 100;
var
sum, shag: real;
i: integer;
begin
shag := (y - x) / n;
sum := 0;
for i := 1 to n - 1 do
sum := sum + F(shag*i + x);

sum := sum + (F(x)+F(y))/2;
integr := (y - x) / n * sum;
end;


{ osnovnaja programma }
begin
clrscr;
repeat
write('Vvedite tochnost vichislenija integrala e: ');
readln(e);
until e>0;
writeln('Po usloviju A1=0 i B1=0.4');
repeat
write('Vvedite interval A..B dlja pervogo integrala: ');
readln(a1,b1);
until a1<b1;
writeln('Po usloviju A2=2.0 i B2=2.5');
repeat
write('Vvedite interval A..B dlja vtorogo integrala: ');
readln(a2,b2);
until a2<b2;
write('Podozhdite idet raschet');
writeln('Integral ot ((x^2-1)*10^-2*x) = ',integr(a1,b1,e,f1):12:6);
write('Podozhdite idet raschet');
writeln('Integral ot 1/x*(ln(x))^2 = ',integr(a2,b2,e,f2):12:6);
write('Dlja prodolzhenija mazhmite Enter...');
readkey;
end.
 К началу страницы 
+ Ответить 
garry_m
сообщение 10.12.2005 12:44
Сообщение #5


Новичок
*

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

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


Да у меня просто не получалось правильно функцию записать. А в программе я действительно намутил. Thnx!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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