में न्यूनतम सतह समाधान मेरे पास 3 डी समोच्च परिभाषित 3 डी बिंदुओं का एक सेट है। मैं क्या करना चाहता हूं यह इस समोच्च (see Minimal Surfaces in Wikipedia) से संबंधित न्यूनतम सतह का प्रतिनिधित्व प्राप्त करना है। असल में यह एक nonlinear आंशिक अंतर समीकरण हल करने की आवश्यकता है।पायथन
मैटलैब में यह pdenonlin
फ़ंक्शन (see Matlab's documentation) का उपयोग करके लगभग सरल है। न्यूनतम सतह की समस्या को हल करने के लिए इसके उपयोग का एक उदाहरण यहां पाया जा सकता है: Minimal Surface Problem on the Unit Disk।
मुझे पायथन में ऐसा कार्यान्वयन करने की आवश्यकता है, लेकिन मुझे पता है कि मुझे इस पर कोई वेब संसाधन नहीं मिला है।
क्या कोई मुझे ऐसे कार्यान्वयन के किसी भी संसाधन/उदाहरण बता सकता है?
धन्यवाद, मिगुएल।
अद्यतन
3D सतह (आदर्श एक त्रिकोणीय जाल प्रतिनिधित्व) मैं खोजने के लिए 3 डी अंक के इस सेट से घिरा है चाहते हैं (यह आंकड़ा के रूप में देखा, अंक सबसे फिट विमान में झूठ) :
ठीक है, तो कुछ शोध मैंने पाया कि यह कम से कम सतह समस्या Biharmonic Equation के समाधान के साथ संबंधित है कर रही है, और मैं यह भी पाया कि Thin-plate spline इस समीकरण के लिए मौलिक समाधान है।
तो मुझे लगता है कि दृष्टिकोण पतली प्लेट splines का उपयोग कर सतह के इस स्पैर प्रतिनिधित्व (बिंदुओं के 3 डी समोच्च द्वारा दिया गया) फिट करने की कोशिश करेगा। मुझे this example in scipy.interpolate मिला जहां बिखरे हुए डेटा (एक्स, वाई, जेड प्रारूप) को एक समान ग्रिड (एक्सआई, वाईआई) पर जेडआई निर्देशांक प्राप्त करने के लिए पतली प्लेट splines का उपयोग करके interpolated है।
दो प्रश्न उठते हैं: (1) पतली प्लेट स्पलीन इंटरपोलेशन 3 डी समोच्च बिंदुओं के सेट से सतह की गणना करने की समस्या के लिए सही दृष्टिकोण होगा? (2) यदि हां, तो गैर-यूनिफ़ॉर्म ग्रिड के साथ स्पीसी पर पतली प्लेट इंटरपोलेशन कैसे करें?
फिर से धन्यवाद! मिगुएल
अद्यतन: MATLAB में कार्यान्वयन (लेकिन यह SciPy अजगर पर काम नहीं करता)
मैं Matlab के tpaps
समारोह का उपयोग कर this example पीछा किया और कम से कम सतह एक समान ग्रिड पर मेरी समोच्च फिट प्राप्त की। यह मैटलैब में परिणाम है (बहुत अच्छा लगता है!):
हालांकि मैं अजगर में इस लागू करने की आवश्यकता है, इसलिए मैं पैकेज scipy.interpolate.Rbf और thin-plate
समारोह का उपयोग कर रहा हूँ।
:
GRID_POINTS = 25
x_min = XYZ[:,0].min()
x_max = XYZ[:,0].max()
y_min = XYZ[:,1].min()
y_max = XYZ[:,1].max()
xi = np.linspace(x_min, x_max, GRID_POINTS)
yi = np.linspace(y_min, y_max, GRID_POINTS)
XI, YI = np.meshgrid(xi, yi)
from scipy.interpolate import Rbf
rbf = Rbf(XYZ[:,0],XYZ[:,1],XYZ[:,2],function='thin-plate',smooth=0.0)
ZI = rbf(XI,YI)
हालांकि इस परिणाम (मैटलैब में प्राप्त है कि से काफी अलग) है: यहाँ अजगर में कोड (XYZ
समोच्च में 3 डी प्रत्येक बिंदु के निर्देशांक शामिल है) है यह स्पष्ट है कि scipy का परिणाम कम से कम सतह के अनुरूप नहीं है।
scipy.interpolate.Rbf + पतली प्लेट अपेक्षा के अनुसार कर रही है, यह Matlab के नतीजे से अलग क्यों है?
आपके 3 डी अंक और आपके वांछित आउटपुट के बीच संबंध वास्तव में क्या है? क्या आपके पास अंक हैं जो लगभग न्यूनतम सतह पर झूठ बोलते हैं, और आप उस सतह के बीजगणितीय विवरण की तलाश में हैं? या अंक किसी प्रकार की सीमा का वर्णन करते हैं, और आप उस सीमा से परिभाषित न्यूनतम सतह की तलाश में हैं? आपके आउटपुट में किस रूप में होना चाहिए? यह पूरे मैटलैब कोड को देखने में मदद कर सकता है, ताकि कोई भी न्यूनतम सतहों के रूप में व्याख्या को समझने के बिना भी अनुवाद करने के तरीकों की तलाश कर सके। क्या https://launchpad.net/cbcpdesys उपयोगी दिखता है? – MvG
@ एमवीजी: मेरे अपडेट किए गए प्रश्न में अधिक जानकारी देखें। (1) अंक लगभग न्यूनतम सतह पर झूठ बोलते हैं; (2) अंक, अभी तक प्राप्त, सतह (3) की सीमा का वर्णन करते हैं आदर्श रूप से जिस तरह की सतह मैं प्राप्त करना चाहता हूं वह त्रिकोणीय जाल का प्रतिनिधित्व है। – CodificandoBits
http://scicomp.stackexchange.com में भी पूछने का प्रयास करें। – lhf