গাউস-সিডেলের তুলনায় এসওআর দ্রুততর হওয়া সমস্যার ক্রম বাছাই করুন?


9

গাউস-সিডেলের পরিবর্তে এসওআর করা ভাল কিনা তা বলার মতো কোনও সহজ নিয়ম আছে ? (এবং সম্ভাব্য উপায় কীভাবে রিয়েলেক্সেশন প্যারামিটার অনুমান করা যায় )ω

আমি কেবল ম্যাট্রিক্স দেখে বা ম্যাট্রিক্স প্রতিনিধিত্ব করে এমন কোনও সমস্যার জ্ঞান বোঝাতে চাইছি ?

আমি এই প্রশ্নের উত্তরটি পড়ছিলাম: ক্রমাগত ওভার-রিলাক্সেশন (এসওআর) পদ্ধতির অনুকূলকরণের জন্য কি কোনও হিউরিস্টিকস রয়েছে? তবে এটি কিছুটা পরিশীলিত। আমি কেবল ম্যাট্রিক্সের দিকে তাকিয়ে বর্ণালী ব্যাসার্ধ অনুমান করার কীভাবে সহজ হিউরিস্টিক দেখতে পাচ্ছি না (বা সমস্যাটি যা এটি উপস্থাপন করে)।

আমি আরও সহজ কিছু চাই - ম্যাট্রিকের কয়েকটি সমস্যা (সমস্যা) যার জন্য এসওআর দ্রুত রূপান্তরিত হয়।


আমি এই রাজার ম্যাট্রিক্সের জন্য এসওআর নিয়ে পরীক্ষা করছিলাম: যেখানে পরিচয় ম্যাট্রিক্স, এবং গুলি ইউনিফর্ম বিতরণ থেকে এলোমেলো সংখ্যা যেমন যে । আমি ভাবছিলাম যে পরামিতিগুলির উপর অনুকূল কিছুটা নির্ভরতা থাকবে ।A=I+C+RIসিআমি= আমি,আরআমি|আরআমি|<Rω,R

সম্পাদনা: থা শক্তভাবে তির্যকভাবে প্রভাবশালী কিনা তা নিশ্চিত করার জন্য আমি খুব ছোট ব্যবহার করেছি used ( , মাত্রার 5-10 ম্যাট্রিক্সের জন্য)। আমিও বলতে হবে যে এই বাস্তব এবং প্রতিসম ছিল।,Rএকজন||<0.1R<2||একজন

তবে, আমি দেখতে পেলাম যে গাউস-সিডেল ( ) প্রায় সর্বদা সেরা (?)ω=1 । এর অর্থ কি এই যে SOR এর সুবিধা পেতে s এর মধ্যে আরও কিছু সম্পর্ক থাকতে হবে? নাকি আমি কিছু ভুল করেছি? একজনআমি


আমি জানি, SOR সর্বাধিক দক্ষ সমাধানকারী নয় (সিজি, GMRES এর তুলনায় ...) তবে এটি কার্যকর করা এবং প্যারালাইজ করা সহজ, এবং নির্দিষ্ট সমস্যার জন্য পরিবর্তন করা। প্রোটোটাইপিংয়ের জন্য অবশ্যই ভাল।

উত্তর:


5

লিনিয়ার সিস্টেমগুলির জন্য ধ্রুপদী পুনরাবৃত্তাকারী দ্রাবকদের একত্রিতকরণ পুনরাবৃত্তি ম্যাট্রিক্সের বর্ণাল ব্যাসার্ধ দ্বারা নির্ধারিত হয়, ρ(জি)একটি সাধারণ লিনিয়ার সিস্টেমের জন্য, পুনরাবৃত্তির ম্যাট্রিক্সের বর্ণালী ব্যাসার্ধ নির্ধারণ করতে অসুবিধার কারণে একটি অনুকূল (বা এমনকি ভাল) এসওআর প্যারামিটার নির্ধারণ করা কঠিন। নীচে আমি অনেকগুলি অতিরিক্ত বিবরণ অন্তর্ভুক্ত করেছি, যেখানে আসল সমস্যার উদাহরণ রয়েছে যেখানে অনুকূল এসওআর ওজন পরিচিত।

বর্ণালী ব্যাসার্ধ এবং একত্রিতকরণ

বর্ণালী ব্যাসার্ধকে বৃহত্তম আকারের ইগন্যালুয়ের পরম মান হিসাবে সংজ্ঞায়িত করা হয়। একটি পদ্ধতি রূপান্তর করবে যদিρ<1এবং একটি ছোট বর্ণাল ব্যাসার্ধ মানে দ্রুত একত্রিতকরণ। ভারী ওজন পরামিতি নির্বাচনের উপর ভিত্তি করে পুনরাবৃত্তি ম্যাট্রিক্স প্রাপ্ত করতে ব্যবহৃত ম্যাট্রিক্স বিভাজনে পরিবর্তন করে SOR কাজ করেω, আশা করি ফলাফল পুনরাবৃত্তির ম্যাট্রিক্সের বর্ণাল ব্যাসার্ধ হ্রাস পাচ্ছে।

ম্যাট্রিক্স বিভাজন

নীচের আলোচনার জন্য, আমি ধরে নেব যে সমাধান করা সিস্টেমটি দেওয়া হয়েছে

একজনএক্স=,

ফর্ম একটি পুনরাবৃত্তি সঙ্গে

এক্স(+ +1)=বনাম+ +জিএক্স(),

কোথায় বনাম একটি ভেক্টর এবং পুনরাবৃত্তি সংখ্যা চিহ্নিত করা হয় এক্স()

SOR পুরানো পুনরাবৃত্তির একটি ওজনযুক্ত গড় এবং একটি গাউস-সিডেল পুনরাবৃত্তি গ্রহণ করে। গাউস-সিডেল পদ্ধতি ফর্মের ম্যাট্রিক্স বিভাজনের উপর নির্ভর করে

একজন=ডি+ +এল+ +ইউ

কোথায় ডি এর তির্যক একজন, এল একটি নিম্ন ত্রিভুজাকার ম্যাট্রিক্স যাতে সমস্ত উপাদান রয়েছে একজন কড়া নীচে এবং তিরস্কার আর সমস্ত উপাদান সমন্বিত একটি উচ্চতর ত্রিভুজাকার ম্যাট্রিক্স একজনকঠোরভাবে তির্যক উপরে। গাউস-সিডেল পুনরাবৃত্তিটি এরপরে দেওয়া হয়

এক্স(+ +1)=(ডি+ +এল)-1+ +জিজি-এসএক্স()

এবং পুনরাবৃত্তি ম্যাট্রিক্স হয়

জিজি-এস=-(ডি+ +এল)-1ইউ

SOR এর পরে যেমন লেখা যেতে পারে

এক্স(+ +1)=ω(ডি+ +ωএল)-1+ +জিএসহেআরএক্স()

কোথায়

জিএসহেআর=(ডি+ +ωএল)-1((1-ω)ডি-ωইউ)

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

অনুকূল এসওআর

সর্বোত্তম ওজন সহগের জ্ঞাত যেখানে একটি বাস্তব উদাহরণ পইসন সমীকরণ সমাধানের প্রসঙ্গে উত্থাপিত হয়:

2তোমার দর্শন লগ করা= আমিএন Ωতোমার দর্শন লগ করা= এন Ω

এই সিস্টেমটি 2 ডি-তে স্কোর ডোমেনে সমান্তরাল গ্রিড ব্যবধানের সাথে দ্বিতীয় ক্রমের সীমাবদ্ধ পার্থক্যগুলি ব্যবহার করে তির্যকের উপরে 4-এর সাথে একটি সমমিত ব্যান্ডযুক্ত ম্যাট্রিক্স এবং -1 এর আরও কিছু দূরত্বে -1 এর আরও দুটি ব্যান্ডের ফলাফল ব্যবহার করে তির্যক। সীমানা শর্তের কারণে কিছু পার্থক্য রয়েছে তবে এটি মূল কাঠামো। এই ম্যাট্রিক্সটি দেওয়া, এসওআর সহগের জন্য সম্ভাব্য সর্বোত্তম পছন্দটি দিয়েছেন

ω=21+ +পাপ(πΔএক্স/এল)

কোথায় Δএক্স গ্রিড ব্যবধান এবং এলডোমেন আকার। একটি সাধারণ সমাধানের জন্য একটি সহজ সমাধানের জন্য এটি করা এই দুটি পদ্ধতির জন্য পুনরাবৃত্তি সংখ্যা বনাম নিম্নলিখিত ত্রুটি দেয়:

গাউস-সিডেল এবং এসওআর ত্রুটি

আপনি দেখতে পাচ্ছেন যে, এসওআর প্রায় 100 পুনরাবৃত্তিতে মেশিনের নির্ভুলতায় পৌঁছেছে যেখানে গাউস-সিডেল প্রায় 25 টি মাত্রার চেয়ে আরও খারাপ অবস্থানে রয়েছে। আপনি যদি এই উদাহরণটি দিয়ে ঘুরে দেখতে চান তবে আমি নীচে ব্যবহৃত ম্যাটল্যাব কোডটি অন্তর্ভুক্ত করেছি।

clear all
close all

%number of iterations:
niter = 150;

%number of grid points in each direction
N = 16;
% [x y] = ndgrid(linspace(0,1,N),linspace(0,1,N));
[x y] = ndgrid(linspace(-pi,pi,N),linspace(-pi,pi,N));
dx = x(2,1)-x(1,1);
L = x(N,1)-x(1,1);

%desired solution:
U = sin(x/2).*cos(y);

% Right hand side for the Poisson equation (computed from U to produce the
% desired known solution)
Ix = 2:N-1;
Iy = 2:N-1;
f = zeros(size(U));
f(Ix,Iy) = (-4*U(Ix,Iy)+U(Ix-1,Iy)+U(Ix+1,Iy)+U(Ix,Iy-1)+U(Ix,Iy+1));

figure(1)
clf
contourf(x,y,U,50,'linestyle','none')
title('True solution')

%initial guess (must match boundary conditions)
U0 = U;
U0(Ix,Iy) = rand(N-2);

%Gauss-Seidel iteration:
UGS = U0; EGS = zeros(1,niter);
for iter=1:niter
    for iy=2:N-1
        for ix=2:N-1
            UGS(ix,iy) = -1/4*(f(ix,iy)-UGS(ix-1,iy)-UGS(ix+1,iy)-UGS(ix,iy-1)-UGS(ix,iy+1));
        end
    end

    %error:
    EGS(iter) = sum(sum((U-UGS).^2))/sum(sum(U.^2));
end

figure(2)
clf
contourf(x,y,UGS,50,'linestyle','none')
title(sprintf('Gauss-Seidel approximate solution, iteration %d', iter))
drawnow

%SOR iteration:
USOR = U0; ESOR = zeros(1,niter);
w = 2/(1+sin(pi*dx/L));
for iter=1:niter
    for iy=2:N-1
        for ix=2:N-1
            USOR(ix,iy) = (1-w)*USOR(ix,iy)-w/4*(f(ix,iy)-USOR(ix-1,iy)-USOR(ix+1,iy)-USOR(ix,iy-1)-USOR(ix,iy+1));
        end
    end

    %error:
    ESOR(iter) = sum(sum((U-USOR).^2))/sum(sum(U.^2));
end

figure(4)
clf
contourf(x,y,USOR,50,'linestyle','none')
title(sprintf('Gauss-Seidel approximate solution, iteration %d', iter))
drawnow


figure(5)
clf
semilogy(EGS,'b')
hold on
semilogy(ESOR,'r')
title('L2 relative error')
xlabel('Iteration number')
legend('Gauss-Seidel','SOR','location','southwest')

আপনি কি কোনও ভাল / সুপরিচিত কৌশলগুলি জানেন যে উড়ে যাওয়ার ক্ষেত্রে SOR প্যারামিটার গণনা করতে ব্যবহৃত হয়? আমি এর আগে শুনেছি যে এই কৌশলগুলি বর্ণালী ব্যাসার্ধের অনুমান ব্যবহার করে - আপনি বর্ণালী ব্যাসার্ধ কীভাবে ব্যবহার করেন বা একটি ভাল রেফারেন্স সরবরাহ করতে পারেন তা কী আপনি ব্যাখ্যা করতে পারেন?
নিউকেগুয়ে

ওহ, আমি দেখতে পাচ্ছি যে এটি লিঙ্কিত প্রশ্নে সম্বোধন করা হয়েছে scicomp.stackexchange.com/questions/851/… । আমার প্রশ্নগুলি কখনই মনে করবেন না, তবে যদি আপনার আরও যোগ করার থাকে তবে দয়া করে বিনা দ্বিধায় এটি করুন।
নিউকেগুয়ে

@ ডউগ লিপিনস্কি আমি ভেবেছিলাম যে চ কে ডেক্স * ডাই এর দ্বারা গুণিত করা উচিত। এই ফ্যাক্টরটি পৃথক দ্বিতীয় ডেরাইভেটিভ থেকে আসে ( উদাহরণস্বরূপ এখানে দেখুন )। বিটিডব্লিউ, আমি যখন এটি করি তখন অ্যালগরিদম ঠিকমতো কাজ করে না। তুমি কি জানো কেন?
শামালাইয়া

0

বিষয়গুলির এই দিকটি আসলে আমার বিশেষত্ব নয়, তবে আমি মনে করি না এটি অনেক বাস্তববাদী অ্যাপ্লিকেশনগুলির জন্য এটি একটি সুপার-ফেয়ার পরীক্ষা।

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

>>> import numpy
>>> for n in [100, 1000]:
...     for c in [.1, 1, 10]:
...         for r in [.1, 1, 10]:
...             print numpy.linalg.cond(
...                 numpy.eye(n) + 
...                 c * numpy.ones((n, n)) + 
...                 r * numpy.random.random((n, n))
...             )
... 
25.491634739
2034.47889101
2016.33059429
168.220149133
27340.0090644
5532.81258852
1617.33518781
42490.4410689
5326.3865534
6212.01580004
91910.8386417
50543.9269739
24737.6648458
271579.469212
208913.592289
275153.967337
17021788.5576
117365.924601

আপনি যদি এই অসুস্থ শর্তে ম্যাট্রিক্সটি উল্টাতে চান তবে আপনি ক) একটি বিশেষ পদ্ধতি ব্যবহার করুন এবং খ) সম্ভবত একটি নতুন ক্ষেত্র সন্ধান করতে হবে 😉

যে কোনও আকারের শীতাতপ নিয়ন্ত্রিত ম্যাট্রিকগুলির জন্য, এসওআরটি দ্রুততর হওয়ার সম্ভাবনা রয়েছে। বাস্তব সমস্যাগুলির জন্য যেখানে গতি গুরুত্বপূর্ণ, এসওআর ব্যবহার করা বিরল হবে - পরিশীলিত দিকগুলিতে, এই দিনগুলিতে আরও ভাল কিছু আছে; ধীর অথচ নির্ভরযোগ্য দিক থেকে, SOR আপনি করতে পারেন সেরা best


হাই, আমি বলি না যে আমার "পরীক্ষা" ন্যায্য। আমি এটিও বলব না যে এটি একটি পরীক্ষা, এটি এসওআর এবং গাউস-সিডেল কীভাবে পরীক্ষামূলকভাবে আচরণ করে সে সম্পর্কে কিছু ধারণা পাওয়ার জন্য আমার অভিনব প্রচেষ্টা। ধরে নিন যে আমি এই ক্ষেত্রে একটি সম্পূর্ণ নুব। আমার পরামিতিগুলি সীমার মধ্যে ছিল0.01<||<0.1 এবং R<2||। ম্যাট্রিক্সটি তীব্রভাবে তির্যকভাবে ডমিয়ান্যান্ট কিনা তা নিশ্চিত করার জন্য (আমি 10
মিমিটির

আমি দৃ strongly়ভাবে তির্যকভাবে প্রভাবশালী বলতে চলেছি।
meawoppl

0

ঠিক আছে, তাই এই রাজার সিমেট্রিক ম্যাট্রিক্সের জন্য:

1 t 0 0 0 0 t t 0 0 
t 1 0 0 0 0 0 0 0 0 
0 0 1 0 0 0 0 t 0 t 
0 0 0 1 0 0 0 0 0 t 
0 0 0 0 1 t 0 0 0 0 
0 0 0 0 t 1 0 t 0 0 
t 0 0 0 0 0 1 0 0 0 
t 0 t 0 0 t 0 1 0 0 
0 0 0 0 0 0 0 0 1 t 
0 0 t t 0 0 0 0 t 1 

যদি সংখ্যার হয় তবে গোর-সিডেলের চেয়ে এসওআর দ্রুত রূপান্তরিত করে টিপ্রতিটি সারিতে গুলি ছোট (এ এর মাত্রার চেয়ে অনেক ছোট) এবং যদি সব হয় টিগুলি একই রকম। আমি ব্যবহার করছিলামটিএর ফলে উত্পন্ন:

টিআমি=+ +Rএকটিএনমি(-R,R)

যদি টিগুলি অনেক বেশি পরিবর্তিত হয় এবং 0 টি কেন্দ্রিক হয় (0) =0,R=0.1) গাউস-সিডেলের তুলনায় দ্রুত। প্রতিটি সারিতে অর্ধেকের বেশি ভরাট হলে গাউস-সিডেলও দ্রুতটিগুলি। এর অর্থ হ'ল এসওআর খুব বড় এবং খুব স্পার্স ম্যাট্রিক্সের জন্য ভাল।

(এটি নিখরচায় পর্যবেক্ষণ, কঠোর কিছুই নয়)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.