我想知道我的值為 0 的所有點。我希望它顯示在我的情節中。在所有值中都有一條紅線,以使其明顯。我不知道該怎么做,也找不到任何與此類似的 sympy 庫。這是我的代碼:
import inspect
from IPython.display import display, Math
from sympy import *
xi,eta,b,a = symbols("xi,eta,b,a")
Nq = Matrix([[1,xi,eta,xi**2,xi*eta,eta**2,xi**2*eta,xi*eta**2]])
AINV = Matrix([[1,1,1,1,-b,-a,-b,-a],
[0,0,0,0,0,2*a,0,-2*a],
[0,0,0,0,-2*b,0,2*b,0],
[0,0,0,0,0,a,0,a],
[1,-1,1,-1,0,0,0,0],
[0,0,0,0,b,0,b,0],
[-1,-1,1,1,2*b,0,-2*b,0],
[-1,1,1,-1,0,-2*a,0,2*a]])
N = Nq*AINV
N1 = combsimp(N[0])
N2 = combsimp(N[1])
N3 = combsimp(N[2])
N4 = combsimp(N[3])
N5 = combsimp(N[4])
N6 = combsimp(N[5])
N7 = combsimp(N[6])
N8 = combsimp(N[7])
NN = Matrix([[N1,N2,N3,N4,N5,N6,N7,N8]])
NN
%matplotlib notebook
Xi = Matrix([0,12,16,8,4,2,4,7])
Yi = Matrix([4,0,12,7,3,5,7,8])
J1 = diff(NN,xi)*Xi
J2 = diff(NN,xi)*Yi
J3 = diff(NN,eta)*Xi
J4 = diff(NN,eta)*Yi
J = Matrix([[J1,J2],[J3,J4]])
JDet = J.det()
JDetPLOT = JDet.subs(a,1).subs(b,1)
plotting.plot3d(JDetPLOT,(xi,-1,1),(eta,-1,1))
uj5u.com熱心網友回復:
您可以訪問 matplotlib 軸,然后創建一個 3d 等高線圖,如下所示:
p = plotting.plot3d(JDetPLOT,(xi,-1,1),(eta,-1,1))
xx, yy, zz = p[0].get_meshes()
p._backend.ax[0].contour(xx, yy, zz, colors="r", levels=[0])
請注意,我為輪廓設定了一條紅線,但這(很可能)是您將要看到的。Matplotlib 3D 并不是那么好:|
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/486294.html