Integral??? Ajudem???
oi colegas
estou precisando fazer uma funcao p calcular uma integral, se alguem ja tiver uma feita ou sabe como fazer contacte-me eh urgente!!!, obrigado.
estou precisando fazer uma funcao p calcular uma integral, se alguem ja tiver uma feita ou sabe como fazer contacte-me eh urgente!!!, obrigado.
Joefferson
Curtidas 0
Respostas
Mitsuo_takaki
01/10/2003
Oi,
bom, na cadeira de métodos numéricos eu ouvi falar num método chamado método do trapézio (não tenho certeza). Ele é usado para calcular integrais. Desculpe por não poder ajudar muito, mas pode ser que seja este método.
[]´s
Mitsuo
bom, na cadeira de métodos numéricos eu ouvi falar num método chamado método do trapézio (não tenho certeza). Ele é usado para calcular integrais. Desculpe por não poder ajudar muito, mas pode ser que seja este método.
[]´s
Mitsuo
GOSTEI 0
Acostafeny
01/10/2003
Ola Pessoal,
Tudo Bem?
O Mitsuo está totalmente certo!
Há vários métodos em cálculo numérico que permitem o cálculo de integrais NUMERICAS, isto é, calcular a intregral a partir de pontos (X,Y) pertencentes a um conjunto de coordenadas. Por exemplo,
X | Y
------
1 | 3
2 | 6
3 | 9
Se o seu caso for fazer a integração a partir da FUNÇÃO MATEMATICA, por exemplo,
f(x) = 3*x^2 +3, no intervalo 1<=x<=10
para obter a função F(x) (Observe que aqui a letra é maiuscula apenas como uma simboligia que representa a intergral de f(x) que está em minusculo, ok?)
F(x) = x^3 +3*x
sem o resultado numérico, não dá para usar Cálculo Numérico. Nesse caso vc terá que procurar bibliotecas matemáticas para o Delphi, mas pelo que já encontrei na internet, estas não são gratuitas. Ou ainda recorrer a Aplicativos matematicos como o Mathematica ou MatLab que são capazes de de fazer isso e muito mais.
Bem, se o seu caso for realmente fazer o cálculo numérico propriamente dito atraves de coordenadas (X,Y) desde que vc tenha os pontos, então posso te ajudar no método do trapézio que o mais simples que conheco. Nao tenho a rotina, mas posso te orientar. Então lá vai...
-------------------------------------------------------------------------------
1. Fórmula do trapézio é:
...........|
..Y(i+1)|------ o
...........|......../.|
......Y(i)|-----o..|
...........|......|...|
...........|......|...|
...........|-----|--|-----------
..............X(i)....X(i+1)
A= 0.5 * [Y(i) + Y(i+1)]*[X(i+1) - X(i)]
-------------------------------------------------------------------------------
2. Você tem que colocar os dados em uma tabelinha de coordenadas cartesianas como uma StringGrid, por exemplo, e no momento do cálculo converter de String para Float.
-------------------------------------------------------------------------------
3.Voce deve fazer um loop que conte desde 1 até (N-1), onde N é o número de pontos de seu conjunto e fazer uma rotina + ou - assim:
var x, y : Double;
i : Integer; {índice que percorrerá a lista do StringGrid}
N : Integer {número de pontos}
Integral : Double; {Conterá o somatorio resultante da integral}
N := StringGrid1.RowCount;
Integral := 0;
for i=1 to N-1 do
begin
{Pega as coordenadas no Grid}
X1:=StrigToFloat(StringGrid1.Cell[ 1, i ]); { [ Coluna , Linha ] }
Y1:=StrigToFloat(StringGrid1.Cell[ 2, i ]);
X2:=StrigToFloat(StringGrid1.Cell[ 1, i+1 ]); { [ Coluna , Linha ] }
Y2:=StrigToFloat(StringGrid1.Cell[ 2, i+1 ]);
{Fórmula do trapézio}
Integral := Integral + 0.5 * ( Y1 + Y2 ) * ( X2 - X1 );
end;
Depois é só usar o resultado da variável Integral!
-------------------------------------------------------------------------------
4. Algumas consirerações
a) Observe que na integração os pontos são usados sempre aos pares, daí a necessidade de varrer o Grid de 1 até (N-1).
b) Os pares de variáveis (X1,Y1) e (X2,Y2) tomam o papel de ponto atual e ponto posterios, respectivamente. Assim não necessitamos de usar matrizes para eles, o Grid já faz isso por nos. Basta só pegar pontos dois-a-dois em sequencia e pronto.
c) No programa acima eu considerei o Grid assim:
........................Colunas
........................ 0....... 1.... 2
linha 0 -> |_PONTOS_|_X_|_Y_| (cabecalho)
linha 1 -> |___ 1 ____|___|___|
linha 2 -> |___ 2 ____|___|___|
linha 3 -> |___ 3 ____|___|___|
(...)
linha N -> |___ N ____|___|___|
-------------------------------------------------------------------------------
Por favor, dá uma boa olhada no código acima, pois tenho certeza que possui muitos erros de sintaxe. Estou sem o Delphi no momento e não lembro dos nomes corretamente e estou fazendo o programa de cabeça agora. Mas acho que pode te ajudar te dando uma luz no caminho. :D
Boa sorte e excelente programação!!!
Tudo Bem?
O Mitsuo está totalmente certo!
Há vários métodos em cálculo numérico que permitem o cálculo de integrais NUMERICAS, isto é, calcular a intregral a partir de pontos (X,Y) pertencentes a um conjunto de coordenadas. Por exemplo,
X | Y
------
1 | 3
2 | 6
3 | 9
Se o seu caso for fazer a integração a partir da FUNÇÃO MATEMATICA, por exemplo,
f(x) = 3*x^2 +3, no intervalo 1<=x<=10
para obter a função F(x) (Observe que aqui a letra é maiuscula apenas como uma simboligia que representa a intergral de f(x) que está em minusculo, ok?)
F(x) = x^3 +3*x
sem o resultado numérico, não dá para usar Cálculo Numérico. Nesse caso vc terá que procurar bibliotecas matemáticas para o Delphi, mas pelo que já encontrei na internet, estas não são gratuitas. Ou ainda recorrer a Aplicativos matematicos como o Mathematica ou MatLab que são capazes de de fazer isso e muito mais.
Bem, se o seu caso for realmente fazer o cálculo numérico propriamente dito atraves de coordenadas (X,Y) desde que vc tenha os pontos, então posso te ajudar no método do trapézio que o mais simples que conheco. Nao tenho a rotina, mas posso te orientar. Então lá vai...
-------------------------------------------------------------------------------
1. Fórmula do trapézio é:
...........|
..Y(i+1)|------ o
...........|......../.|
......Y(i)|-----o..|
...........|......|...|
...........|......|...|
...........|-----|--|-----------
..............X(i)....X(i+1)
A= 0.5 * [Y(i) + Y(i+1)]*[X(i+1) - X(i)]
-------------------------------------------------------------------------------
2. Você tem que colocar os dados em uma tabelinha de coordenadas cartesianas como uma StringGrid, por exemplo, e no momento do cálculo converter de String para Float.
-------------------------------------------------------------------------------
3.Voce deve fazer um loop que conte desde 1 até (N-1), onde N é o número de pontos de seu conjunto e fazer uma rotina + ou - assim:
var x, y : Double;
i : Integer; {índice que percorrerá a lista do StringGrid}
N : Integer {número de pontos}
Integral : Double; {Conterá o somatorio resultante da integral}
N := StringGrid1.RowCount;
Integral := 0;
for i=1 to N-1 do
begin
{Pega as coordenadas no Grid}
X1:=StrigToFloat(StringGrid1.Cell[ 1, i ]); { [ Coluna , Linha ] }
Y1:=StrigToFloat(StringGrid1.Cell[ 2, i ]);
X2:=StrigToFloat(StringGrid1.Cell[ 1, i+1 ]); { [ Coluna , Linha ] }
Y2:=StrigToFloat(StringGrid1.Cell[ 2, i+1 ]);
{Fórmula do trapézio}
Integral := Integral + 0.5 * ( Y1 + Y2 ) * ( X2 - X1 );
end;
Depois é só usar o resultado da variável Integral!
-------------------------------------------------------------------------------
4. Algumas consirerações
a) Observe que na integração os pontos são usados sempre aos pares, daí a necessidade de varrer o Grid de 1 até (N-1).
b) Os pares de variáveis (X1,Y1) e (X2,Y2) tomam o papel de ponto atual e ponto posterios, respectivamente. Assim não necessitamos de usar matrizes para eles, o Grid já faz isso por nos. Basta só pegar pontos dois-a-dois em sequencia e pronto.
c) No programa acima eu considerei o Grid assim:
........................Colunas
........................ 0....... 1.... 2
linha 0 -> |_PONTOS_|_X_|_Y_| (cabecalho)
linha 1 -> |___ 1 ____|___|___|
linha 2 -> |___ 2 ____|___|___|
linha 3 -> |___ 3 ____|___|___|
(...)
linha N -> |___ N ____|___|___|
-------------------------------------------------------------------------------
Por favor, dá uma boa olhada no código acima, pois tenho certeza que possui muitos erros de sintaxe. Estou sem o Delphi no momento e não lembro dos nomes corretamente e estou fazendo o programa de cabeça agora. Mas acho que pode te ajudar te dando uma luz no caminho. :D
Boa sorte e excelente programação!!!
GOSTEI 0
Cebikyn
01/10/2003
Tem um código simples em:
http://delphiforum.icft.com.br/forum/viewtopic.php?p=52908#52908
http://delphiforum.icft.com.br/forum/viewtopic.php?p=52908#52908
GOSTEI 0
Cebikyn
01/10/2003
Tem um código simples em:
http://delphiforum.icft.com.br/forum/viewtopic.php?p=52908#52908
O código trabalha a partir de uma função matemática em uma string e o intervalo de integração.
Espero que ajude.
GOSTEI 0