('a-b', '-(b-a)'), ('(a*b)**4', 'a**4*b**4'), ('(a+b)**2', 'a**2+2*a*b+b**2'), ('(a+b)*(a-b)', 'a**2-b**2'), ('log(a*b)', 'log(a)+log(b)'), ('a*b', 'exp(log(a)+log(b))'), ('1/(1/a+1/b)', '(a*b)/(a+b)'), ('a*(sin(b)**2+cos(b)**2)', 'a'), ('sinh(a+b)', '(exp(a)*exp(b)-exp(-a)*exp(-b))/2'), ('tan(a+b)', 'sin(a+b)/cos(a+b)'), ('sin(a+b)', 'sin(a)*cos(b)+sin(b)*cos(a)')] u = [1.e-10, 1.e-50, 1.e-100, 1.e-150, 1.e-200] if __name__ == '__main__': if len(sys.argv) == 5: B = float(sys.argv[1]) A = float(sys.argv[2]) n = int(sys.argv[3]) nombre_fichero = sys.argv[4] fichero = open(nombre_fichero, 'w') for t in l: expr1 = t[0] expr2 = t[1] fichero.write("%s\n %s\n" % (expr1, expr2)) for i in range(len(u)): fichero.write("%3.1f\n" % (error(expr1, expr2, A, B, n, u[i]))) print "%s %s %3.1g" % (expr1, expr2, error(expr1, expr2, A, B, n, u[i])) i += 1 fichero.close() else: print "el modo de uso es:%s valor minimo, valor maximo, numero de test, nombre fichero" % ( sys.argv[0])
a=0 b=100 n=50 nombre='tabla.txt' umbral=[1.e-2,1.e-10,1.e-30,1.e-100,1.e-500] if __name__=='__main__': try: fichero=open(nombre,'w') for elem in l: fichero.write ('%s\n' %(elem[0])) fichero.write ('%s\n' %(elem[1])) for u in umbral: fichero.write ('%5.2f\n' %(error(elem[0],elem[1],a,b,n,u))) fichero.close() except IOError: print 'El fichero no existe' try: fichero=open(nombre,'r') for i in range(15): expr1=fichero.readline() expr2=fichero.readline() e=[] for j in range(5): e.append(float(fichero.readline())) diagrama1 = pl.figure(1) pl.subplot(211)
# uso de modulo_error import sys, random from math import * from modulo_error import error l=[('(a*b)**3','a**3*b**3'),('a/b','1/b/a'), ('exp(a+b)','exp(a)*exp(b)'), ('log(a**b)','b*log(a)'), ('a-b','-(b-a)'), ('(a*b)**4','a**4*b**4'), ('(a+b)**2','a**2+2*a*b+b**2'), ('(a+b)*(a-b)','a**2-b**2'), ('log(a*b)','log(a)+log(b)'),('a*b','exp(log(a)+log(b))'), ('1/(1/a+1/b)','(a*b)/(a+b)'), ('a*(sin(b)**2+cos(b)**2)','a'), ('sinh(a+b)','(exp(a)*exp(b)-exp(-a)*exp(-b))/2'), ('tan(a+b)','sin(a+b)/cos(a+b)'), ('sin(a+b)','sin(a)*cos(b)+sin(b)*cos(a)')] u=[1.e-10, 1.e-50, 1.e-100, 1.e-150, 1.e-200] if __name__=='__main__': if len(sys.argv)==5: B=float(sys.argv[1]) A=float(sys.argv[2]) n=int(sys.argv[3]) nombre_fichero=sys.argv[4] fichero=open(nombre_fichero, 'w') for t in l: expr1=t[0] expr2=t[1] fichero.write("%s\n %s\n" %(expr1, expr2)) for i in range(len(u)): fichero.write("%3.1f\n" %(error(expr1, expr2, A, B, n, u[i]))) print "%s %s %3.1g" %(expr1, expr2, error(expr1, expr2, A, B, n, u[i])) i+=1 fichero.close() else: print "el modo de uso es:%s valor minimo, valor maximo, numero de test, nombre fichero" % (sys.argv[0])
('tan(a+b)','sin(a+b)/cos(a+b)'), ('sin(a+b)','sin(a)*cos(b)+sin(b)*cos(a)') ] if __name__ == '__main__': if (len(sys.argv) == 10): min_value = float(sys.argv[1]) max_value = float(sys.argv[2]) numero_test = int(sys.argv[3]) nombre_fich = sys.argv[4] umbrales = map(float, sys.argv[5:]) # Abrimos el fichero para escritura fich = open(nombre_fich, 'w') for ident in lista_identidades: fich.write("expr1: {0}\n".format(ident[0])) fich.write("expr2: {0}\n".format(ident[1])) for umb in umbrales: fich.write("% de fallos para el umbral {0}: {1}\n".format(umb, error(ident[0], ident[1], min_value, max_value, numero_test, umb))) fich.write("\n") # Cerramos el fichero fich.close() else: print "La forma de uso es {0} min_value max_value numero_test nombre_fichero umbral_1 umbral_2 ... umbral_5".format(sys.argv[0]) print "Se usan los valores por defecto:" print " {0} expr1 expr2 min_value max_value numero_test umbral % fallos".format(sys.argv[0]) print " {0} (a*b)**3 (a**3)*(b**3) 1.0 100.0 500 1e-20 {1}".format(sys.argv[0], error('(a*b)**3', '(a**3)*(b**3)', A, B, numero_test, umbral)) print " {0} (a/b) 1/(b/a) 1.0 100.0 500 1e-20 {1}".format(sys.argv[0], error('(a/b)', '1/(b/a)', A, B, numero_test, umbral))
('(a+b)*(a-b)','a**2-b**2'), ('log(a*b)','log(a) + log(b)'), ('a*b','exp(log(a) + log(b))'), ('1/((1/a)+(1/b))','a*b/(a+b)'), ('a*((sin(b))**2+(cos(b))**2)','a'), ('sinh(a+b)','(exp(a)*exp(b)-exp(-a)*exp(-b))/2'), ('tan (a+b)','(sin(a+b))/(cos(a+b))'), ('sin(a+b)','sin(a)*cos(b)+sin(b)*cos(a)')] a=float(sys.argv[1]) b=float(sys.argv[2]) n=int(sys.argv[3]) nombre=(sys.argv[4]) umbral=[1.e-2,1.e-10,1.e-30,1.e-100,1.e-500] if __name__=='__main__': print '%35s %35s %17s %17s' % ('expr1','expr2','umbral','fallos') for elem in l: for u in umbral: print '%35s %35s %15.2f' % (elem[0], elem[1],error(elem[0],elem[1],a,b,n,u)) try: fichero=open(nombre,'w') for elem in l: fichero.write ('%s\n' %(elem[0])) fichero.write ('%s\n' %(elem[1])) for u in umbral: fichero.write ('%5.2f\n' %(error(elem[0],elem[1],a,b,n,u))) fichero.close() except IOError: print 'El fichero no existe'
# uso_modulo_trapecio.py # # Lara Kristjansdottir y Javier Hernandez Perez # # 17.mayo 2013 # # Un programa que calcula el valor de la funcion seno(pi*x) con el metodo del # del trapecio, el valor absoluto, el tiempo que tarda en calcularlo y lo guarda en # un fichero llamado resultado.txt. import time from math import * from modulo_trapecio import trapecio_senxpi from modulo_error import error n=range(1,8,2)+range(8,20,4)+ range(100,300,100) if __name__=='__main__': fichero=open('resultado.txt', 'w') e0 = time.time() for i in range(len(n)): fichero.write("%i\n%.10f\n%.10f\n" %(n[i], error(trapecio_senxpi(n[i])), time.time() - e0)) i+=1 fichero.close()