Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2008, 15:12
huevofritopamojarpan
 
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.