সীমাবদ্ধ পার্থক্য পদ্ধতি অনুসারে অ্যাডভেকশন সমীকরণের জন্য সীমানা পরিস্থিতি


14

আমি পিডিইগুলি সমাধানের জন্য সীমাবদ্ধ পার্থক্য পদ্ধতি ব্যবহার করার সময় সীমানা পরিস্থিতি কীভাবে বেছে নেব তা ব্যাখ্যা করার জন্য কিছু সংস্থান সন্ধান করার চেষ্টা করছি।

আমার কাছে বর্তমানে যে সমস্ত বই এবং নোট অ্যাক্সেস রয়েছে সেগুলি একই কথা বলে:

সীমাগুলির উপস্থিতিতে স্থিতিশীলতা পরিচালনা করার সাধারণ নিয়মগুলি একটি প্রাথমিক পাঠকের পক্ষে অনেক জটিল; তাদের পরিশীলিত গাণিতিক যন্ত্রপাতি প্রয়োজন

(উ। আইসরলেস ডিফারেনশিয়াল সমীকরণের সংখ্যা বিশ্লেষণে প্রথম কোর্স)

উদাহরণস্বরূপ, অ্যাডভেকশন সমীকরণের জন্য 2-পদক্ষেপের লিপফ্রোগ পদ্ধতিটি প্রয়োগ করার চেষ্টা করার সময়:

uin+1=uin1+μ(ui+1nui-1এন)

ম্যাটল্যাব ব্যবহার করছি

M = 100; N = 100;

mu = 0.5;

c = [mu 0 -mu];
f = @(x)(exp(-100*(x-0.5).^2));

u  = zeros (M, N);
x = 1/(M+1) * (1:M);

u(:,1) = f(x);
u(:,2) = f(x + mu/(M+1));

for i = 3:N
    hold off;
    u(:,i) = conv(u(:,i-1),c,'same') + u(:,i-2);
    plot(x, u(:,i));
    axis( [ 0 1 0 2] )
    drawnow;
end

সমাধানটি সীমানায় না পৌঁছানো পর্যন্ত ভাল আচরণ করে, যখন খুব হঠাৎ এটি খারাপ আচরণ শুরু করে।

এইরকম সীমানা পরিস্থিতি পরিচালনা করতে আমি কোথায় শিখতে পারি?

উত্তর:


12

স্লোডের প্রতিক্রিয়া খুব পুরোপুরি এবং সঠিক। আমি আরও সহজ করে আঁকতে আরও কিছু পয়েন্ট যুক্ত করতে চেয়েছিলাম।

মূলত, যে কোনও তরঙ্গ সমীকরণের অন্তর্নিহিত তরঙ্গ গতি এবং দিক থাকে। এক-মাত্রিক তরঙ্গ সমীকরণের জন্য: তরঙ্গ গতি একটি ধ্রুবক যা কেবলমাত্র ডোমেনে তথ্য প্রচার করছে তার গতিই নয়, তার দিকও নির্ধারণ করে। যদি একটি > 0 , তথ্য বাঁ দিক থেকে ডানদিকে যাচ্ছে এবং যদি একটি < 0 এটি প্রায় অন্যান্য উপায়।

তোমার দর্শন লগ করাটি+ +একটিতোমার দর্শন লগ করাএক্স=0
একটিএকটি>0একটি<0

লিপ ব্যাঙের পদ্ধতির জন্য, আপনি যে সমীকরণগুলি পেয়েছেন তা বিবেচনা করুন: বা: ইউ এন i =ইউ এন - 2 আই +μ(ইউ এন - 1 আই + 1 -ইউ এন - 1 আই - 1 )যেখানেμ=-Δটি/Δএক্স। আপনার ক্ষেত্রে,μ>0

তোমার দর্শন লগ করাআমিএন-তোমার দর্শন লগ করাআমিএন-22Δটি+ +একটিতোমার দর্শন লগ করাআমি+ +1এন-1-তোমার দর্শন লগ করাআমি-1এন-12Δএক্স=0
তোমার দর্শন লগ করাআমিএন=তোমার দর্শন লগ করাআমিএন-2+ +μ(তোমার দর্শন লগ করাআমি+ +1এন-1-তোমার দর্শন লগ করাআমি-1এন-1)
μ=-একটিΔটি/Δএক্সμ>0যা বাম দিকে যেতে একটি তরঙ্গে অনুবাদ করে। এখন আপনি যদি এটির বিষয়ে চিন্তা করেন তবে একটি তরঙ্গ যা বাম দিকে ভ্রমণ করছে, কেবলমাত্র ডান সীমানায় একটি সীমানা শর্তের প্রয়োজন হবে কারণ বামে সমস্ত মানগুলি তাদের ডান প্রতিবেশীদের মাধ্যমে আপডেট করা হচ্ছে। বাস্তবে বাম সীমানায় কোনও মান উল্লেখ করা সমস্যার প্রকৃতির সাথে সঙ্গতিপূর্ণ নয়। কিছু সাধারণ পদ্ধতিতে যেমন সহজ আপুইন্ড, এটি স্বয়ংক্রিয়ভাবে যত্ন নেওয়া হয় কারণ স্কিমটিতে এটির স্টেনসিলের মধ্যে কেবল সঠিক প্রতিবেশীদেরও অন্তর্ভুক্ত রয়েছে। অন্যান্য পদ্ধতিতে, লিপ ব্যাঙের মতো, আপনাকে কিছু "সঠিক" মান নির্দিষ্ট করতে হবে।

অনুপস্থিত মানটি খুঁজে পেতে এটি সাধারণত অভ্যন্তরীণ ডোমেন থেকে এক্সট্রাপোলেশনের মাধ্যমে করা হয়। বহুমাত্রিক এবং অ-প্রচ্ছন্ন সমস্যার জন্য, সীমাটির কোন অংশে আসলে সীমানা শর্তের প্রয়োজন হয় এবং কোন অংশগুলিতে এক্সট্রোপোলেশন প্রয়োজন হয় তা নির্ধারণ করতে ফ্লাক্স জ্যাকবিয়ানের সমস্ত ইগেন-ভেক্টর সন্ধান করা জড়িত।


শারীরিকভাবে, এই সমীকরণটি বাম এবং ডানদিকে সীমানা শর্তের সাথে ব্যবহার করার অর্থ কী?
ফ্র্যাঙ্ক

5

সাধারণ উত্তর
আপনার সমস্যাটি হ'ল আপনি সীমানা শর্তগুলি মোটেও সেট (বা এমনকি নির্দিষ্ট) করেন না - আপনার সংখ্যাগত সমস্যাটি সংজ্ঞায়িত।

সাধারণত, সীমানা শর্তগুলি নির্দিষ্ট করার জন্য দুটি সম্ভাব্য উপায় রয়েছে:

  1. নির্দিষ্ট করে বাউন্ডারি শর্তগুলি সেট করুন তোমার দর্শন লগ করা0 এবং তোমার দর্শন লগ করা101 বাহ্যিকভাবে, যেমন সঠিক সমাধানের মাধ্যমে।
  2. সংখ্যার স্টেনসিল পরিবর্তন করুন যাতে এটি সীমানায় কেবল অভ্যন্তরীণ তথ্য ব্যবহার করবে।

আপনি কোন পথে ভারী হয়ে যান তা আপনার সমস্যার পদার্থবিজ্ঞানের উপর নির্ভর করে। তরঙ্গ-সমীকরণ ধরণের সমস্যার জন্য বাহ্যিক সীমানা শর্তের প্রয়োজন হয় কিনা, বা অভ্যন্তরীণ সমাধানটি ব্যবহার করা হয় কিনা তা স্থির করতে (সাধারণত এই পদ্ধতিটিকে 'আপুইন্ডিং' বলা হয়) তা নির্ধারণের জন্য সাধারণত ফ্লাক্স জ্যাকবিয়ানের ইগেনভ্যালুগুলি নির্ধারণ করে।


দ্রুত ফিক্স
আপনার স্কিমে, সংখ্যাসূচক স্টেনসিলের মানগুলির প্রয়োজনতোমার দর্শন লগ করাআমি-1এন এবং তোমার দর্শন লগ করাআমি+ +1এন লোকেশন এ একটি মান গণনা করতে আমি সময় জন্য এন+ +1। সুতরাং বাম ডোমেন সীমানা (যেমনআমি=1) এর মান দরকার হবে তোমার দর্শন লগ করা0এন, যা আপনি আপনার কোড উদাহরণে সেট করেন নি। একই সমস্যা উত্থাপিত হয়তোমার দর্শন লগ করা100এন+ +1, যা প্রয়োজন তোমার দর্শন লগ করা101এন স্টেনসিল তৈরি করতে।

কাছাকাছি যাওয়ার একটি সহজ উপায় সেট করা ছিল তোমার দর্শন লগ করা1এন এবং তোমার দর্শন লগ করা100এনপ্রতিটি সময় পদক্ষেপে ম্যানুয়ালি অভ্যন্তরীণ সমাধান থেকে রৈখিকভাবে ইন্টারপোল্ট করে এটি আসলে শারীরিক নয় (কারণ এটি প্রকৃত তরঙ্গের গতি বিবেচনা করে না), তবে আপনার ক্ষেত্রে এটি প্রথম সন্তোষজনক সমাধানের আচরণের দিকে পরিচালিত করবে।

আপনি নীচে আপনার উত্স কোডের একটি পরিবর্তিত সংস্করণ খুঁজে পেতে পারেন:

M = 100; N = 100;

mu = 0.5;

c = [mu 0 -mu];
f = @(x)(exp(-100*(x-0.5).^2));

u  = zeros (M, N);
x = 1/(M+1) * (1:M);

u(:,1) = f(x);
u(:,2) = f(x + mu/(M+1));

for i = 3:N
    hold off;
    %u(:,i) = conv(u(:,i-1),c,'same') + u(:,i-2);

    % Apply the numerical stencil to all interior points
    for j = 2:M-1
        u(j,i) = u(j,i-2) + mu*(u(j+1,i-1) - u(j-1,i-1));
    end

    % Set the boundary values by interpolating linearly from the interior
    u(1,i) = 2*u(2,i) - u(3,i);
    u(M,i) = 2*u(M-1,i) - u(M-2,i);

    plot(x, u(:,i));
    axis( [ 0 1 0 2] )
    drawnow;
end

ভাল উত্তর, এবং scicomp স্বাগতম, স্লোডে। একটি প্রশ্ন, সাধারণত আমি দেখতে পাই "আপুইন্ডিং" একতরফা স্টেনসিলের ব্যবহার হিসাবে সংজ্ঞায়িত যেখানে ডোমেনের কেবলমাত্র একটি সীমানা থেকে তথ্য আঁকা। আপনার প্রতিক্রিয়াতে কি এটি বলতে চাচ্ছেন?
অরন আহমদিয়া

1
হ্যাঁ, সত্যিই। দুঃখিত, আমার উত্তরটি যথেষ্ট পরিষ্কার না হলে। সাধারণত, তবে "আপুইন্ডিং" এর অর্থ হ'ল আপনি তথ্য প্রবাহের দিকটি বিবেচনায় নিচ্ছেন। এর অর্থ এই নয় যে আপনি সমাধানের এক দিক পুরোপুরি বাতিল করে দিন, এর ঠিক অর্থ হ'ল আপনি যে অংশটিকে "উর্ধ্বমুখী" দিকের মধ্যে রেখেছেন সে অংশটিকেই অগ্রাধিকার দিন।
মাইকেল শ্লোটকে-লেকম্পার

আপনি যদি N = 1000কোডটি কিছুটা দীর্ঘ তৈরি করেন এবং চালনা করেন তবে দেখতে পাবেন যে এটি আশানুরূপভাবে আচরণ করে না।
সাইমন মরিস

এর কারণ হ'ল আমার "কুইক ফিক্স" সমাধানটি শারীরিকভাবে সুগঠিত নয় এবং এর উপরে সমাধানের মধ্যে উত্সাহিত দোলনের ক্ষেত্রে সংবেদনশীল। প্রকৃত বৈজ্ঞানিক গণনার জন্য এটি ব্যবহার করবেন না!
মাইকেল শ্লোটকে-লেকম্পার

2

সুতরাং আমি এটিকে আরও কিছু বিশদে দেখেছি এবং দেখে মনে হচ্ছে এটি (কমপক্ষে প্রাথমিক ক্ষেত্রে যা আমি পরিচালনা করছি) পদ্ধতির গ্রুপ বেগের উপর নির্ভর করে।

লিপফ্রোগ পদ্ধতি (উদাহরণস্বরূপ) হ'ল:

তোমার দর্শন লগ করাআমিএন+ +1=তোমার দর্শন লগ করাআমিএন-1+ +μ(তোমার দর্শন লগ করাআমি+ +1এন-তোমার দর্শন লগ করাআমি-1এন)

ফর্মের সমাধানের চেষ্টা করছেন তোমার দর্শন লগ করাএন=আমি(ζΔএক্স+ +ω(ζ)এনΔটি) আমরা খুঁজি:

2আমিωΔটি=1+ +μআমিωΔটি(আমিζΔএক্স--আমিζΔএক্স)

পাপ(ωΔটি)=μপাপ(ζΔএক্স)

ωζ=কোসাইন্(ζΔএক্স)1-μ2গুলিআমিএন2(ζΔএক্স)[-1,1]

এখন আমাদের সীমানা শর্তগুলির গ্রুপের বেগ খুঁজে বের করতে হবে:

আমার পদ্ধতি :u1n+2=u1n+μu2n+1

We can compute the boundary group velocity as follows:

2isin(ωΔt)=μeiζΔx

so to find some group velocities which the boundaries allow we need to find:

ω=cζ

কোসাইন্(ζΔএক্স)=0,μপাপ(ζΔএক্স)=2পাপ(ζΔটি)

ζ=π2Δএক্স দিতে হবে μ=2পাপ(μπ2) যার জন্য একটি সমাধান [-1,1]অস্তিত্ব থাকবে। (সর্বাধিক পছন্দ জন্যμ অন্তত)


সাহিত্যে আমি যে সমাধানটি পেয়েছি তা হ'ল তোমার দর্শন লগ করা0এন+ +1=তোমার দর্শন লগ করা1এন যেহেতু এটির বাইরে সীমানা তরঙ্গ সংখ্যা রয়েছে [-1,1]

I've still quite quite a bit more to read up about this before I understand it completely. I think the key words I'm looking for are GKS theory.

Source for all this A Iserles Part III notes


A clearer calculation of what I've done can be found here: http://people.maths.ox.ac.uk/trefethen/publication/PDF/1983_7.pdf


-2

বলছি আমি এই সাইটে খুব নতুন। সম্ভবত এটি জিজ্ঞাসা করার জায়গা নয়, তবে দয়া করে আমাকে ক্ষমা করুন কারণ আমি এখানে খুব নতুন আছি :) আমার একটি খুব অনুরূপ সমস্যা হচ্ছে, কেবলমাত্র তফাতটি এটিই শুরু করা ফাংশন যা আমার ক্ষেত্রে, একটি কোসাইন ওয়েভ। আমার কোডটি হ'ল: সাফ করুন; CLC; সব বন্ধ করা;

এম = 1000; এন = 2100;

মিউ = 0.5;

সি = [মিউ 0-মিম]; f = @ (x) 1- কোস (20 * পাই * x-0.025) ^ 2; u = জিরোস (এম, এন); এক্স = 0: (1 / এম): 0.05; u (1: দৈর্ঘ্য (এক্স), 1) = চ (এক্স); u (1: দৈর্ঘ্য (এক্স), 2) = চ (এক্স - মিউ / (এম)); এক্স = linspace (0,1, এম);

i = 3: N হোল্ড অফ;

% Apply the numerical stencil to all interior points
for j = 2:M-1
    u(j,i) = u(j,i-2) - mu*(u(j+1,i-1) - u(j-1,i-1));
end

% Set the boundary values by interpolating linearly from the interior
u(M,i) =  2*u(M-1,i-1) - u(M-2,i-1);

প্লট (এক্স, ইউ (:, আই)); অক্ষ ([0 1.5 -0.5 2]) আঁকুন; % বিরতি শেষ

এখানে এই কোডটি ইতিমধ্যে রয়েছে, তবে কোনও কারণে সম্ভবত কোসাইন ওয়েভ সম্পর্কিত, আমার কোড ব্যর্থ হয়েছে: / যে কোনও সাহায্যের প্রশংসা হবে :) ধন্যবাদ!


2
SciComp.SE এ স্বাগতম! আপনার এটি একটি নতুন প্রশ্ন করা উচিত। (উত্তরগুলি কেবলমাত্র, সত্যিকারের উত্তরের জন্য বোঝানো হয়)) আপনি যদি নীচে "নিজের প্রশ্ন জিজ্ঞাসা করুন" ব্যবহার করেন (হালকা হলুদ রঙের গা dark় হলুদ, স্বীকার করেছেন যে এটি সেখানে জানেন না তবে স্বীকার করতে কিছুটা কঠিন) , এটি স্বয়ংক্রিয়ভাবে এইটির সাথে প্রশ্নটি যুক্ত করবে। (আপনি এই প্রশ্নের একটি লিঙ্কও নিজের মধ্যে অন্তর্ভুক্ত করতে পারেন))
ক্রিশ্চিয়ান ক্লাসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.