Tengo que resolver el problema del polinomio de legendre donde ya tengo la logica y todo pero el problema es ke no me vota los resultados correctos
Este es el codigo completo...
#include <iostream>
#include <cmath>
using namespace std;
Código C++:
Ver original#include <iostream>
using namespace std;
void leerdatos(unsigned &n, double &x){
cout<<"Orden(n)? "<<endl;
cin>>n;
cout<<"Numero (x)? "<<endl;
cin>>x;
}
double leg(unsigned n, double x){
if (n==0) return 1;
if (n==1) return x;
double le0=1,le1=x, le2,aux;
for (unsigned int i=2; i<=n; i=i+1){
le2=((2*n-1)/n)*x*le1;
aux=((n-1)/n)*le0;
le2=le2-aux;
le0=le1; le1=le2;
}
return le2;
}
void mostrar(unsigned int n, double x, double le2){
cout<<"Legendre ("<<n<<", "<<x<<") = "<<le2<<endl;
}
int main(){
cout<<"***Legendre enesimo (n) de un numero real (x) ***"<<endl;
cout<<"Orden = 0 para salir"<<endl;
unsigned n; double le2,x;
leerdatos(n,x);
le2=leg(n,x);
mostrar(n,x,le2);
return 0;
}
El problema esta en esta funcion, bueno eso es lo que creo yo
Código C++:
Ver originaldouble leg(unsigned n, double x){
if (n==0) return 1;
if (n==1) return x;
double le0=1,le1=x, le2,aux;
for (unsigned int i=2; i<=n; i=i+1){
le2=((2*n-1)/n)*x*le1;
aux=((n-1)/n)*le0;
le2=le2-aux;
le0=le1; le1=le2;
}
return le2;
}
Donde por ejemplo para n=2 y x=2 los resultados deberian ser
le2=6 y aux=0,5
le2=6-0,5= 5,5 siendo este ultimo (5,5) el resultado que deberia mostrarse pero por alguna razon no funciona =( por favor si me dieran una ayuda. Gracias de antemano