asoliveira / NumShip

A simulator of ship manoeuvres as the Zig-Zag manoeuvre
GNU General Public License v3.0
3 stars 1 forks source link

Documentar o módulo Es #3

Closed asoliveira closed 12 years ago

asoliveira commented 12 years ago

Documentar funções, e classes com o "doc". Sendo desenvolvido na tag v0.3

asoliveira commented 12 years ago

def fxdertotab

In [1]: execfile('aux.py')

In [2]: en.fxdertotab()

TypeError Traceback (most recent call last) /home/alex/Documentos/estudo/ufrj/mestrado/dissertacao/WorkingCopy/branches/source/ in () ----> 1 en.fxdertotab()

/home/alex/Documentos/estudo/ufrj/mestrado/dissertacao/WorkingCopy/branches/source/Es.pyc in fxdertotab(self, intervalo, Tipo, Rot) 343 Velocidade[1] = -sp.array([12.7])_sp.sin(beta) 344 navio1.MudaVel(Velocidade) --> 345 saida[contlinha] = sp.array([beta_180./sp.pi, navio1.CalcFx()]) 346 contlinha += 1 347

TypeError: can't convert complex to float

asoliveira commented 12 years ago

O TypeError acima é conhecido e foi comentado no site http://docs.python.org/tutorial/introduction.html The conversion functions to floating point and integer (float(), int() and long()) don’t work for complex numbers — there is no one correct way to convert a complex number to a real number. Use abs(z) to get its magnitude (as a float) or z.real to get its real part.

a=3.0+4.0j float(a) Traceback (most recent call last): File "", line 1, in ? TypeError: can't convert complex to float; use abs(z) a.real 3.0 a.imag 4.0 abs(a) # sqrt(a.real2 + a.imag2) 5.0

Vale lembrar que estamos trabalhando com sp.array() neste caso.

asoliveira commented 12 years ago

O erro na função relatado anteriormente na função fxdertotab deve se ao fato de se está colocando valores negativos de u quando variamos o ângulo beta a valores maiores que pi/2. Como para o cálculo da força gerado pelo leme (Leme.fx ) precisamos de elevar ao quadrado um expressão (ud) que fica negativa com valores de u geramos números complexos.