Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. import math
  2.  
  3. class Archivo:
  4.  
  5. def leerArchivo(self,nombreArchivo):
  6. datosW = []
  7. datosX = []
  8. datosY = []
  9. datosZ = []
  10. iterador = 0
  11. archivo = open(nombreArchivo,"r")
  12. for linea in archivo.readlines():
  13. separarDatos = linea.split()
  14. datosW.append(float(separarDatos[0]))
  15. datosX.append(float(separarDatos[1]))
  16. datosY.append(float(separarDatos[2]))
  17. datosZ.append(float(separarDatos[3]))
  18. archivo.close()
  19. return datosW,datosX,datosY,datosZ
  20.  
  21. class CalcularBetas:
  22.  
  23. def crearMatriz(self,vectorW,vectorX,vectorY,vectorZ):
  24. sumatoriaW=sumatoriaX=sumatoriaY=sumatoriaZ = 0.0
  25. wCuadrada=xCuadrada=yCuadrada=zCuadrada = 0.0
  26. wPorX=wPorY=wPorZ=xPorY=xPorZ=yPorZ = 0.0
  27.  
  28.  
  29. for iterador in range(len(vectorW)):
  30. sumatoriaW += vectorW[iterador]
  31. sumatoriaX += vectorX[iterador]
  32. sumatoriaY += vectorY[iterador]
  33. sumatoriaZ += vectorZ[iterador]
  34.  
  35. wCuadrada += pow(vectorW[iterador],2)
  36. xCuadrada += pow(vectorX[iterador],2)
  37. yCuadrada += pow(vectorY[iterador],2)
  38.  
  39. wPorX += vectorW[iterador] * vectorX[iterador]
  40. wPorY += vectorW[iterador] * vectorY[iterador]
  41. wPorZ += vectorW[iterador] * vectorZ[iterador]
  42. xPorY += vectorX[iterador] * vectorY[iterador]
  43. xPorZ += vectorX[iterador] * vectorZ[iterador]
  44. yPorZ += vectorY[iterador] * vectorZ[iterador]
  45.  
  46. numeroDatos = len(vectorW)
  47. matrizBetas = [[numeroDatos,sumatoriaW,sumatoriaX,sumatoriaY],
  48. [sumatoriaW,wCuadrada,wPorX,wPorY],
  49. [sumatoriaX,wPorX,xCuadrada,xPorY],
  50. [sumatoriaY,wPorY,xPorY,yCuadrada]]
  51.  
  52. vectorResultados = [sumatoriaZ,wPorZ,xPorZ,yPorZ]
  53.  
  54. return matrizBetas,vectorResultados
  55.  
  56. def calcularGauss(self,matrizDeBetas,vectorResultados):
  57. size = 4
  58. resultados = [0,0,0,0]
  59. for recorre in range(0,size):
  60. for renglon in range(recorre+1,size):
  61. factor=(matrizDeBetas[renglon][recorre]/matrizDeBetas[recorre][recorre])
  62. print(matrizDeBetas[renglon][recorre], matrizDeBetas[recorre][recorre], renglon,recorre)
  63. vectorResultados[renglon]=vectorResultados[renglon]-(factor*vectorResultados[recorre])
  64. for columnas in range(0,size):
  65. matrizDeBetas[renglon][columnas]=matrizDeBetas[renglon][columnas]-(factor*matrizDeBetas[recorre][columnas])
  66. resultados[size-1]=vectorResultados[size-1]/matrizDeBetas[size-1][size-1]
  67.  
  68. for renglon in range(size-2,-1,-1):
  69. suma = 0
  70. for columnas in range(0,size):
  71. suma=suma+matrizDeBetas[renglon][columnas]*resultados[columnas]
  72. resultados[renglon]=(vectorResultados[renglon]-suma)/matrizDeBetas[renglon][renglon]
  73. return resultados
  74.  
  75. class Programa5: #m
  76. datosW = []
  77. datosX = []
  78. datosY = []
  79. datosZ = []
  80. vectorResultados = []
  81. resultadoHoras = 0
  82. resultados = []
  83.  
  84.  
  85. archivo = Archivo() #b
  86. calculos = CalcularBetas()
  87. nombreArchivo = input("ingresa el nombre del archivo de prueba: ") #b
  88. datosW,datosX,datosY,datosZ = archivo.leerArchivo(nombreArchivo)#b
  89. matriz,vectorResultados = calculos.crearMatriz(datosW,datosX,datosY,datosZ)
  90. resultados = calculos.calcularGauss(matriz,vectorResultados)
  91.  
  92. lineasAgregadas = float(input("ingrese las lineas agregadas "))
  93. lineasReusadas = float(input("ingrese las lineas reusadas "))
  94. lineasModificadas = float(input("ingrese las lineas modificadas "))
  95.  
  96. resultadoHoras = resultados[0]+(resultados[1]*lineasAgregadas)+(resultados[2]*lineasReusadas)+(resultados[3]*lineasModificadas)
  97.  
  98. print("B0",resultados[0],"B1",resultados[1],"B2",resultados[2],"B3",resultados[3])
  99. print(resultadoHoras," horas")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement