Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/07/2013, 11:11
efirvida
 
Fecha de Ingreso: marzo-2009
Mensajes: 39
Antigüedad: 15 años, 8 meses
Puntos: 0
encontrar cero de una funcion

Hola a todos tengo una funcion a la cual le quiero hallar su raiz, estoy usando fsolve de scipy, pero cuando la ejecuto me da el siguiente error:

TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument 'my_function'

pueden ayudarme aqui le spongo todo el codigo que tengo
saludos y gracias de antemano

Código Python:
Ver original
  1. def my_function(fi):
  2.     from math import pi,sqrt,tan,sin,cos
  3.     from numpy import array, radians
  4.  
  5.     m = 2.5
  6.     z = 22
  7.     beta = radians(16.)
  8.     alfa = radians(20.)
  9.     x = 0.
  10.     c = 0.25
  11.     f = 1.
  12.     fr = 0.4
  13.  
  14.     rp = (m*z/cosd(beta))/2.
  15.     ro = rp - m * (f + c - x)
  16.     so = 2. * ro * (((pi/2. + 2.*x*tan(alfa))/z)+(tan(alfa)-alfa))
  17.  
  18.     l = pi/4. * m
  19.     he = (f + c) * m
  20.     rc = fr * m
  21.     s = x * m
  22.     d = he - rc - s
  23.     PA = l + (rc/cos(alfa)) + (he -rc)*tan(alfa)
  24.  
  25.     Gama = radians(PA/rp)
  26.     Beta = radians(so / (2.*ro))
  27.  
  28.     fi_e = radians(fi[0])
  29.     fi_t = radians(fi[1])
  30.  
  31.     E1 = ro * (cos(Gama - Beta) + sin(Gama - Beta) * fi_e )
  32.     E2 = -ro * (sin(Gama - Beta) - cos(Gama - Beta) * fi_e )
  33.  
  34.     T1 = rp - d *( l + rc/sqrt(d**2 + (rp * fi_t)**2))
  35.     T2 = rp * fi_t *( l + rc/sqrt(d**2 + (rp * fi_t)**2))
  36.    
  37.     return E1 * cos(fi_e) + E2 *sin(fi_e) - T1 *cos(fi_t) + T2 * sin(fi_t)
  38.      
  39. from scipy.optimize import fsolve
  40. from math import pi
  41.  
  42. print  fsolve(my_function, [-pi/2, 0])