tl; dr তারা একটি শর্ত নম্বর রিপোর্ট করেছে , অগত্যা ম্যাট্রিক্সের জন্য সঠিক শর্ত সংখ্যা নয়, কারণ সেখানে পার্থক্য রয়েছে।
এটি ম্যাট্রিক্স এবং ডান হাতের ভেক্টরের সাথে নির্দিষ্ট। আপনি যদি ডকুমেন্টেশনের*getrs
দিকে নজর দেন তবে এটি বলছে যে সামনের ত্রুটিটি আবদ্ধ
এখানে মোটামুটি স্বাভাবিক শর্ত সংখ্যা , বরং
(এখানে আদর্শের মধ্যে এগুলি উপাদান অনুসারে নিখুঁত মানগুলি রয়েছে)) উদাহরণস্বরূপ, হিঙ্গাম দ্বারা লিনিয়ার সিস্টেম এবং ল্যাপাক , বা হিগমের নির্ভুলতা এবং সংখ্যাগত অ্যালগরিদমের স্থায়িত্ব (.2.২) দেখুন।
∥x−x0∥∞∥x∥∞≲cond(A,x)u≤cond(A)u.
cond(A,x)κ∞(A)cond(A,x)=∥|A−1||A||x|∥∞∥x∥∞,cond(A)=∥|A−1||A|∥.
আপনার উদাহরণস্বরূপ, আমি সাথে একই সমস্যার জন্য একটি সিউডোস্পেকট্রাল ডিফারেন্সিয়াল অপারেটর নিয়েছি এবং আসলে fact মধ্যে একটি বড় পার্থক্য রয়েছে এবং , আমি এবং গণনা করেছি , যা সমস্ত ডান হাতের ক্ষেত্রে ঘটে এমন পর্যবেক্ষণকে ব্যাখ্যা করার জন্য যথেষ্ট, কারণ প্রস্থের ক্রমগুলি মোটামুটি যা মেলে সারণী 3.1 এ দেখা গেছে (3-4 টির জন্য আরও ভাল ত্রুটি)। আমি যখন এলোমেলো অসুস্থ শর্তযুক্ত ম্যাট্রিক্সের জন্য একই চেষ্টা করি তখন এটি কাজ করে না, সুতরাং এটি সম্পত্তি হতে হবে ।n=128∥|A−1||A|∥κ∞(A)7×1032.6×107A
একটি স্পষ্ট উদাহরণ যার জন্য দুটি শর্ত সংখ্যা মেলে না, যা আমি হিহামের (7.17, p.124) থেকে গ্রহণ করেছি, কাহানের কারণে হ'ল
অন্য একটি উদাহরণ আমি পেয়েছি হ'ল প্লেইন ভ্যান্ডারমনডে ম্যাট্রিক্স এলোমেলো । আমি গিয়েছিলাম এবং কিছু অন্যান্য অসুস্থ শর্তযুক্ত ম্যাট্রিকগুলিও এই জাতীয় ফলাফল তৈরি করে, যেমন এবং পছন্দ করে ।
⎛⎝⎜2−11−1ϵϵ1ϵϵ⎞⎠⎟,⎛⎝⎜2+2ϵ−ϵϵ⎞⎠⎟.
[1:10]
bMatrixDepot.jl
triw
moler
মূলত, যা চলছে তা হ'ল আপনি যখন প্রতিচ্ছবি সম্পর্কিত ক্ষেত্রে লিনিয়ার সিস্টেমগুলি সমাধান করার স্থায়িত্ব বিশ্লেষণ করেন, আপনাকে প্রথমে কোনটি বিশৃঙ্খলা বিবেচনা করছেন তা নির্দিষ্ট করতে হবে। যখন LAPACK সঙ্গে রৈখিক সিস্টেম সমাধানে, আবদ্ধ এটি একটি ত্রুটি উপাদান-অনুযায়ী perturbations বিবেচনায় , কিন্তু কোন ব্যাকুলতা । সুতরাং এটি স্বাভাবিক থেকে আলাদা is , যা এবং উভয় ক্ষেত্রেই সাধারণ দিকনির্দেশনাগুলিকে বিবেচনা করে ।বি κ ( এ ) = ‖ এ - ১ ‖ ‖ এ ‖ এ বিAbκ(A)=∥A−1∥∥A∥Ab
বিবেচনা করুন (একটি কাউন্টারটেক্সেল হিসাবে) আপনি যদি পার্থক্য না করেন তবে কী ঘটবে । আমরা জানি যে দ্বিগুণ নির্ভুলতার সাথে পুনরাবৃত্তি সংশোধন ব্যবহার করে (উপরের লিঙ্কটি দেখুন) আমরা সাথে ম্যাট্রিকগুলির জন্য এর সর্বোত্তম সম্ভাব্য অগ্রণী আপেক্ষিক ত্রুটি পেতে পারি । সুতরাং আমরা যদি এই ধারণাটি বিবেচনা করি যে লিনিয়ার সিস্টেমগুলি চেয়ে নির্ভুলতার জন্য সমাধান করা যায় না , তবে কীভাবে পরিশোধন সমাধানগুলি সম্ভবত কাজ করবে?κ ( ক ) ≪ 1 / ইউ κ ( এ ) ইউO(u)κ(A)≪1/uκ(A)u
দ্রষ্টব্য এটা গুরুত্বপূর্ণ যে ?getrs
বলছেন কম্পিউটেড সমাধান প্রকৃত সমাধান (A + E)x = b
একটি ব্যাকুলতা সঙ্গে মধ্যে , কিন্তু কোন ব্যাকুলতা । কিছু ভিন্ন perturbations অনুমতি দেওয়া হয় যদি হবে ।ক খ খEAbb
এটিকে আরও সরাসরি, কাজ করে দেখানোর জন্য সম্পাদনা করুন যে এটি কোনও ত্রুটিযুক্ত বা ভাগ্যের বিষয় নয়, বরং কিছু নির্দিষ্ট ম্যাট্রিকের জন্য দুটি শর্ত সংখ্যার ) খুব পৃথক হওয়ার (অস্বাভাবিক) পরিণতি
cond(A,x)≈cond(A)≪κ(A).
function main2(m=128)
A = matrixdepot("chebspec", m)^2
A[1,:] = A[end,:] = 0
A[1,1] = A[end,end] = 1
best, worst = Inf, -Inf
for k=1:2^5
b = randn(m)
x = A \ b
x_exact = Float64.(big.(A) \ big.(b))
err = norm(x - x_exact, Inf) / norm(x_exact, Inf)
best, worst = min(best, err), max(worst, err)
end
@printf "Best relative error: %.3e\n" best
@printf "Worst relative error: %.3e\n" worst
@printf "Predicted error κ(A)*ε: %.3e\n" cond(A, Inf)*eps()
@printf "Predicted error cond(A)*ε: %.3e\n" norm(abs.(inv(A))*abs.(A), Inf)*eps()
end
julia> main2()
Best relative error: 2.156e-14
Worst relative error: 2.414e-12
Predicted error κ(A)*ε: 8.780e-09
Predicted error cond(A)*ε: 2.482e-12
সম্পাদনা 2 এখানে একই ঘটনার আরও একটি উদাহরণ যেখানে বিভিন্ন শর্ত সংখ্যা অপ্রত্যাশিতভাবে অনেকটা আলাদা হয়। এবার,
এখানে 10 × 10 Vandermonde ম্যাট্রিক্স হয় , এবং যখন , এলোমেলোভাবে নির্বাচিত চেয়ে noticably ছোট , এবং সবচেয়ে খারাপ ক্ষেত্রে দেওয়া হয় for ।
cond(A,x)≪cond(A)≈κ(A).
A1:10xcond(A,x)κ(A)xxi=iaa
function main4(m=10)
A = matrixdepot("vand", m)
lu = lufact(A)
lu_big = lufact(big.(A))
AA = abs.(inv(A))*abs.(A)
for k=1:12
# b = randn(m) # good case
b = (1:m).^(k-1) # worst case
x, x_exact = lu \ b, lu_big \ big.(b)
err = norm(x - x_exact, Inf) / norm(x_exact, Inf)
predicted = norm(AA*abs.(x), Inf)/norm(x, Inf)*eps()
@printf "relative error[%2d] = %.3e (predicted cond(A,x)*ε = %.3e)\n" k err predicted
end
@printf "predicted κ(A)*ε = %.3e\n" cond(A)*eps()
@printf "predicted cond(A)*ε = %.3e\n" norm(AA, Inf)*eps()
end
গড় কেস (তীব্র ত্রুটির প্রায় 9 টি অর্ডার):
julia> T.main4()
relative error[1] = 6.690e-11 (predicted cond(A,x)*ε = 2.213e-10)
relative error[2] = 6.202e-11 (predicted cond(A,x)*ε = 2.081e-10)
relative error[3] = 2.975e-11 (predicted cond(A,x)*ε = 1.113e-10)
relative error[4] = 1.245e-11 (predicted cond(A,x)*ε = 6.126e-11)
relative error[5] = 4.820e-12 (predicted cond(A,x)*ε = 3.489e-11)
relative error[6] = 1.537e-12 (predicted cond(A,x)*ε = 1.729e-11)
relative error[7] = 4.885e-13 (predicted cond(A,x)*ε = 8.696e-12)
relative error[8] = 1.565e-13 (predicted cond(A,x)*ε = 4.446e-12)
predicted κ(A)*ε = 4.677e-04
predicted cond(A)*ε = 1.483e-05
সবচেয়ে খারাপ কেস ( ):a=1,…,12
julia> T.main4()
relative error[ 1] = 0.000e+00 (predicted cond(A,x)*ε = 6.608e-13)
relative error[ 2] = 1.265e-13 (predicted cond(A,x)*ε = 3.382e-12)
relative error[ 3] = 5.647e-13 (predicted cond(A,x)*ε = 1.887e-11)
relative error[ 4] = 8.895e-74 (predicted cond(A,x)*ε = 1.127e-10)
relative error[ 5] = 4.199e-10 (predicted cond(A,x)*ε = 7.111e-10)
relative error[ 6] = 7.815e-10 (predicted cond(A,x)*ε = 4.703e-09)
relative error[ 7] = 8.358e-09 (predicted cond(A,x)*ε = 3.239e-08)
relative error[ 8] = 1.174e-07 (predicted cond(A,x)*ε = 2.310e-07)
relative error[ 9] = 3.083e-06 (predicted cond(A,x)*ε = 1.700e-06)
relative error[10] = 1.287e-05 (predicted cond(A,x)*ε = 1.286e-05)
relative error[11] = 3.760e-10 (predicted cond(A,x)*ε = 1.580e-09)
relative error[12] = 3.903e-10 (predicted cond(A,x)*ε = 1.406e-09)
predicted κ(A)*ε = 4.677e-04
predicted cond(A)*ε = 1.483e-05
সম্পাদনা 3 এর আরও একটি উদাহরণ হ'ল ফোরসিথ ম্যাট্রিক্স, যা
এই আছে , , তাই কিন্তু , সুতরাং । এবং যেমন হাত দ্বারা যাচাই করা যায়, সম্ভাব্য সীমাহীন সত্ত্বেও পিভোটিং সহ মতো লিনিয়ার সমীকরণের সিস্টেমগুলি সমাধান করা অত্যন্ত নির্ভুল । সুতরাং এই ম্যাট্রিক্সটিও অপ্রত্যাশিতভাবে সুনির্দিষ্ট সমাধান পাবে।
A=⎛⎝⎜⎜⎜000ϵ100001000010⎞⎠⎟⎟⎟.
∥A∥=1∥A−1∥=ϵ−1κ∞(A)=ϵ−1|A−1|=A−1=|A|−1এ x = বি κ ∞ ( এ )cond(A)=1Ax=bκ∞(A)
সম্পাদনা 4 কাহান ম্যাট্রিকগুলিও এর মতো :cond(A)≪κ(A)
A = matrixdepot("kahan", 48)
κ, c = cond(A, Inf), norm(abs.(inv(A))*abs.(A), Inf)
@printf "κ=%.3e c=%.3e ratio=%g\n" κ c (c/κ)
κ=8.504e+08 c=4.099e+06 ratio=0.00482027