बस कुछ और विचारों को जोड़ने के लिए जो अनियमित डोमेन प्रकार की समस्याओं के साथ दूसरों की मदद कर सकते हैं। ऐसी स्थिति के लिए जहां उपयोगकर्ता के पास 3 डी / सूची, x, y, z एक 2D समाधान का प्रतिनिधित्व करता है जहां z को एक आयताकार ग्रिड पर एक सतह के रूप में प्लॉट किया जाना है, ArtifixR द्वारा 'plot_trisurf ()' टिप्पणियां लागू होती हैं। एक समान उदाहरण लेकिन गैर आयताकार डोमेन के साथ है:
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
# problem parameters
nu = 50; nv = 50
u = np.linspace(0, 2*np.pi, nu,)
v = np.linspace(0, np.pi, nv,)
xx = np.zeros((nu,nv),dtype='d')
yy = np.zeros((nu,nv),dtype='d')
zz = np.zeros((nu,nv),dtype='d')
# populate x,y,z arrays
for i in range(nu):
for j in range(nv):
xx[i,j] = np.sin(v[j])*np.cos(u[i])
yy[i,j] = np.sin(v[j])*np.sin(u[i])
zz[i,j] = np.exp(-4*(xx[i,j]**2 + yy[i,j]**2)) # bell curve
# convert arrays to vectors
x = xx.flatten()
y = yy.flatten()
z = zz.flatten()
# Plot solution surface
fig = plt.figure(figsize=(6,6))
ax = Axes3D(fig)
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0,
antialiased=False)
ax.set_title(r'trisurf example',fontsize=16, color='k')
ax.view_init(60, 35)
fig.tight_layout()
plt.show()
उपरोक्त कोड का उत्पादन:
हालाँकि, यह सभी समस्याओं को हल नहीं कर सकता है, विशेष रूप से जहां समस्या एक अनियमित डोमेन पर परिभाषित की गई है। इसके अलावा, उस मामले में जहां डोमेन में एक या अधिक अवतल क्षेत्र होते हैं, delaunay त्रिकोण के परिणामस्वरूप डोमेन के लिए बाहरी त्रिभुज बाहरी उत्पन्न हो सकते हैं। ऐसे मामलों में, सही सतह प्रतिनिधित्व प्राप्त करने के लिए इन दुष्ट त्रिकोणों को त्रिकोण से हटाया जाना चाहिए। इन स्थितियों के लिए, उपयोगकर्ता को स्पष्ट रूप से delaunay triangulation गणना को शामिल करना पड़ सकता है ताकि इन त्रिकोणों को प्रोग्रामेटिक रूप से हटाया जा सके। इन परिस्थितियों में, निम्न कोड पिछले प्लॉट कोड को बदल सकता है:
import matplotlib.tri as mtri
import scipy.spatial
# plot final solution
pts = np.vstack([x, y]).T
tess = scipy.spatial.Delaunay(pts) # tessilation
# Create the matplotlib Triangulation object
xx = tess.points[:, 0]
yy = tess.points[:, 1]
tri = tess.vertices # or tess.simplices depending on scipy version
#############################################################
# NOTE: If 2D domain has concave properties one has to
# remove delaunay triangles that are exterior to the domain.
# This operation is problem specific!
# For simple situations create a polygon of the
# domain from boundary nodes and identify triangles
# in 'tri' outside the polygon. Then delete them from
# 'tri'.
# <ADD THE CODE HERE>
#############################################################
triDat = mtri.Triangulation(x=pts[:, 0], y=pts[:, 1], triangles=tri)
# Plot solution surface
fig = plt.figure(figsize=(6,6))
ax = fig.gca(projection='3d')
ax.plot_trisurf(triDat, z, linewidth=0, edgecolor='none',
antialiased=False, cmap=cm.jet)
ax.set_title(r'trisurf with delaunay triangulation',
fontsize=16, color='k')
plt.show()
उदाहरण भूखंडों को 1 हल के नीचे दिए गए हैं) जो शानदार त्रिकोण के साथ हैं, और 2) जहां उन्हें हटा दिया गया है:
मुझे उम्मीद है कि उपरोक्त समाधान डेटा में संक्षिप्त स्थितियों वाले लोगों की मदद के लिए हो सकता है।