2016-01-30 3 views
1

Мне нужно написать функцию, которая может писать и решать инверсию tan для значений, которые я вводил как два массива. Иногда массив в знаменателе содержит ноль, поэтому всегда происходит деление на ноль. Я не знаю, как избавиться от ошибки и вместо этого вернуть ответ pi/2.Функция для вычисления и построения графика arctanx

def deviation(x): 

if capture(x)==True: 
for i in range(len(yvf)): 
      theta=sp.arctan(xvf/yvf) #xvf and yvf are two arrays 

ответ

0

Прежде всего: написать XVf [I] и yvf [I], чтобы получить доступ к одиночным элементам массивов один за другим.

Во-вторых, если различать yvf [я] равен нулю или нет:

if yvf[i] == 0: 
    theta = math.pi/2.0 
else: 
    theta = sp.arctan(xvf[i]/yvf[i]) 
0

Если импортировать NumPy, я предлагаю использовать arctan2 вместо арктангенс (see this doc). Эта функция управляет нулевыми значениями во втором аргументе.

Если нет, то вы можете решить эту проблему с atan2 функции математической библиотеки и зип встроенной функции:

import math 

xvf = [0.,2.,2.] 
yvf = [20.,0.,2.] 

def arctan(xvf,yvf): 
    return [math.atan2(x,y) for x,y in zip(xvf,yvf)] 

print arctan(xvf,yvf) 
Смежные вопросы