ম্যাটল্যাব ম্যাট্রিক্সের গুণ (সেরা গণনা পদ্ধতি)


10

আমাকে দুটি রেফারেন্স সিস্টেমের (অক্ষ) মধ্যে স্থানাঙ্ক রূপান্তর করতে হবে। তার জন্য, কিছু মধ্যবর্তী অক্ষ ব্যবহারের কারণে তিনটি ম্যাট্রিক ( ) গুণ করতে হবে। এর সমাধানের জন্য আমি দুটি পদ্ধতির বিষয়ে চিন্তা করেছি:3×3

পদ্ধতি # 1 : সরাসরি গুণ করা, যা

vf=R1 R2 R3 vi

পদ্ধতি # 2 : পদক্ষেপে বিভক্ত:

  1. v3i=R3 vi
  2. v23=R2 v3আমি
  3. vf=R1 বনাম23

কোথায়:

আর1 , এবং হয় ম্যাট্রিক্সআর2আর33×3

, বনাম আমি , বনাম 3 আমি , বনাম 23 হয় 3 × 1 ভেক্টরবনামবনামআমিবনাম3আমিবনাম233×1

আমি জানতে চাই যে পদ্ধতিটি রূপান্তর করার জন্য কম কম্পিউটারে (কম সময়) আরও দক্ষ (এটি অনেক সময় তৈরি হবে)।



@ ক্রিসটেলর: আপনার পরামর্শের জন্য আপনাকে অনেক ধন্যবাদ
জুলিয়ানফ্পেরেজ

2
দয়া করে ক্রসপোস্ট করবেন না।
ছিড়ে ফেলেছে

2
দ্রষ্টব্য, এখানে দুটি প্রশ্ন ক্রস পোস্ট এবং স্ট্যাকওভারফ্লো ছিল। প্রশ্ন এবং তাদের মতামত এবং উত্তরগুলি এটির মধ্যে একীভূত করা হয়েছে।
অরন আহমদিয়া

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

উত্তর:


17

মাতলাব বুনি থেকে এবং / অথবা বাম থেকে ডানে বিভাজনের ক্রম ব্যাখ্যা করে। সুতরাং তুলনায় A ( B ( C v ) ) এর চেয়ে অনেক বেশি ব্যয়বহুলএকজন*বি*সি*বনামএকজন*(বি*(সি*বনাম)) , দুই ম্যাট্রিক্স পণ্য এবং তিন ম্যাট্রিক্স-ভেক্টর পণ্য জায়গায় এক ম্যাট্রিক্স-vecor পণ্য আছে।

অন্যদিকে, একজন*(বি*(সি*বনাম)) হিসাবে আপনার দ্বিতীয় পদ্ধতি প্রস্তাব দেওয়া হয়, পৃথক ভেক্টর মধ্যে intermediates সংরক্ষণ করেন তোমার চেয়ে সামান্য দ্রুত হওয়া উচিত।

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


আপনার উত্তরে দেওয়া আকর্ষণীয় তথ্যের জন্য আপনাকে ধন্যবাদ।
জুলিয়ানফ্পেরেজ

যদি আপনি মধ্যস্থতাকারীদের সংরক্ষণ করেন তবে এটি দ্রুততর কেন?
ফেডেরিকো পোলোনি

@ ফেডেরিকো পোলোনি: আমি লিখেছিলাম যে মধ্যস্থতাকারীদের সংরক্ষণ না করা কিছুটা দ্রুত ।
আর্নল্ড নিউমায়ার

@ আর্নল্ডনিউমিয়র ওহ দুঃখিত, আমি ভুল পড়েছি। :)
ফেডেরিকো পোলোনি

14

প্রারম্ভিকদের জন্য, আমি মধ্যবর্তী ভেরিয়েবলগুলি ব্যবহার করব না, তবে বন্ধনীগুলি। অবশ্যই, যদি না আপনি মধ্যবর্তী ফলাফলগুলিতে আগ্রহী হন তবে আমি অনুমান করি না।

আমি মতলবটিতে নিম্নলিখিতগুলি চেষ্টা করেছি:

>> N = 500;                                             
>> A = rand(N); B = rand(N); C = rand(N); v = rand(N,1);

>> tic, for k=1:100, A*B*C*v; end; toc
Elapsed time is 3.207299 seconds.

>> tic, for k=1:100, A*(B*(C*v)); end; toc
Elapsed time is 0.108095 seconds.

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


ম্যাট্রিকগুলি 3x3 যেখানে রয়েছে সে অংশটি কি আপনি মিস করেছেন? :)
অরন আহমদিয়া

2
@ অ্যারোনআহমাদিয়া: ওফ ... মিস করেছি, ধন্যবাদ আমি এই ম্যাট্রিক্স মাপগুলির জন্য অনুমান করি, পুরো সমস্যাটি মোট, তবে আমি এখনও বড় এন এর ফলাফলগুলি দেখে অবাক হয়েছি
পেড্রো

7
আমি অনুমান করছি ম্যাটল্যাব প্রকাশের মূল্যায়নের জন্য সি অগ্রাধিকারের নিয়মগুলি অনুসরণ করছে কারণ ভাসমান পয়েন্ট গণিতটি সাহসী নয় এবং তাদের ধরে নিতে হবে আপনি কী করছেন জানেন :)
অ্যারন আহমদিয়া

2
@ পেদ্রো: আপনার উত্তরের জন্য আপনাকে ধন্যবাদ ম্যাট্রিক্স মাত্রা 3x3 এর জন্য আমি পরীক্ষা করেছি যে আপনার সমাধানটিও স্বাভাবিক (বন্ধনী ছাড়াই) ম্যাট্রিক্সের গুণণের চেয়ে ভাল।
জুলিয়ানফ্পেরেজ

+1 রান সময়কে পরিমাপ করার একটি সহজ এবং সহজ উপায় দেখানোর জন্য আপনাকে ধন্যবাদ
স্টিভেন মাগানা-জুক

14

যেহেতু ম্যাট্রিকগুলি এত ছোট, সমস্ত ব্যয় কল ওভারহেডে চলেছে। আপনি যদি বহুবার রূপান্তরটি করেন, D=A*B*Cএকবার একবার পরীক্ষামূলকভাবে তাড়াতাড়ি করা হবে এবং তারপরে প্রতিটি ভেক্টর প্রয়োগ করার জন্য v_f=D*v_i। আপনি এটিকে একটি ম্যাক্স ফাইলে আনাও বিবেচনা করতে পারেন।


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