francielemendes
(usa Outra)
Enviado em 01/11/2014 - 17:49h
Olá,
Preciso criar um algoritmo que calcule numericamente uma integral, mas estou fazendo algo muito errado, pois não estou chegando ao resultado desejado.
Quero integrar a função f(t) = v(t') dt', cujo intervalo de integração é (to, t).
Esta integral deveria resultar no deslocamento de projéteis (em metros) em água.
Os dados são os seguintes:
PROJÉTIL 1:
projétil de pistola .380 ACP, velocidade inicial v0 = 290 m/s e k = 6.12
PROJÉTIL 2:
projétil de fuzil M82, velocidade inicial v0 = 850 m/s e k = 0.66
A fórmula dada para a velocidade é:
v(t) = [k * t + (1/v0)]^-1
O problema diz o seguinte:
Encontre o tempo /\tv=0.001vo que transcorrerá entre a entrada do projétil na água e o instante em que a sua velocidade seja 0.1% da sua velocidade inicial.
Calculei isso manualmente e encontrei que:
Para v0 = 0.29, t = 0.56 s
Para v0 = 0.85, t = 1,78 s
Depois, a parte que preciso do algoritmo:
Faça um gráfico para cada projétil mostrando a distância percorrida até que sua velocidade seja 0.5% de sua velocidade inicial utilizando métodos de integração numérica. O intervalo de integração deve ser /\t = /\tv=0.001vo/200;
Então, tentei fazer o algoritmo, que me resulta em um valor absurdo:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f (double t);
int main()
{
float N;
cout << "Entre com o valor de N: " << endl;
cin >> N;
float t1;
cout << "Entre com o valor de t1: " << endl;
cin >> t1;
float t2;
cout << "Entre com o valor de t2: " << endl;
cin >> t2;
float dt = (t2 - t1) / N;
float integral = 0;
int n;
for (n = 0; n < N; n++)
integral = integral + f(t1 + n * dt);
cout << "A integral é: " << integral;
}
double f(double t)
{
float k = 6.12;
float v = 290;
return 1 / ((k*t) + (1/v0));
}
O valor retornado deveria ser pequeno, no máximo 5 metros, pois os projéteis estão sendo utilizados na água e devido a pressão exercida sobre eles, em pouco tempo irão ser esmagados.
Bom pessoal, não tenho muita experiência em C++, espero a ajuda de vocês para saber o que devo fazer.
Obrigada.