Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numpy-won'的简单函数;跑不动_Python - Fatal编程技术网

Python 使用numpy-won'的简单函数;跑不动

Python 使用numpy-won'的简单函数;跑不动,python,Python,我已经做了两个多小时了。每一行都打印出我想要的结果。但是,当我运行程序中的所有行时,python会打印值或Ixx、Iyy和Ixy。为什么会这样 import numpy as np Ixx = 14600000 Iyy = 14600000 Ixy = 7080*(47.2-12.5)**2 alpha = 45 x = 0.5*(Ixx+Iyy)+0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)+Ixy*np.sin(2*alpha/180*np.pi) y

我已经做了两个多小时了。每一行都打印出我想要的结果。但是,当我运行程序中的所有行时,python会打印值或Ixx、Iyy和Ixy。为什么会这样

import numpy as np

Ixx = 14600000
Iyy = 14600000
Ixy = 7080*(47.2-12.5)**2
alpha = 45

x = 0.5*(Ixx+Iyy)+0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)+Ixy*np.sin(2*alpha/180*np.pi)
y = 0.5*(Ixx+Iyy)-0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)-Ixy*np.sin(2*alpha/180*np.pi)
z = 0.5*(Ixx-Iyy)*np.sin(2*alpha/180*np.pi)+Ixy*np.cos(2*alpha/180*np.pi)

print x,y,z

如果您是在python2.x下运行它,那么您将丢失语句
2*alpha/180*np.pi
(python3.x应该可以工作)

这些操作按优先顺序(在本例中为从左到右)进行计算,这将给出

((2 * alpha) / 180) * ni.pi
=> (90 / 180) * ni.pi # integer division truncates this to 0
=> 0 * ni.pi
您需要手动转换为浮点,或者:

np.sin(2.0*alpha/180*np.pi) # the floating point 2.0 will promote alpha to float for the multiply


如果您是在python2.x下运行它,那么您将丢失语句
2*alpha/180*np.pi
(python3.x应该可以工作)

这些操作按优先顺序(在本例中为从左到右)进行计算,这将给出

((2 * alpha) / 180) * ni.pi
=> (90 / 180) * ni.pi # integer division truncates this to 0
=> 0 * ni.pi
您需要手动转换为浮点,或者:

np.sin(2.0*alpha/180*np.pi) # the floating point 2.0 will promote alpha to float for the multiply


我不能说我理解为什么,但是改变我的窦和余弦的内部术语解决了这个问题。我变了

x = 0.5*(Ixx+Iyy)+0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)+Ixy*np.sin(2*alpha/180*np.pi)
y = 0.5*(Ixx+Iyy)-0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)-Ixy*np.sin(2*alpha/180*np.pi)
z = 0.5*(Ixx-Iyy)*np.sin(2*alpha/180*np.pi)+Ixy*np.cos(2*alpha/180*np.pi)


这在数学上是等价的,但显然numpy发现它更容易计算。

我不能说我理解为什么,但改变我的窦和余弦项的内部解决了这个问题。我变了

x = 0.5*(Ixx+Iyy)+0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)+Ixy*np.sin(2*alpha/180*np.pi)
y = 0.5*(Ixx+Iyy)-0.5*(Ixx-Iyy)*np.cos(2*alpha/180*np.pi)-Ixy*np.sin(2*alpha/180*np.pi)
z = 0.5*(Ixx-Iyy)*np.sin(2*alpha/180*np.pi)+Ixy*np.cos(2*alpha/180*np.pi)


这在数学上是等价的,但显然numpy发现它更容易计算。

您能将代码保存到一个文件中,运行它,然后将代码的精确输出编辑到您的问题中吗?我看不出你所描述的行为(
Ixx
Iyy
,以及正在打印的
Ixy
)会发生的原因。这是我的输出>>运行文件('C:/Documents and Settings/Alex/Desktop/SAP/untitled3.py',wdir=r'C:/Documents and Settings/Alex/Desktop/SAP')1460000.1460000.0 8524957.2经过验证,该程序似乎只是忽略了方程的所有其余部分(在第一项之后)。numpy模块可能有问题吗?您能否将代码保存到文件中,运行它,然后获取代码的确切输出并将其编辑到您的问题中?我看不出你所描述的行为(
Ixx
Iyy
,以及正在打印的
Ixy
)会发生的原因。这是我的输出>>运行文件('C:/Documents and Settings/Alex/Desktop/SAP/untitled3.py',wdir=r'C:/Documents and Settings/Alex/Desktop/SAP')1460000.1460000.0 8524957.2经过验证,该程序似乎只是忽略了方程的所有其余部分(在第一项之后)。numpy模块有问题吗?啊哈,整数除法!太棒了,+1.Ah-ha,整数除法!太棒了,+1.阅读@PeterGibson的答案,了解原因。这与numpy无关,而是重新排序,先放入一个类似于浮点的数字,这样就不需要截断整数除法。如果您使用
math.pi
等而不是
np.pi
,“数学等价”和“计算等价”是完全不同的事情;)阅读@PeterGibson的答案,了解原因。这与numpy无关,而是重新排序,先放入一个类似于浮点的数字,这样就不需要截断整数除法。如果您使用
math.pi
等而不是
np.pi
,“数学等价”和“计算等价”是完全不同的事情;)