তাপ সমীকরণের জন্য পর্যায়ক্রমিক সীমানা শর্ত এতে] 0,1 [


13

আসুন আমরা একটি মসৃণ প্রাথমিক অবস্থা এবং তাপের সমীকরণকে এক মাত্রায় বিবেচনা করি: খোলা ব্যবধানে ] 0 , 1 [ এবং আমাদের ধরে নেওয়া যাক আমরা সীমাবদ্ধ পার্থক্য সহ এটি সংখ্যাসমূহে সমাধান করতে চাই।

tu=xxu
]0,1[

আমি জানি যে আমার সমস্যাটি সুস্পষ্ট হওয়ার জন্য, আমাকে এটিকে এবং x = 1 এ সীমানা শর্তের সাথে মানিয়ে নেওয়া দরকার । আমি জানি যে ডিরিচলেট বা নিউম্যান ভাল কাজ করে।x=0x=1

আমি যদি প্রথম ক্ষেত্রে অভ্যন্তর পয়েন্ট x কে = কেN জন্য=1,,এন, তারপর আমিএনঅজানা:Uk=U(এক্স)জন্য=1,,এন, কারণতোমার দর্শন লগ করাগণ্ডি এ নির্ধারিত হয়।xk=kN+1k=1,,NNuk=u(xk)k=1,,Nu

দ্বিতীয় ক্ষেত্রে আমার সত্যিই অজানা u 0 , , u N + 1 রয়েছে এবং আমি জানি যে কীভাবে (সমজাতীয়) নিউমান বিসি ব্যবহার করতে হবে সীমান্তে ল্যাপ্যালসিয়ানকে আলাদা করার জন্য, উদাহরণস্বরূপ দুটি কল্পিত পয়েন্ট সংযোজন সহ x - 1 এবং x N + 2 এবং সমতাগুলি:N+2u0,,uN+1x1xN+2

u1u12h=0=uN+2uN2h

আমার প্রশ্ন পর্যায়ক্রম বিসি সম্পর্কে। আমার অনুভূতি আছে যে আমি একটি সমীকরণ ব্যবহার করতে পারি, যথা তবে সম্ভবত দুটি, এবং তারপরে আমি x u ( 0 ) = x u ( 1 ) ব্যবহার করতে পারি

u(0)=u(1)
xu(0)=xu(1)

কিন্তু আমি নিশ্চিত না. আমার কয়টি অজানা হওয়া উচিত তা আমি জানি না। এটা কি ?N+1


আপনার কি ডিরিচলেট বা নিউম্যান সীমানা শর্ত আছে? ভুতের কোষগুলির সংখ্যা আপনার জন্য নিউমানের সীমানা শর্তগুলির জন্য অনুমানের ক্রমের উপর নির্ভর করে।
ইলিসিয়াভো

@ ইলিসিয়াভো, অনুসন্ধানটি পর্যায়ক্রমিক সীমানা পরিস্থিতি সম্পর্কে।
বিল বার্থ

উত্তর:


8

এটি করার সর্বোত্তম উপায় হ'ল সাময়িক সীমানা শর্তের সংজ্ঞাটি ব্যবহার করা এবং ব্যবহার করে শুরু থেকেই আপনার সমীকরণগুলি সঠিকভাবে সেট আপ করা । আসলে, আরও দৃ strongly়ভাবে, পর্যায়ক্রমের সীমানা শর্তগুলি x = 0 এর সাথে x = 1 সনাক্ত করে । এই কারণে আপনার সমাধান ডোমেনে এই পয়েন্টগুলির মধ্যে কেবল একটি থাকা উচিত। কোনও সীমানা নেই বলে পর্যায়ক্রমিক সীমানা শর্তগুলি ব্যবহার করার সময় একটি উন্মুক্ত ব্যবধানটি বোঝায় না ।u(0)=u(1)x=0x=1

এই সত্যটির অর্থ হল যে আপনাকে এ একটি বিন্দু রাখা উচিত নয় কারণ এটি x = 0 এর সমান । সঙ্গে Discretizing এন + + 1 পয়েন্ট, তারপর আপনি সত্য ব্যবহার সংজ্ঞা দ্বারা, বাঁদিকে বিন্দু এক্স 0 হয় এক্স এন এবং ডানদিকে বিন্দু এক্স এন হয় এক্স 0x=1x=0N+1x0 xNxN x0

পর্যায়ক্রমিক গ্রিডের স্কিম্যাটিক

আপনার PDE এর পরে স্থান হিসাবে disc হিসাবে পৃথক করা যায়

t[x0x1xN]=1Δx2[xN2x0+x1x02x1+x2xN12xN+x0]

tx=1Δx2Ax
A=[21001121000012110012].

অবশ্যই এই ম্যাট্রিক্সটি তৈরি বা সংরক্ষণ করার দরকার নেই। সীমাবদ্ধ পার্থক্যগুলি উড়তে গণনা করা উচিত, বিশেষত প্রয়োজন অনুযায়ী প্রথম এবং শেষ পয়েন্টগুলি পরিচালনা করার যত্ন নেওয়া।

tu=xxu+b(t,x)
x[1,1)uRef(t,x)=exp(t)cos(5πx)b(t,x)=(25π21)exp(t)cos(5πx)
clear

% Solve: u_t = u_xx + b
% with periodic boundary conditions

% analytical solution:
uRef = @(t,x) exp(-t)*cos(5*pi*x);
b = @(t,x) (25*pi^2-1)*exp(-t)*cos(5*pi*x);

% grid
N = 30;
x(:,1) = linspace(-1,1,N+1);

% leave off 1 point so initial condition is periodic
% (doesn't have a duplicate point)
x(end) = [];
uWithMatrix = uRef(0,x);
uNoMatrix = uRef(0,x);

dx = diff(x(1:2));
dt = dx.^2/2;

%Iteration matrix:
e = ones(N,1);
A = spdiags([e -2*e e], -1:1, N, N);
A(N,1) = 1;
A(1,N) = 1;
A = A/dx^2;

%indices (left, center, right) for second order centered difference
iLeft = [numel(x), 1:numel(x)-1]';
iCenter = (1:numel(x))';
iRight = [2:numel(x), 1]';

%plot
figure(1)
clf
hold on
h0=plot(x,uRef(0,x),'k--','linewidth',2);
h1=plot(x,uWithMatrix);
h2=plot(x,uNoMatrix,'o');
ylim([-1.2, 1.2])
legend('Analytical solution','Matrix solution','Matrix-free solution')
ht = title(sprintf('Time t = %0.2f',0));
xlabel('x')
ylabel('u')
drawnow

for t = 0:dt:1
    uWithMatrix = uWithMatrix + dt*( A*uWithMatrix + b(t,x) );
    uNoMatrix = uNoMatrix + dt*(  ( uNoMatrix(iLeft) ...
                                - 2*uNoMatrix(iCenter) ...
                                  + uNoMatrix(iRight) )/dx^2 ...
                                + b(t,x) );
    set(h0,'ydata',uRef(t,x))
    set(h1,'ydata',uWithMatrix)
    set(h2,'ydata',uNoMatrix)
    set(ht,'String',sprintf('Time t = %0.2f',t))
    drawnow
end

প্রাথমিক অবস্থার প্লট

T = 0.5 এ সমাধানের প্লট

T = 1.0 এ সমাধানের প্লট

T = 2.0 এ সমাধানের প্লট


1
দুর্দান্ত ও সহজ সমাধান !! যদি কারও কাছে এখানে পাইথনের বাস্তবায়ন প্রয়োজন হয়
ইলিসিয়াভো

x

@ bela83 আপনি সঠিক যে প্রাথমিক শর্ত ছাড়া আর কিছুই নির্দিষ্ট করার প্রয়োজন নেই। এটি করার ফলে একটি অতি-নির্ধারিত সিস্টেমের ফলাফল হবে। আপনার প্রয়োজনমতো কিছু সময় অন্তর শেষ পয়েন্টগুলির কাছে একটু সতর্কতা অবলম্বন করা উচিত যাতে আপনি পর্যায়ক্রমে চারপাশের জিনিসগুলি যথাযথভাবে মুড়িয়ে রাখেন। এটি করার জন্য অনেকগুলি বৈধ উপায় রয়েছে।
ডগ লিপিনস্কি

-1

মতে এই হিসাবে আপনি নির্ধারিত সময়ের সীমানা শর্ত আরোপ করা উচিত:

u(0,t)=u(1,t)ux(0,t)=ux(1,t)

পশ্চাদপদ ইউরারের স্পষ্টতভাবে হিট সমীকরণকে বিভক্ত করার একটি উপায় হ'ল

un+1unΔt=ui+1n+12uin+1+ui+1n+1Δx2

সমীকরণের সিস্টেমটি সমাধান করা

[IΔtΔx2A][u1n+1u1n+1uNn+1]=[u1nu2nuNn]

যেখানে

A=[210000121000012100001210000120000012]

u0uN+1

u1uN=0u2u02ΔxuN+1uN12Δx=0

ux

[0100010101010100000IΔtΔx2A0000000][u0n+1u1n+1u2n+1uNn+1uN+1n+1]=[00u1nu2nuNn]

যা আপনাকে এন + 2 সমীকরণ এবং এন + 2 অজানা দেয়।

আপনি প্রথম সমীকরণ এবং ভূত কোষ থেকে মুক্তি পেতে পারেন এবং এন সমীকরণ এবং এন অজানা একটি সিস্টেমে পৌঁছাতে পারেন।


u1uNuN]0,1[xk=kN+1xN=NN+1

এটি কেবল সূচকের বিষয়। আপনি দিয়ে শুরু থেকে কোষ (অথবা পয়েন্ট) তোমার দর্শন লগ করাNu0uN1u1uNu1uNu0uN+1

u0=uN+1N+1

uxu(0,t)=u(1,t)ux(0,t)=ux(1,t)

1
u1 = uN আপনার সিস্টেমে একটি অতিরিক্ত বিধিনিষেধ (সমীকরণ u1 − uN = 0) যুক্ত করে
ইলিশিয়াভো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.