Страница: 1 |
Страница: 1 |
Вопрос: Интеграл
Добавлено: 25.09.06 18:27
Автор вопроса: DJ EFFECT
Составить программу для вычисления определенного интеграла методом прямоугольников, трапеции и методом Симпсона...
интеграл (exp(x)*(1+sin(x)))/(1+cos(x)) [0, 1.5]
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #1
Добавлено: 26.09.06 02:07
результат
4.1751256724969823525
Номер ответа: 2
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #2
Добавлено: 26.09.06 10:22
Интересно как соотносится ответ с вопросом?
И что подразумевает вопрос? Что надо бы сделать прогу за ... скоко то чего? Или как то помочь? Если второе, то какие были предприняты усилия?
Номер ответа: 3
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #3
Добавлено: 26.09.06 14:31
Viper
Все вместе.
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 26.09.06 14:51
4.1751256724969823525
Номер ответа: 5
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #5
Добавлено: 26.09.06 15:28
-АлександР-
Ну не прогу же писал.
Номер ответа: 6
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #6
Добавлено: 26.09.06 23:08
Я вот как раз недавно сделал чтобы домашку проверять:
Option Explicit
Const Infinity = 3000000
Dim n As Long
Dim i As Long
Dim Area As Double
Dim b As Double
Dim a As Double
Dim DeltaX As Double
Const pi As Double = 3.14159265358979
Function F(x As Double) As Double
F = (Exp(x) * (1 + Sin(x))) / (1 + Cos(x))
End Function
Private Sub Form_Load()
Show
'AREA
n = Infinity
a = 0
b = 1.5
DeltaX = (b - a) / n
Area = 0
pb.Min = 1
pb.Max = n + 1
pb.Value = 1
For i = 1 To n
Area = Area + F(a + i * DeltaX) * DeltaX
If i Mod 50000 = 0 Then
pb.Value = i
DoEvents
End If
Next i
MsgBox Round(Area, 4)
End Sub
Выдаёт 4.1751
Номер ответа: 7
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #7
Добавлено: 26.09.06 23:37
Теперь я уже ничего не понимаю.
Morpheus пишет прогу чтобы домашку проверять.
А кто -то домашнее задание не делает.
//-----
Кстати Morpheus, а не проще домашку в MathCAD'е проверять?
Номер ответа: 8
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #8
Добавлено: 27.09.06 00:14
а нафик... я ж не юзер... да и нету маткада.. а, есть и маткад и автокад тока чёто ставить влом
Номер ответа: 9
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #9
Добавлено: 27.09.06 00:23
А завтра по линейной алгебре домашка будет?
А кто?????
Хм...
Номер ответа: 10
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #10
Добавлено: 27.09.06 01:41
ламер
пересяду на паскаль в делфях да и всё
Номер ответа: 11
Автор ответа:
DJ EFFECT
Вопросов: 10
Ответов: 18
Профиль | | #11
Добавлено: 27.09.06 21:12
ДА, вроде сам сделал.Кому интересно, выкладываю на Паскале
uses crt;
const a=0;b=1.5;
var
eps,r,r2:real; { Предыдущее и текущее приближенные значения интеграла}
n:integer;
function f(x:real):real;
begin
f:=(exp(x)*(1+sin(x))/(1+cos(x)));
end;
{------------------------------------------------------------------------------}
{ Метод трапеций }
function trap(a,b:real;n:integer):real;
var
s:real;
h:real;
i:integer;
begin
h:=(b-a)/(n-1);
s:=(f+f(b))/2; { Начальное значение суммы }
for i:=1 to n-2 do
s:=s+f(a+i*h); { Суммиование остальных элементов}
trap:=s*h;
end;
{------------------------------------------------------------------------------}
{ Метод Симпсона }
function simpson(a,b:real;n:integer):real;
var
s:real;
dx:real;
i:integer;
mn:integer; { Очередной множитель }
begin
dx:=(b-a)/(n-1);
s:=f+f(b); { Начальное значение шага }
mn:=4; { Первый мнодитель - 4 }
{ Суммирование остальных элементов }
for i:=1 to n-2 do begin
s:=s+mn*f(a+dx*i);
if (mn=4) then mn:=2 else mn:=4;{ Именение мноителя 2<>4 }
end;
simpson:=s*dx/3;
end;
{------------------------------------------------------------------------------}
function lev(a,b:real;n:integer):real;
var
s,x:real;
dx:real;
xb:real;
i:integer;
begin
dx:=(b-a)/n; s:=0; xb:=a;
for i:=1 to n do
begin
x:=xb+i*dx;
s:=s+f(x)*dx;
end;
lev:=s;
end;
{------------------------------------------------------------------------------}
function sred(a,b:real;n:integer):real;
var
s,x:real;
dx:real;
xb:real;
i:integer;
begin
dx:=(b-a)/n; s:=0;
xb:=a+dx/2;
for i:=0 to n-1 do
begin
x:=xb+i*dx;
s:=s+f(x)*dx;
end;
sred:=s;
end;
{------------------------------------------------------------------------------}
function prav(a,b:real;n:integer):real;
var
s,x:real;
dx:real;
xb:real;
i:integer;
begin
dx:=(b-a)/n; s:=0; xb:=b;
for i:=1 to n do
begin
x:=xb-i*dx;
s:=s+f(x)*dx;
end;
prav:=s;
end;
{------------------------------------------------------------------------------}
{ Основная программа }
begin
clrscr;
write('Vvedite to4nost eps > 0: ');readln(eps);
{ Вычисляется интеграл по методу трапеций }
n:=10;
r:=trap(a,b,n);
repeat
r2:=r;
n:=n+2;
r:=trap(a,b,n);
until (abs(r-r2)<eps);
writeln(' Резльтат по методу трапеций равен: ',r:6:5);
writeln(' для получения необходимой точности интервал был разбит на');
writeln(n,' отрезков');
{------------------------------------------------------------------------------}
{ Вычисляется интеграл по методу Симпсона }
n:=10;
r:=simpson(a,b,n);
repeat
r2:=r;
n:=n+2;
r:=simpson(a,b,n);
until (abs(r-r2)<eps);
writeln;
writeln(' Резльтат по методу Симпсона равен: ',r:6:5);
writeln(' для получения необходимой точности интервал был разбит на ');
writeln(n,' отрезков');
{------------------------------------------------------------------------------}
{ Вычисляется интеграл по методу левых прямоугольников }
n:=10;
r:=lev(a,b,n);
repeat
r2:=r;
n:=n+2;
r:=lev(a,b,n);
until (abs(r-r2)<eps);
writeln;
writeln(' Резльтат по методу левых прямоугольников равен: ',r:6:5);
writeln(' для получения необходимой точности интервал был разбит на ');
writeln(n,' отрезков');
{------------------------------------------------------------------------------}
{ Вычисляется интеграл по методу средних прямоугольников }
n:=10;
r:=sred(a,b,n);
repeat
r2:=r;
n:=n+2;
r:=sred(a,b,n);
until (abs(r-r2)<eps);
writeln;
writeln(' Резльтат по методу средних прямоугольников равен: ',r:6:5);
writeln(' для получения необходимой точности интервал был разбит на ');
writeln(n,' отрезков');
{------------------------------------------------------------------------------}
{ Вычисляется интеграл по методу правых прямоугольников }
n:=10;
r:=prav(a,b,n);
repeat
r2:=r;
n:=n+2;
r:=prav(a,b,n);
until (abs(r-r2)<eps);
writeln;
writeln(' Резльтат по методу правых прямоугольников равен: ',r:6:5);
writeln(' для получения необходимой точности интервал был разбит на ');
writeln(n,' отрезков');
end.
Номер ответа: 12
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #12
Добавлено: 28.09.06 00:11
DJ EFFECT
Вот это другое дело.
Так держать!
Номер ответа: 13
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #13
Добавлено: 29.09.06 00:37
[sorry]
vito, тебе бы медаь за флуд, имхо
[/sorry]
Номер ответа: 14
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #14
Добавлено: 29.09.06 01:44
sne
Иногда и пофлудить охота.
Хотя как ты заметил, я особо этим не отличаюсь.
//----------
А вообще говоря это не флуд. Сделал же сам? Отлично сделал? Ну и какой же это флуд?
Я если бы я просто код выложил... Толку?
Еще 10 подобных постов появилось - решите за меня?
Впрочем я не откажусь от медали. Только это Павел или UU решат.