C++ Interpolacja Lagrange'a
Ostatnio zmodyfikowano 2012-12-30 10:43
dzilorek Temat założony przez niniejszego użytkownika |
C++ Interpolacja Lagrange'a » 2012-12-30 10:43:02 Witam. Napisałem tą interpolacje, wydaje mi się że wszystko powinno być ok, a jednak źle liczy. Czy mógłby ktoś pokazać gdzie jest błąd?? #include <iostream> using namespace std;
const int n = 4;
double x[ n + 1 ] = { - 2, - 1, 0, 2, 4 }; double y[ n + 1 ] = { - 96, 45, - 32, - 96, - 480 };
double interpol( double z, double x[ n ], double y[ n ] ) { double wnz = 0, om = 1.0, w = 1.0; for( int i = 0; i <= n; i++ ) { w = 1.0; for( int j = 0; j <= n; j++ ) if( i != j ) w = w *( x[ i ] - x[ j ] ); wnz = wnz + y[ i ] /( w *( z - x[ i ] ) ); } return wnz = wnz * om; }
int main() { double z = 1; cout << "Wartosc funkcji F(" << z << ") wynosi: " << interpol( z, x, y ) << endl; cout << endl; } |
|
« 1 » |