TypeError:无法将sequence乘以“tuple”类型的nonit

2024-10-01 17:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的第一个模块有以下三个模块:

import numpy as np
import matplotlib as plt
import math
import beginvalues as bv


def func(lijst,t):
    x = lijst[0]
    y = lijst[1]
    z = lijst[2]

    G = 6,67e-14
    MBH = 9,94e38
    N = 1 + x**2 + y**2/bv.a**2 + z**2/bv.b**2
    NT = (1e-3 + x**2 + y**2 + z**2)**(3/2)

    a_x = -(220**2)*x/N - (G * MBH * x)/NT
    a_y = -(220**2)*y/(N*bv.a**2) - (G * MBH * y )/NT
    a_z = -(220**2)*z/(N*bv.b**2) - (G * MBH * z )/NT
    return [lijst[3],lijst[4],lijst[5],a_x,a_y,a_z]

我的一秒钟:

^{pr2}$

我的第三个:

import bvgzwartgat as bvg
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
import beginvalues as bv


# We voeren een tijdsintegratie door van 0 tot 13*10^9 in 10000 stappen.
# De beginvoorwaarden worden geinitialiseerd in de module "beginvalues".
# TIJDSEENHEID?????????????????? kpc/km/s = 978 10^6 jaar
t=np.linspace(0,15,10000)
I=odeint(bvg.func,bv.init_val,t)




# 2d plotjes 
X=[]
Y=[]
Z=[]
for i in range(len(I)):
    kolom = I[i]
    X.append(kolom[0])
    Y.append(kolom[1])
    Z.append(kolom[2])



plt.figure("x-y projectie")
plt.plot(X,Y)

plt.figure("x-z projectie")
plt.plot(X,Z)

plt.figure("y-z projectie")
plt.plot(Y,Z)
plt.show( )

现在我在尝试从主模块第三个模块运行程序时遇到以下错误: 在函数中 a_x=-(220**2)*x/N-(G*MBH*x)/NT TypeError:无法将sequence乘以“tuple”类型的非int

所以我认为程序认为一个∗x是一个元组,我要做的是计算 a_x、a_y和a_z,起始值为使用odeint初始化的值。在

这段代码以前在没有(G*MBH*x)/NT部分的情况下运行得很好 所以我想我们得弄清楚为什么程序会认为一个x是一个序列。在


Tags: 模块inimportasnppltfigureappend

热门问题