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 original
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; }
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