【发布时间】:2020-05-12 05:46:12
【问题描述】:
在我的代码中,我想计算 Q 相对于 l 和 d 变化的变化,但我收到 TypeError: bad operand type for unary -: 'tuple' 如何解决此问题的错误
p>import numpy as np
import matplotlib.pyplot as plt
def plot_with_variating_D ():
l = np.arange(1, 1.5, 0.01)
d = np.arange(0.005, 0.015, 0.0002)
zero=np.zeros(50)
one=np.ones(50)
Eb1 = 3543.75
A1 = 1
A2 = np.pi * (d / 2)
A3 = np.pi
F11 = 0
F21 = 2 * (np.arctan(0.5 / l) * (180 / np.pi)) / 360
F12 = (d * np.pi * F21)
F12p = (((4 / l ** 2) + 4) ** 0.5 - 2) * (l / 2)
F13 = F12p - F12
F14 = 1 - F12 - F13
F23 = 0.5
F24 = 1 - F21 - F23
F34 = F14 / np.pi
rho = 0.7
k = 0.04
pr = 0.7
cp = 1005
myu = 2.4 * 10 ** -5
alpha = 5.68 * 10 ** -5
beta = 1 / 500
Ra = (rho * 9.81 * beta * (500 - 293) * l) / (myu * alpha)
Nu = 0.68 + (0.67 * Ra ** 0.25) / (1 + (0.429 / pr) ** (9 / 16)) ** (4 / 9)
h = Nu * k
J1 = 3543.75 + 0.42 * h * (500 - 295)
a = np.array([[F12,F13, zero], [A2*F23,-(A2*F23+F13,zero)], [-(4*A2+F12+A2*F23),A2*F23,4*A2]])
b = np.array([7*(J1-Eb1)/3 +F12*J1+F13*J1,-F13*J1,-F12*J1])
x = np.linalg.solve(np.moveaxis(a, -1, 0), np.moveaxis(b,-1,0))
x = x.T
J2 = -x[0]
J3 = x[1]
Eb2 = -x[2]
qrad = (Eb2 - J2)*(0.8 * A2) / 0.2
print(Eb2)
return qrad
plot_with_variating_D()
【问题讨论】:
-
请添加完整的回溯
-
d是一个范围,这意味着多个值(即一个元组),您到底想要实现什么? -
文件“C:/Users/user/pythonn/heat.py”,第 52 行,在
plot_with_variating_D() 文件“C:/Users/user/pythonn/heat.py”中,第 42 行,在 plot_with_variating_D x = np.linalg.solve(np.moveaxis(a, -1, 0), b) 文件“<__array_function__ internals>”,第 6 行,在求解文件“C:\Users\user\pythonn \numpy\linalg\linalg.py”,第 385 行,在求解 _assert_stacked_2d(a) 文件“C:\Users\user\pythonn\numpy\linalg\linalg.py”,第 207 行,在 _assert_stacked_2d 中'至少二维' % a.ndim) numpy.linalg.LinAlgError:给定的一维数组。数组必须至少是二维的 -
我想根据 D 和 L 的新值计算 qrad
标签: python python-3.x python-2.7