मैं इस बारे में अवगत हूं कि लीनियर सिस्टम को हल करने के लिए एक मैट्रिक्स में प्रवेश करना एक अच्छा विचार नहीं है, क्योंकि यह उतना सटीक और कुशल नहीं है जितना कि सिस्टम को सीधे हल करना या एलयू, चोल्स्की या क्यूआर अपघटन का उपयोग करना है।
हालांकि, मैं इसे व्यावहारिक उदाहरण के साथ जांचने में सक्षम नहीं हूं। मैंने इस कोड की कोशिश की है (MATLAB में)
M = 500;
A = rand(M,M);
A = real(expm(1i*(A+A.')));
b = rand(M,1);
x1 = A\b;
x2 = inv(A)*b;
disp(norm(b-A*x1))
disp(norm(b-A*x2))
और अवशिष्ट हमेशा एक ही क्रम (10 ^ -13) के होते हैं।
क्या कोई व्यक्ति एक व्यावहारिक उदाहरण प्रदान कर सकता है जिसमें A (b) की तुलना में inv (A) * b बहुत कम गलत है?
------ प्रश्न अद्यतन ------
आपके जवाबों के लिये धन्यवाद। हालांकि, मान लीजिए कि हमें x ए b = n सिस्टम को हल करना है , जहां ए हमेशा एक ही मैट्रिक्स है। उस पर विचार करे
- भरा हुआ है, और इस तरह एक - 1 से एक ही स्मृति भंडारण की आवश्यकता है एक ।
की -इस हालत संख्या छोटा सा है, इसलिए एक - 1 सटीकता के साथ की जा सकती है।
उस स्थिति में, क्या LU अपघटन का उपयोग करने के बजाय गणना करना अधिक कुशल नहीं होगा ? उदाहरण के लिए, मैंने इस माटलब कोड की कोशिश की है:
%Set A and b:
M = 1000;
A = rand(M,M);
A = real(expm(1i*(A+A.')));
b = rand(M,1);
%Times we solve the system:
n = 3000;
%Performing LU decomposition:
disp('Performing LU decomposition')
tic
[L,U,P] = lu(A);
toc
fprintf('\n')
%Solving the system n times with LU decomposition:
optsL.LT = true; %Options for linsolve
optsU.UT = true;
disp('Solving the system n times using LU decomposition')
tic
for ii=1:n
x1 = linsolve(U, linsolve(L,P*b,optsL) , optsU);
end
toc
fprintf('\n')
%Computing inverse of A:
disp('Computing inverse of A')
tic
Ainv = inv(A);
toc
fprintf('\n')
%Solving the system n times with Ainv:
disp('Solving the system n times with A inv')
tic
for ii=1:n
x2 = Ainv*b;
end
toc
fprintf('\n')
disp('Residuals')
disp(norm(b-A*x1))
disp(norm(b-A*x2))
disp('Condition number of A')
disp(cond(A))
लगभग 450 की संख्या वाली मैट्रिक्स के लिए, अवशिष्ट दोनों मामलों में , लेकिन LU अपघटन का उपयोग करते हुए सिस्टम n को हल करने में 19 सेकंड लगते हैं, जबकि A के व्युत्क्रम का उपयोग करने में केवल 9 सेकंड लगते हैं।
Ax=b
उसी के साथ हल करने की आवश्यकता है A
और यह व्युत्क्रम को लेने के लिए काफी छोटा है, तो आप इसके बजाय एलयू-फैक्टराइजेशन को बचा सकते हैं और इसका पुन: उपयोग कर सकते हैं।