16/12/2008, 15:12
|
| | Fecha de Ingreso: diciembre-2008
Mensajes: 9
Antigüedad: 15 años, 11 meses Puntos: 0 | |
Problema con mínimos cuadrados y librerías para cálculo Hola! Este es mi primer mensaje.
Estoy aprendiendo python. Ya sé algo de C y bueno, no me está costando, la verdad.
El problema es que he hecho un programa en C al que se le pasan una serie de puntos del plano bidimensional y calcula la recta de aproximación mediante mínimos cuadrados y he intentado hacer lo mismo en Python, pero no funcona correctamente.
************************************************** **************
i=0
n=0
while n<3:
n = int(raw_input("\n\nCuantos puntos tiene la funcion a lineaizar: "))
horizontal=vertical=range(n)
while (i<n):
print "\n"
horizontal[i]=float(raw_input("x["+str(i)+"]="))
print horizontal[i]
vertical[i]=float(raw_input("y["+str(i)+"]="))
print vertical[i]
i=i+1
print "\n"
i=0
while (i<n):
print horizontal[i], vertical[i], "\n"
i = i + 1
i=0
SUMx=SUMy=SUMxy=SUMxx=a=b=0.0
while (i<n):
print SUMx, SUMy, SUMxy, SUMxy, "\n"
SUMx = SUMx + horizontal[i]
SUMy = SUMy + vertical[i]
SUMxy = SUMxy + (horizontal[i]*vertical[i])
SUMxx = SUMxx + (horizontal[i]*horizontal[i])
i = i + 1
print SUMx, SUMy, SUMxy, SUMxy, "\n"
a = ( (SUMx*SUMy) - (n*SUMxy) ) / ( (SUMx*SUMx) - (n*SUMxx) )
b = ( SUMy - (a*SUMx) ) / n
print a,"x",
if b>=0:
print "+",
print b
************************************************** **************
El problema es que el resultado que muestra es erróneo porque le asigna a x[i] el contenido de y[i].
Alguien sabe cuál donde está el problema?
Otra cosa es que me gustaría saber como funcionan las "librerías" numpy, scipy y demás, cómo se instalan y eso. Porque me interesaba sobre todo que los scripts que hago se puedan utilizar directamente en otros sistemas y ordenadores, pero creo que si utilizo una de estas librerías, el ordenador que la ejecuta tendría que tener estas librerías instaladas.
Muchas gracias.
Un saludo. |