Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
ВнизПомогите!!! Надо посчитать интеграл!!! Диплом горит!!! Найти похожие ветки
← →
Phil (2002-05-05 10:43) [0]Кто-нибудь!!!
Вдруг у кого-нибудь есть компоненты или библиотеки или исходники или хотя-бы ссылки на них для того, что бы заставить прогу считать интеграл? Поделитесь, плиз. Буду очень рад. Надо срочно, горит диплом!!!!
Заранее благодарен.
← →
Nikolay M. (2002-05-06 14:24) [1]посмотри http://alglib.chat.ru/, может накопаешь чего полезного...
а функция задана в программе? если есть что вроде
function F(x : double) : double;
то почему не попробовать обычным методом трапеций, уменьшая с каждым разом шаг разбиения отрезка, пока не достигнется нужная точность? уж для диплома-то такое точно должно пройти :)
← →
olookin (2002-05-06 18:35) [2]procedure AreasCalculation(DataArray: TDoubleArray);
//TDoubleArray = array of double
var i,j,N,nn: integer;
alsq,subv: double;
sqval: double;
begin
nn:=Length(DataArray);
//если выровнять по нулю
if GroupFiles.CheckBox3.Checked then
subv:=(DataArray[nn-1]+DataArray[0])/2 else subv:=0; alsq:=0;
for i:=0 to nn-2 do begin
//метод трапеций без остаточного члена
if TypeMethod=1 then alsq:=alsq+Abs(DataArray[i]-subv)+
(Abs(DataArray[i+1]-subv)-Abs(DataArray[i]-subv))/2;
//метод трапеций с остаточным членом
if TypeMethod=2 then alsq:=alsq+Abs(DataArray[i][0]-subv)+
(Abs(DataArray[i+1]-subv)-
Abs(DataArray[i]-subv))/2-1/(48*Power(0.5,1.5));
//метод квадратов без остаточного члена
if TypeMethod=3 then if (i mod 2)=1 then alsq:=
alsq+2*Abs(DataArray[i]-subv);
//метод квадратов с остаточным членом
if TypeMethod=4 then if (i mod 2)=1 then alsq:=
alsq+2*Abs(DataArray[i]-subv)-1/(96*Power(0.5,1.5)); end;
sqval:=alsq;
end;
← →
poisn (2002-05-07 05:38) [3]program Poisn;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s:array[0..3,0..2] of array of extended;
n,x,y,t,i,j,it:integer;st:array[0..2]of string;
function f(n:integer;x:extended):extended;
begin
st[0]:="F(x)=2*x+1";
st[1]:="F(x)=x*x+8*x-7";
st[2]:="F(x)=x*x*x-4*x*x+1";
case n of
0:begin result:=2*x+1; end;
1:begin result:=x*x+8*x-7; end;
2:begin result:=x*x*x-4*x*x+1;end;
end;
end;
procedure finds(t,n:integer;l,r,e:extended);
var i,j,max:integer;
a,h:extended;
begin
i:=-1;
h:=(r-l);
repeat
i:=i+1;
setlength(s[t,n],100{i+1});
j:=0;
h:=h/2;
repeat
a:=l+h*j;
case t of
0: s[t,n][i]:=abs(h*f(n,a))+s[t,n][i];
1,3:begin
s[t,n][i]:=abs(h*(f(n,a)+f(n,a-h))/2)+s[t,n][i];
end;
2: begin
if (j=0) or ((l+h*j)>=r-h )then s[t,n][i]:=abs(h/3*f(n,a))+s[t,n][i] else
case j mod 2 of
0:s[t,n][i]:=abs(2*h/3*f(n,a))+s[t,n][i];
1:s[t,n][i]:=abs(4*h/3*f(n,a))+s[t,n][i];
end;
end;
end;
j:=j+1;
until (l+h*j)>=r;
if (t=3) and (i>1) then
begin
s[t,n][i-1]:=s[t,n][i]+(s[t,n][i]-s[t,n][i-1])/(1/4-1)
end;
until (abs(s[t,n][i]-s[t,n][i-1])<=e)and(i>=1);
s[t,n][i]:=-s[t,n][i];
end;
begin
f(0,0);
for j:=0 to 2 do
begin
writeln("loading ...");
for i:=0 to 3 do
begin
finds(i,j,1,4,0.001);
end;
for it:=0 to 24 do
writeln;
writeln(st[j]);
writeln;
writeln("metod: Primoug Trap Richerd Simps");
it:=0;
repeat
inc(it);
if (s[0,j][it]=0) and (s[1,j][it]=0) AND (s[2,j][it]=0) AND(s[3,j][it]=0) then break;
writeln("iter:",it:2," dx: ",(1/2/it):1:3," S: ",abs(s[0,j][it]):4:4," ",abs(s[1,j][it]):4:4," ",abs(s[3,j][it]):4:4," ",abs(s[2,j][it]):4:4);
until 1=2;
writeln;
writeln("please press Enrer");
readln;
end;
end.
Хех а здесь тебе еще 2 новых :)
Все 4 основаны на методе итерации путем уменьшения радиуса разбиения отрезка функции до тех пор пока площадь двух последовательных вычислении не будет < некоторой точности E( 0.001 в примере - это 5 входящии параметр finds )
← →
poisn (2002-05-07 05:40) [4]да забыл сказать, что если тебе надо искать неопределенные интегралы, то ты пОпАл :)
← →
Phil (2002-05-07 20:27) [5]Сам знаю, что пОпАл.
А что делать? Кому сейчас легко? Ладно, буду извращаться дальше. А так надеялся....
:-(((((
← →
Andrey007 (2002-05-08 10:02) [6]Ну, по-моему, для взятия неопределённого интеграла надо задать набор интегрируемых функций, интегралов для них, общие правила интегрирования, написать преобразование подинтегральной функции в набор функций из стандартного набора и, наверное, всё. Ну и интерфейс, естественно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c