Witam! Mam napisany prosty programik z liczeniem całki numerycznej metodą trapezów i mam pewien problem...
W funkcji double y podaję wzór funkcji (w tym przypadku muszę obliczyć całkę z logarytmu naturalnego) i na wyjściu wywala mi -inf, nie wiem dlaczego, ponieważ powinno wyświetlać normalne wartości - i tak właśnie robi w przypadku właściwie wszystkich innych funkcji, chociażby np x^3.
Z góry bardzo dziękuję za pomoc, jeżeli ktoś zauważy błąd!
#include <iostream>
#include <math.h>
using namespace std;
double y(double x) {
return log(x);
}
double LN(double arg, int n) {
double a = 0, h;
cout << "Podaj liczbe podprzedzialow: ";
cin >> n;
cout << "Podaj arg: " << endl;
cin >> arg;
h = (arg - a) / n;
double ln = 0;
for(int i = 1;i<n-1;i++) {
ln += y(arg);
}
ln += y(a) / 2;
ln += y(arg) / 2;
ln *= h;
return ln;
}
int main()
{
int n;
double arg, h;
y(arg);
cout << LN(arg, n) << endl;
return 0;
}