我正在嘗試?yán)L制3D矢量場(chǎng)。我使用以下示例作為指導(dǎo):from mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.gca(projection='3d')x, y, z = np.meshgrid(np.arange(-0.8, 1, 0.2), np.arange(-0.8, 1, 0.2), np.arange(-0.8, 1, 0.8))u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) * np.sin(np.pi * z))ax.quiver(x, y, z, u, v, w, length=0.1)plt.show()此示例來(lái)自 matplotlib 示例庫(kù)。但是,我想嘗試使用其他函數(shù)來(lái)替換u,v和w,如下所示:from mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.gca(projection='3d')x,y,z = np.meshgrid(np.arange(-0.1,0.005,0.1),np.arange(-0.1,0.005,0.1),np.arange(-0.1,0.005,0.1))VolMag = 3.218E-6 #Volume of magnet in experiment in m^3BR = np.sqrt(x**2 + y**2 + z**2)MagMoment = np.array([0,0,(BInput*VolMag)/u0])Bx = (u0/(4*np.pi))*(3*x*MagMoment*z)/BR**5By = (u0/(4*np.pi))*(3*y*MagMoment*z)/BR**5Bz = (u0/(4*np.pi))*((3*z*MagMoment*(z**2)/BR**5 - MagMoment/BR**3)ax.quiver(x,y,z,Bx,By,Bz,length=0.1)plt.show()這給了我第16行的“無(wú)效語(yǔ)法”錯(cuò)誤。這是為什么呢?我只更改了函數(shù)和定義的一些名稱。
1 回答

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
看起來(lái)你在這一行上缺少一個(gè)右括號(hào)。
Bz = (u0/(4*np.pi))*((3*z*MagMoment*(z**2)/BR**5 - MagMoment/BR**3)
應(yīng)該是
Bz = (u0/(4*np.pi))*((3*z*MagMoment*(z**2)/BR**5 - MagMoment/BR**3))
添加回答
舉報(bào)
0/150
提交
取消