5

के लिए सीमित अंतर समाधान में सीमा शर्तों का आवेदन नीचे दिया गया कोड 1 डी गर्मी समीकरण हल करता है जो एक छड़ी का प्रतिनिधित्व करता है जिसका अंत प्रारंभिक स्थिति 10 * np.sin (np.pi) के साथ शून्य temparature पर रखा जाता है *एक्स)।गर्मी समीकरण और क्रैंक-निकोलसन

इस गणना में Dirichlet सीमा की स्थिति (दोनों सिरों पर शून्य temp) कैसे काम करते हैं? मुझे ऊपरी बताया गया था, मैट्रिक्स ए की निचली पंक्तियों में दो गैर-शून्य तत्व होते हैं, और गायब तीसरे तत्व Dirichlet स्थिति है। लेकिन मुझे समझ में नहीं आता कि यह स्थिति किस स्थिति से गणना को प्रभावित करती है। ए में गायब तत्वों के साथ, u_ {0} या u_ {n} शून्य कैसे हो सकता है?

क्रैंक-निकोलसन का उपयोग नीचे सीमित अंतर विधि।

import numpy as np 
import scipy.linalg 

# Number of internal points 
N = 200 

# Calculate Spatial Step-Size 
h = 1/(N+1.0) 
k = h/2 

x = np.linspace(0,1,N+2) 
x = x[1:-1] # get rid of the '0' and '1' at each end 

# Initial Conditions 
u = np.transpose(np.mat(10*np.sin(np.pi*x))) 

# second derivative matrix 
I2 = -2*np.eye(N) 
E = np.diag(np.ones((N-1)), k=1) 
D2 = (I2 + E + E.T)/(h**2) 

I = np.eye(N) 

TFinal = 1 
NumOfTimeSteps = int(TFinal/k) 

for i in range(NumOfTimeSteps): 
    # Solve the System: (I - k/2*D2) u_new = (I + k/2*D2)*u_old 
    A = (I - k/2*D2) 
    b = np.dot((I + k/2*D2), u) 
    u = scipy.linalg.solve(A, b) 

उत्तर

5

चलिए एक साधारण उदाहरण देखें। हम N = 3 है, यानी तीन भीतरी अंक मान, लेकिन हम पहले भी मैट्रिक्स D2 में सीमा अंक अनुमानित दूसरे डेरिवेटिव का वर्णन शामिल होंगे:

 1/1 -2 1 0 0 \ 
D2 = --- | 0 1 -2 1 0 | 
    h^2 \ 0 0 1 -2 1/

पहली पंक्ति 1/h^2 * (u_0 - 2*u_1 + u_2) है इसका मतलब है x_1 पर अनुमानित दूसरा व्युत्पन्न। हम जानते हैं कि u_0 = 0 हालांकि, homgeneous Dirichlet सीमा की स्थिति के कारण है, तो हम बस यह समीकरण से भी हटा सकते हैं, और ई मैट्रिक्स

 1/0 -2 1 0 0 \ 
D2 = --- | 0 1 -2 1 0 | 
    h^2 \ 0 0 1 -2 0/

u_0 के बाद से और u_{n+1} असली अज्ञात नहीं हैं के लिए एक ही परिणाम प्राप्त - वे शून्य होने के लिए जाने जाते हैं - हम पूरी तरह से मैट्रिक्स से उन्हें छोड़ सकते हैं, और हम मैट्रिक्स में

 1/2 1 0 \ 
D2 = --- | 1 -2 1 | 
    h^2 \ 0 1 -2/

लापता प्रविष्टियां प्राप्त वास्तव में तथ्य यह है के अनुरूप है कि सीमा की स्थिति शून्य है।

+1

तो यह कहना सही होगा कि कोड दो कारणों से शुरू होता है और x के अंत में x = x [1: -1] के कारण x के अंत को हटा देता है? ताकि हम आपको एक नया "कम" कर सकें जो "कम" ए को गुणा कर सकता है? – user423805

+2

@ उपयोगकर्ता 423805 - हाँ।और यदि लगाई गई सीमा की स्थिति एक ऐसे फॉर्म के थे जहां आप आसानी से कम ए का निर्माण नहीं कर सके, तो आपको पूर्ण ए और एक्स पर विचार करना होगा। इस (काफी आम) मामले में, एक्स के मान वास्तविक डेटा के अनुरूप नहीं हैं, लेकिन सीमा की स्थिति को लागू करने के तरीकों को आमतौर पर भूत कोशिकाएं या गार्ड कोशिकाएं या संवेदी कोशिकाएं (या नोड्स, या जोन, या आपके पास क्या कहा जाता है) कहा जाता है। –

0

मैं ऊपरी, की मैट्रिक्स एक कम पंक्तियों दो गैर शून्य तत्वों बताया गया था होते हैं, और याद आ रही तीसरी तत्व (कि शून्य है) Dirichlet शर्त है।

मुझे यकीन नहीं है कि आपको क्या बताया गया है, लेकिन यहां मुझे इस समस्या के बारे में पता है।

Dirichlet सीमा की स्थिति संभावित (इस मामले में तापमान) के मूल्य को ठीक करती है। एक न्यूमैन सीमा की स्थिति एक बिंदु पर प्रवाह या पहली व्युत्पन्न निर्दिष्ट करेगा। यदि आपके पास सतह पर संवहन सीमा की स्थिति है तो आपको इसकी आवश्यकता होगी।

Dirichlet सीमा परिस्थितियों का इलाज करने के लिए, आप पहली बार सीमा शर्तों पर विचार किए बिना सिस्टम मैट्रिक्स तैयार करते हैं। यदि आपके पास किसी दिए गए नोड पर एक निश्चित तापमान है, तो आप इसे इस तरह से संभाल सकते हैं:

  1. सीमा तापमान के बराबर दिए गए नोड के लिए दाईं ओर वेक्टर में पंक्ति सेट करें। बाएं हाथ की ओर मैट्रिक्स में उस पंक्ति के सभी कॉलम शून्य करें और उस नोड के अनुरूप विकर्ण तत्व सेट करें जो एक के बराबर है।
संबंधित मुद्दे