2013-05-18 10 views
23

में न्यूनतम सतह समाधान मेरे पास 3 डी समोच्च परिभाषित 3 डी बिंदुओं का एक सेट है। मैं क्या करना चाहता हूं यह इस समोच्च (see Minimal Surfaces in Wikipedia) से संबंधित न्यूनतम सतह का प्रतिनिधित्व प्राप्त करना है। असल में यह एक nonlinear आंशिक अंतर समीकरण हल करने की आवश्यकता है।पायथन

मैटलैब में यह pdenonlin फ़ंक्शन (see Matlab's documentation) का उपयोग करके लगभग सरल है। न्यूनतम सतह की समस्या को हल करने के लिए इसके उपयोग का एक उदाहरण यहां पाया जा सकता है: Minimal Surface Problem on the Unit Disk

मुझे पायथन में ऐसा कार्यान्वयन करने की आवश्यकता है, लेकिन मुझे पता है कि मुझे इस पर कोई वेब संसाधन नहीं मिला है।

क्या कोई मुझे ऐसे कार्यान्वयन के किसी भी संसाधन/उदाहरण बता सकता है?

धन्यवाद, मिगुएल।

अद्यतन

3D सतह (आदर्श एक त्रिकोणीय जाल प्रतिनिधित्व) मैं खोजने के लिए 3 डी अंक के इस सेट से घिरा है चाहते हैं (यह आंकड़ा के रूप में देखा, अंक सबसे फिट विमान में झूठ) :

enter image description here

ठीक है, तो कुछ शोध मैंने पाया कि यह कम से कम सतह समस्या Biharmonic Equation के समाधान के साथ संबंधित है कर रही है, और मैं यह भी पाया कि Thin-plate spline इस समीकरण के लिए मौलिक समाधान है।

तो मुझे लगता है कि दृष्टिकोण पतली प्लेट splines का उपयोग कर सतह के इस स्पैर प्रतिनिधित्व (बिंदुओं के 3 डी समोच्च द्वारा दिया गया) फिट करने की कोशिश करेगा। मुझे this example in scipy.interpolate मिला जहां बिखरे हुए डेटा (एक्स, वाई, जेड प्रारूप) को एक समान ग्रिड (एक्सआई, वाईआई) पर जेडआई निर्देशांक प्राप्त करने के लिए पतली प्लेट splines का उपयोग करके interpolated है।

दो प्रश्न उठते हैं: (1) पतली प्लेट स्पलीन इंटरपोलेशन 3 डी समोच्च बिंदुओं के सेट से सतह की गणना करने की समस्या के लिए सही दृष्टिकोण होगा? (2) यदि हां, तो गैर-यूनिफ़ॉर्म ग्रिड के साथ स्पीसी पर पतली प्लेट इंटरपोलेशन कैसे करें?

फिर से धन्यवाद! मिगुएल

अद्यतन: MATLAB में कार्यान्वयन (लेकिन यह SciPy अजगर पर काम नहीं करता)

मैं Matlab के tpaps समारोह का उपयोग कर this example पीछा किया और कम से कम सतह एक समान ग्रिड पर मेरी समोच्च फिट प्राप्त की। यह मैटलैब में परिणाम है (बहुत अच्छा लगता है!): enter image description here

हालांकि मैं अजगर में इस लागू करने की आवश्यकता है, इसलिए मैं पैकेज scipy.interpolate.Rbf और thin-plate समारोह का उपयोग कर रहा हूँ।

enter image description here

:

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 के नतीजे से अलग क्यों है?

+0

आपके 3 डी अंक और आपके वांछित आउटपुट के बीच संबंध वास्तव में क्या है? क्या आपके पास अंक हैं जो लगभग न्यूनतम सतह पर झूठ बोलते हैं, और आप उस सतह के बीजगणितीय विवरण की तलाश में हैं? या अंक किसी प्रकार की सीमा का वर्णन करते हैं, और आप उस सीमा से परिभाषित न्यूनतम सतह की तलाश में हैं? आपके आउटपुट में किस रूप में होना चाहिए? यह पूरे मैटलैब कोड को देखने में मदद कर सकता है, ताकि कोई भी न्यूनतम सतहों के रूप में व्याख्या को समझने के बिना भी अनुवाद करने के तरीकों की तलाश कर सके। क्या https://launchpad.net/cbcpdesys उपयोगी दिखता है? – MvG

+0

@ एमवीजी: मेरे अपडेट किए गए प्रश्न में अधिक जानकारी देखें। (1) अंक लगभग न्यूनतम सतह पर झूठ बोलते हैं; (2) अंक, अभी तक प्राप्त, सतह (3) की सीमा का वर्णन करते हैं आदर्श रूप से जिस तरह की सतह मैं प्राप्त करना चाहता हूं वह त्रिकोणीय जाल का प्रतिनिधित्व है। – CodificandoBits

+0

http://scicomp.stackexchange.com में भी पूछने का प्रयास करें। – lhf

उत्तर

1

सवाल यह बताता है कि हमें एक nonlinear आंशिक अंतर समीकरण हल करने की जरूरत है। हालांकि विकिपीडिया कहता है कि 'उन्हें अध्ययन करना मुश्किल होता है: ऐसी सभी सामान्य तकनीकें होती हैं जो इस तरह के समीकरणों के लिए काम करती हैं, और आम तौर पर प्रत्येक व्यक्तिगत समीकरण को एक अलग समस्या के रूप में पढ़ना पड़ता है।' हालांकि, आपने समीकरण नहीं दिया! और क्या मैटलैब कभी-कभी अपनी सतहों पर पहुंचने के लिए जेनेटिक एल्गोरिदम का उपयोग करता है? यही है, क्या यह सबसे अच्छा अनुमान लगाने के लिए अंगूठे के नियम का उपयोग करता है और तब घटक वर्गों में छोटी भिन्नता की कोशिश करता है जब तक कि कोई छोटी सतह नहीं मिल पाती। उस तरह के समाधान को कार्यान्वित करना श्रमिक होगा लेकिन अवधारणात्मक रूप से कठिन नहीं होगा (आपको उस तरह की चीज की तरह माना जाता है)। यह भी याद रखें कि निरंतर कार्यों का गणक केवल कार्यों के सभी रैखिक अनुमानों के गणक का एक विशेष मामला है (वृद्धि कुछ सीमित मूल्य के बजाय शून्य पर सेट की गई है)। चिकनी infinitesimal विश्लेषण पर जे एल बेल की किताबें पढ़कर मुझे यह स्पष्ट किया गया था - केवल उस बीजगणित का उपयोग सीमित वृद्धि के साथ करें और परिणामी कारकों को 'उपेक्षित' के बजाय व्युत्पन्न में छोड़ दें।

0

स्पष्ट रूप से मैटलैब और साइपी विभिन्न तरीकों से टीपीएस को समझते हैं। Matlab कार्यान्वयन सही दिखता है। SciPy टीपीएस को अन्य आरबीएफ के समान व्यवहार करता है, इसलिए आप इसे पाइथन में सही तरीके से कार्यान्वित कर सकते हैं - यह संबंधित रैखिक समीकरण प्रणाली के मैट्रिक्स को बनाने और टीपीएस के गुणांक प्राप्त करने के लिए इसे हल करने के लिए पर्याप्त होगा।