একই with , বিভিন্ন with দিয়ে বারবার


12

আমি এমন একটি সমস্যা সমাধানের জন্য ম্যাটল্যাব ব্যবহার করছি যা প্রতিটি টাইমস্টেপে solving সমাধান করে, যেখানে। Mathbf time সময়ের সাথে পরিবর্তিত হয়এখনই, আমি ম্যাটল্যাব এর ব্যবহার করে এটি সম্পাদন করছি :Ax=bbmldivide

x = A\b

আমার যতটা প্রয়োজন পূর্বরূপ তৈরি করার নমনীয়তা রয়েছে তাই আমি ভাবছি যে এর চেয়ে আরও দ্রুত এবং / বা আরও সঠিক পদ্ধতি আছে কিনা mldivide। এখানে সাধারণত কি করা হয়? সবাইকে ধন্যবাদ!


1
আপনি কাঠামো সম্পর্কে সুনির্দিষ্ট জ্ঞান আছে কি ? উদাহরণস্বরূপ, এটি কি প্রতিসম? ইতিবাচক নিশ্চিত? Tridiagonal? লম্ব? A
ডোমিনিক

ম্যাট্রিক্স একটি ঘন বর্গ ম্যাট্রিক্স। A
সন্দেহ

3
আপনার উপর অন্য কোন জ্ঞান থাকে তাহলে , এল ইউ গুণকনির্ণয় উত্তর বর্ণনা অনুযায়ী নিচে আপনার সেরা বাজি। ALU
ডোমিনিক

উত্তর:


14

আপনি সর্বাধিক সুস্পষ্ট জিনিসটি করতে পারেন তা হল প্রাক্পুট করা

[L,U] = lu(A) ~ ও (এন ^ 3)

তারপরে আপনি কেবল গণনা করুন

x = U \ (L \ b) ~ ও (2 এন ^ 2)

এটি ব্যয়কে প্রচুর পরিমাণে হ্রাস করবে এবং এটি আরও দ্রুত করবে। নির্ভুলতা একই হবে।


1
দ্রষ্টব্য, ডকুমেন্টেশন থেকে , এল অগত্যা ত্রিভুজাকার কম নয়। এই উত্তরটি সম্ভবত প্রত্যক্ষ সমাধানের চেয়ে দ্রুততর হবে তবে আমি অবশ্যই নিশ্চিত হতে হবে যে L \ b কমান্ডটি সঠিকভাবে L সমাধান করার জন্য যথেষ্ট স্মার্ট কিনা (এটি সম্ভবত এটি আছে তবে এটি নির্দিষ্টভাবে বলে না ডকুমেন্টেশন)।
গড্রিক সের

হ্যাঁ আপনি ঠিক বলেছেন, এল হ'ল নিম্ন-ত্রিভুজাকার ম্যাট্রিক্স এবং ক্রমুয়েশন ম্যাট্রিক্সের পণ্য। তবে আমাকে ধিক্কার জানানো হবে যদি এটি স্বীকার না করে যে এটির যা করতে হবে তা হ'ল পশ্চাৎ প্রতিস্থাপন L\b। কারণ আমি দেখেছি যে বিশেষজ্ঞরা আমি বিবেচনা করি তাদের দ্বারা উচ্চ-সম্পাদন কোডে এই সঠিক লাইনটি ব্যবহার করা হচ্ছে।
মিলিন্দ আর

8
mldivide অনুমোদিত ত্রিভুজাকার ম্যাট্রিকগুলি স্বীকৃতি দেয় এবং এই জাতীয় সিস্টেম সমাধানে সঠিক কাজ করে। যাইহোক, আমার পরীক্ষাগুলিতে, এটি 2000 এর আকারের ম্যাট্রিক্সের জন্য 2000 দ্বারা 10000 দ্বারা 10000 দ্বারা 10 বা তার বেশি ফ্যাক্টর দ্বারা সমাধান প্রক্রিয়াটিকে ধীর করে দেবে বলে মনে হয় [এল ব্যবহার করে আপনি স্পষ্টভাবে ক্রমান্বয়ে ট্র্যাক রাখা ভাল d , ইউ, পি] = lu টি (P) টি। O(n2)
ব্রায়ান বোর্চারস

1
এছাড়াও, যদি আপনার ম্যাট্রিক্স অপ্রয়োজনীয় হয়, আপনার সিস্টেমটি সমাধান করার ক্ষেত্রে স্পারসিটির সুবিধা নেওয়া উচিত। এই কাজ করতে সহজ উপায় নিশ্চিত যে করা হয় একটি = বিক্ষিপ্ত (একটি) ব্যবহার কম্পিউটিং এল ইউ গুণকনির্ণয় করার আগের বিক্ষিপ্ত বিন্যাসে সংরক্ষণ করা হয়। আপনি এ-এর সারিগুলিকে অনুমতি দেওয়ার চেষ্টা করতে পারেন যাতে LU ফ্যাক্টেরাইজেশন চলাকালীন ফিল-ইন হ্রাস করতে পারে। A
ব্রায়ান বোর্চার

3
@ ব্রায়ানবোরচার যতদূর আমি জানি, অনুমানের ট্র্যাক রাখার সর্বোত্তম উপায় হ'ল দস্তাবেজের[L,U,p] = lu(A,'vector'); x = U\(L\b(p)); উদাহরণ 3 দেখুন । lu
স্টেফানো এম

5

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

আপনি আমাদের ল্যাব নির্দেশাবলী এক পরীক্ষা করে দেখতে পারেন । আপনার প্রশ্নের উত্তর 4 পৃষ্ঠায় (শীঘ্রই) কভার করা হয়েছে।

বিষয়টির উপর একটি ভাল বই উদাহরণস্বরূপ চেনি লিখেছেন ।


4

ধরুন হ'ল একটি n × n ঘন ম্যাট্রিক্স এবং আপনাকে A x i = b i , i = 1 মি সমাধান করতে হবে । যদি মি হয় বড় যথেষ্ট তারপর কিছুই ভুলAn×n Axi=bii=1mm

V = inv(A);
...
x = V*b;

Flops হয় জন্য এবং হে ( 2 ) জন্য তাই অর্ডার বিরতি-এমনকি মান নির্ধারণ করার জন্য, মি কিছু পরীক্ষা প্রয়োজন হয় ...O(n3)inv(A)O(n2)V*bm

>> n = 5000;
>> A = randn(n,n);
>> x = randn(n,1);
>> b = A*x;
>> rcond(A)
ans =
   1.3837e-06
>> tic, xm = A\b; toc
Elapsed time is 1.907102 seconds.
>> tic, [L,U] = lu(A); toc
Elapsed time is 1.818247 seconds.
>> tic, xl = U\(L\b); toc
Elapsed time is 0.399051 seconds.
>> tic, [L,U,p] = lu(A,'vector'); toc
Elapsed time is 1.581756 seconds.
>> tic, xp = U\(L\b(p)); toc
Elapsed time is 0.060203 seconds.
>> tic, V=inv(A); toc
Elapsed time is 7.614582 seconds.
>> tic, xv = V*b; toc     
Elapsed time is 0.011499 seconds.
>> [norm(xm-x), norm(xp-x), norm(xl-x), norm(xv-x)] ./ norm(x)
ans =
   1.0e-11 *
    0.1912    0.1912    0.1912    0.6183

A1LUm>125

কিছু নোট

স্থিতিশীলতা এবং ত্রুটি বিশ্লেষণের জন্য দয়া করে এই পৃথক উত্তরের মন্তব্যগুলি দেখুন , বিশেষত ভিক্টোরিলিউর একটি।

mn

সময়টি 12 টি মূল কম্পিউটারে মাতলাব আর ২০১১ বি দিয়ে মোটামুটি ধ্রুবক ইউএনআইএক্স লোড গড় 5 সহ সঞ্চালিত হয়েছিল; tic, tocতিনটি প্রোবের সেরা সময়।


প্রকৃতপক্ষে, ম্যাট্রিক্স-ভেক্টরের একটি ত্রিভুজাকার সলভারের চেয়ে বহুগুণে সমান্তরালতা পাওয়া যায়, সুতরাং যদি কোনওভাবেই গণনাগুলি সমান্তরাল (মাল্টিকোর / জিপিইউ / ইত্যাদি ...) করা হয় তবে এটি আরও স্পষ্ট হওয়া উচিত।
অরন আহমদিয়া

@ অ্যারোনআহমাদিয়া আমি সম্মত: কেবল অপারেশন গণনার উপর ভিত্তি করে ব্রেক-ইওন পয়েন্টের অনুমান কেবল সিরিয়াল বাস্তবায়নের জন্যই বোধগম্য হয়।
স্টেফানো এম

1
নোট করুন যে এ ম্যাট্রিক্স বিস্মৃত হলে জিনিসগুলি বিস্তৃত হবে - বিপরীতটি সাধারণত বেশ ঘন হবে, যখন এলইউর কারণগুলি সাধারণত যুক্তিযুক্তভাবে বিরল থাকে, LU এর দিকে দ্রুত জিনিসগুলিকে ফিরিয়ে দেয়।
ব্রায়ান বোর্চারস

1
A

1
inv(A)Ax=bbBA\B

2

এই প্রশ্নটি একবার দেখুন , উত্তরগুলি mldivideবেশ চতুর, এবং মাতলাব কী সমাধান করতে ব্যবহার করে তা কীভাবে দেখুন সে সম্পর্কে পরামর্শও দেয় A\b। এটি আপনাকে অপ্টিমাইজেশন অপশন সম্পর্কিত কোনও ইঙ্গিত দিতে পারে।


0

ব্যাকস্ল্যাশ ব্যবহার কমবেশি সমান inv(A)*B, আপনি যদি এটি নিখরচায় কোডিং করে থাকেন তবে আধুনিকীকরণটি আরও স্বজ্ঞাত হতে পারে। এগুলি একই রকম (গণনাটি কীভাবে করা হয় তার থেকে ঠিক আলাদা), যদিও আপনাকে স্পষ্ট করার জন্য মতলব ডকুমেন্টেশন চেক করা উচিত।

আপনার প্রশ্নের উত্তর দেওয়ার জন্য, ব্যাকস্ল্যাশ সাধারণত ভাল হয়, তবে এটি ভর ম্যাট্রিক্সের বৈশিষ্ট্যের উপর নির্ভর করে।


1
গাণিতিকভাবে ইনভ (এ) * বি একইরকম \ তবে সংখ্যাসূচকভাবে, আসলে বিপরীতটি তৈরি করা কম দক্ষ এবং কম সঠিক both আপনি যদি লিনিয়ার বীজগণিত শেখার জন্য কাজ করছেন তবে এটি গ্রহণযোগ্য হতে পারে তবে আমি যুক্তি দেব যে বিপরীতটি তৈরি করার জন্য আপনার খুব ভাল কারণ প্রয়োজন।
গড্রিক সের

তবে আপনি কেন কখনও গণনা করবেন inv(A)যেহেতু একা তার চেয়ে বেশি ব্যয়বহুল A\b?
ডোমিনিক

7
@ গড্রিক: একটি সাম্প্রতিক কাগজ আছে যা "মিথ" নিয়ে আলোচনা করেছে যে ইনভ (এ) * বি কম নির্ভুল: আরক্সিবের উপর । এটি না বলে যে সাধারণত প্রকৃত বিপরীত গণনা করার কারণ রয়েছে, তবে কেবল বলুন '।
ভিক্টর লিউ

3
@ ডমিনিক: ত্রিভুজাকার দ্রাবকগুলি ম্যাট্রিক্স-ভেক্টর গুণণের তুলনায় অনেক কম সমান্তরাল এবং পরিশীলিত পূর্বশর্তযুক্ত পুনরাবৃত্ত পদ্ধতিগুলি প্রায়শই সাবডোমাইনগুলিতে সরাসরি পদ্ধতি ব্যবহার করে। সমান্তরালতা উন্নত করার জন্য এটি বেশ কয়েকটি পরিমিত আকারের ঘন ত্রিভুজাকার ম্যাট্রিকগুলির বিপরীতগুলি স্পষ্টভাবে গঠন করা প্রায়শই কার্যকর।
জ্যাক পলসন

@ ভিক্টরলিউ: নিবন্ধটির জন্য আপনাকে ধন্যবাদ। আমি আমার সঠিকতা বিবৃতিতে সঠিকভাবে দাঁড়ালাম (ইনভ (এ) এর স্মার্ট বাস্তবায়নের জন্য কমপক্ষে)।
গড্রিক সের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.