arcsin的变化

时间:2014-02-17 15:57:26

标签: python

如何在arcsin中进行变化?

我在做

q1=np.linspace(0, 90, 91)
n1=1
n2=1.5
q2=math.asin(n1*sin(q1)/n2)

但它没有用。

1 个答案:

答案 0 :(得分:3)

你在找这样的东西吗?

>>> import numpy as np
>>> q1 = np.linspace(0, 90, 91)
>>> n1 = 1.0
>>> n2 = 1.5
>>> q2 = np.arcsin(n1 * np.sin(q1)/n2)
>>> q2
array([ 0.        ,  0.59556994,  0.65127169,  0.09421935, -0.5288433 ,
       -0.69356529, -0.18737145,  0.45336277,  0.72024942,  0.27832517,
       -0.37114289, -0.7297189 , -0.36582013,  0.28391011,  0.72135785,
        0.44840107, -0.19313398, -0.69571139, -0.52435893,  0.10008515,
        0.65433303,  0.59169712, -0.00590091, -0.59939972, -0.64815789,
       -0.08834939,  0.53329356,  0.69135801,  0.18160037, -0.45829823,
       -0.71907338, -0.27272678,  0.37644614,  0.72964882,  0.36047826,
       -0.28948127, -0.7223984 , -0.44341358,  0.19888767,  0.6977958 ,
        0.51984095, -0.10594654, -0.65734134, -0.58778184,  0.01180156,
        0.60318587,  0.64499223,  0.08247555, -0.53770916, -0.68909002,
       -0.17582103,  0.46320699,  0.71783003,  0.26711526, -0.38172949,
       -0.7295087 , -0.35511764,  0.29503831,  0.72337079,  0.43840076,
       -0.20463223, -0.69981805, -0.51528991,  0.11180324,  0.66029604,
        0.58382468, -0.01770169, -0.60692782, -0.64177529, -0.07659809,
        0.54208958,  0.68676185,  0.17003371, -0.46808859, -0.7165197 ,
       -0.26149094,  0.38699256,  0.72929856,  0.34973866, -0.3005809 ,
       -0.72427477, -0.43336304,  0.21036737,  0.70177767,  0.5107063 ,
       -0.117655  , -0.66319655, -0.57982621,  0.02360106,  0.61062497,
        0.63850766])

在原始代码中,至少存在两个问题。首先,math.asin是内置数学sin函数,它只在标量上运行,而不在numpy数组上运行。其次,您引用sin(q1),只有在使用numpy.sin或其他内容将from numpy import sin导入范围内时才会有效。 [有时人们做from numpy import *,但这是一个坏主意,因为它破坏了一些有用的内置函数。]