np.sum()应用解析
时间: 2024-05-28 18:09:14 浏览: 5
np.sum() 是一个 NumPy 库中的函数,用于计算数组中元素的总和。它可以对整个数组求和,也可以对特定的轴进行求和。举个例子,如果有一个二维数组 a,想对每一列进行求和,则可以使用 np.sum(a, axis=0) 来实现。其中,axis=0 表示对第一个维度进行求和,即对每一列进行求和。如果想对每一行进行求和,则可以使用 np.sum(a, axis=1)。
相关问题
传递矩阵法计算曲轴扭振的python程序
传递矩阵法是一种常用的计算曲轴扭振的方法,可以用Python编写实现。下面是一个基本的程序示例:
``` python
import numpy as np
# 输入参数
N = 4 # 曲轴分段数
J = 0.1 # 曲轴转动惯量
k = 5 # 弹簧刚度
c = 0.02 # 阻尼系数
F = 10 # 外加扭矩
# 计算传递矩阵
w = np.sqrt(k/J) # 自然频率
r = c/(2*np.sqrt(J*k)) # 阻尼比
beta = F/(k*J) # 扭转角度
A = np.array([[0, 1], [-w**2, -2*r*w]])
B = np.array([0, beta*w**2])
C = np.array([1, 0])
D = 0
# 计算传递矩阵
def transfer_matrix(A, B, C, D, N):
T = np.zeros((2*N+1, 2*N+1))
T[0:2, 0:2] = A
T[0:2, 2] = B
T[2, 0:2] = C
for i in range(1, N):
T[2*i:2*i+2, 2*i-2:2*i+2] = A
T[2*i:2*i+2, 2*i+2] = B
T[2*i+2, 2*i:2*i+2] = C
return T
T = transfer_matrix(A, B, C, D, N)
# 计算解析解
eigvals, eigvecs = np.linalg.eig(T)
index = np.argsort(np.abs(eigvals))
eigvals = eigvals[index]
eigvecs = eigvecs[:, index]
u0 = eigvecs[0, :]
u = np.zeros((2*N+1,))
for i in range(2*N+1):
u[i] = u0 @ np.linalg.matrix_power(T, i) @ np.array([0, 1])
# 计算扭转角
theta = beta * np.sum(u[0::2])
print('扭转角度为:%.4f' % theta)
```
在这个程序中,我们先输入了曲轴的一些基本参数,如分段数、转动惯量、弹簧刚度、阻尼系数和外加扭矩等。然后,根据这些参数计算出传递矩阵,并使用传递矩阵法求出解析解。最后,根据解析解计算出扭转角。
需要注意的是,这个程序只是一个基本的示例,实际应用中可能需要根据具体情况进行修改和优化。
DEA非凸共同前沿的代码
DEA (Data Envelopment Analysis) 是一种用于评估效率的工具,特别是在经济学和运营管理中。非凸共同前沿(Non-Convex Common Frontier, NCCF)是指在 DEA 模型中,当决策变量的数量大于或等于决策单元数量时,可能存在的效率边界不是凸集的情况。
在编写 DEA 非凸共同前沿的代码时,通常使用数学优化库,如 Python 的 `scipy.optimize` 或专门针对 DEA 的库,如 `pyDEA`。以下是一个简化的例子,展示了如何使用 `scipy.optimize` 来寻找非凸解:
```python
from scipy.optimize import linprog, NonlinearConstraint
import numpy as np
# 假设我们有如下数据(产出矩阵 Y, 资源矩阵 X)
Y = np.array([[y1_1, y1_2], [y2_1, y2_2], ...]) # 形状为 (n_units, n_outputs)
X = np.array([[x1_1, x1_2], [x2_1, x2_2], ...]) # 形状为 (n_units, n_inputs)
# 设定目标函数(最大化产出或最小化资源使用)
c = np.ones(Y.shape)
A_ub = -np.eye(Y.shape) # 表示资源使用不超过产出
b_ub = Y.sum(axis=1)
# 建立非凸约束
def non_convex_constraint(x):
# 这里假设有一个非凸的不等式约束,例如 x1 * x2 <= k
return np.prod(x[:2])
nonconvex_constr = NonlinearConstraint(non_convex_constraint, 0, np.inf, jac=lambda x: np.array([x * x, x * x]))
# 使用linprog解决非线性规划问题
res = linprog(c, A_ub=A_ub, b_ub=b_ub, constraints=[nonconvex_constr])
# 解析 res
efficiency_scores = res.fun
frontier_efficiency = res.x
# 注意:这只是一个简化版本,实际应用可能需要更复杂的模型和更多的错误检查
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)