মতলব [Q, R, E] = qr (A) এর পিছনে সংশ্লিষ্ট ল্যাপাক ফাংশনটি কী?


12

আমি বর্তমানে সস্তাভাবে একটি ম্যাট্রিক্স জন্য ভাল র‌্যাঙ্কের অনুমানটি গণনা করার চেষ্টা করছি । অতএব আমি একটি কলামেন্ট পিভোটিং QR পচন ব্যবহার করে গণনা করিএকজন

[Q,R,E]=qr(A)

মতলব-তে আমি ব্যবহার করে র‌্যাঙ্কটি অনুমান করিএকজন

tol = size(A,n)*eps*norm(A,'fro'); 
r = sum(abs(diag(R))>tol)

এটি সূক্ষ্মভাবে কাজ করে এবং আর এর সমস্ত তির্যক এন্ট্রি দেখে মনে হচ্ছে: চক্রান্ত (সাজানোর (ABS (diag এর (রাঃ)), 1, 'অফুরন্ত'), 'R *')

যদি পুরো অ্যালগরিদমকে সি / ফোর্টরান আমি পোর্ট করে আমি [Q, R, E] = qr (A) কে LAPACK থেকে DGEQP3 ব্যবহার করে, যা QR পচনকে একটি কলামকে বিভক্ত করে তোলে। তবে যদি আমি র‌্যাঙ্কের জন্য একই অনুমান ব্যবহার করি তবে আমি বেশিরভাগই কিছু ভুল পাই। ডিজিইকিউপি 3 থেকে উত্পাদিত জন্য একই প্লটটি দেখতে মনে হচ্ছে আর

উভয় পরীক্ষার জন্য ইনপুট ম্যাট্রিক্স হুবহু এক।

এখন আমার প্রশ্নটি হচ্ছে কোন ল্যাপাক ফাংশনের উপর মাতলাব থেকে কুইআর পচন কমানোর উপর নির্ভর করে?

কোনও সহায়তার জন্য ধন্যবাদ, গ্রিসু

সম্পাদনা: ডিজিইকিউপিএফ একই ভুল ফলাফল দেয়।

Edit2:

  • ইনপুট ম্যাট্রিক্স ঘন এবং + এস আই জি এন ( , এফ ) হিসাবে বিল্ড করুনএকজন+ +গুলিআমিএন(,এফ)
  • এখানে উপলব্ধ হল:http://www-e.uni-magdeburg.de/makoehle/A.mtx.gz(MatrixMarket ফরম্যাট)একজন
  • ভুল : http://www-e.uni-magdeburg.de/makoehle/R_wrong.mtx.gzআর
  • আমি ওপেনব্লাস / গোটোব্ল্যাস (bit৪ বিট) এর সাথে ল্যাপ্যাক ৩.৪.০ ব্যবহার করেছি
  • মতলব 7, 2007 বি, 2010 বি লিনাক্স 32 বিট

সম্পাদনা 3: - জিডিবি ব্যবহার করে আমি জানতে পেরেছি যে মতলব 2010 বি DGEQP3: # 3 0xaa46ce2f কে /usr/ubuntu10.04/matlabr2010b/bin/glnx86/..///in/glnx86/../ থেকে কল করে। ।


আপনি এখানে ভাগ করতে সক্ষম হতে পারে এমন একটি ছোট ম্যাট্রিক্সের সাথে একই আচরণটি উত্সাহিত করতে পারেন?
GertVdE

একজন

একজন

গ্রিসু - আমি আপনার ম্যাট্রিক্সটি দেখতে পছন্দ করব। তবে, www-e.uni-magdeburg.de/makoehle/A.mtx.gz লিঙ্কটি এখন আর সক্রিয় নয় (বর্তমান সময়ে, যাইহোক)। আপনার কি ম্যাট্রিক্সের বর্তমান লিঙ্ক আছে? ধন্যবাদ, লেস ফস্টার

@ লেসেলিফোস্টার - স্কাইকম্পে স্বাগতম!
অরন আহমদিয়া

উত্তর:


7

এখানে দুটি বিষয় রয়েছে:

  • একজন
  • আপনার কি ম্যাটল্যাবের অভ্যন্তরীণ লাইব্রেরিগুলির মতো একই সফ্টওয়্যার স্ট্যাক রয়েছে?

ঘন না কদাচি?

একজনDGEQP3[Q,R,E] = qr(A)একজন

আপনার কি ম্যাটল্যাবের অভ্যন্তরীণ লাইব্রেরিগুলির মতো একই সফ্টওয়্যার স্ট্যাক রয়েছে?

সম্ভবত না, যা আপনি বিভিন্ন ফলাফল পাচ্ছেন তার এক কারণ হতে পারে।

আমি যখন এই লাইব্রেরিতে আমি লিখছিলাম তখন কিউআর ফ্যাক্টরিফিকেশন ব্যবহার করে তা পরীক্ষা করার সময় আমি এই সমস্যাটিতে চলে এসেছি। আমি আমার কাজ প্রোটোটাইপ করতে ম্যাটল্যাব ব্যবহার করেছি এবং ল্যাপাক বা নুমপি ব্যবহারের চেয়ে আলাদা ফলাফল পেয়েছি। আমি যতদূর বলতে পারি, কারণ ম্যাথ ওয়ার্কস এই তথ্যটি সহজেই সন্ধান করতে পারে না, ম্যাটল্যাব সংস্করণ ৩.১.১ এর আগে ল্যাপকের কোনও ভার্সন ব্যবহার করেছে, এবং ইন্টেলের এমকেএল বিএলএএস লাইব্রেরি (উইন্ডোজ, ইন্টেল ম্যাক এবং লিনাক্সের জন্য) সংস্করণ 9.1 বা উচ্চতর ( এখানে দেখুন )। স্যুটস্পার্স ম্যাটল্যাব ব্যবহারের সংস্করণ সম্পর্কে আমি কিছু খুঁজে পাইনি। অনলাইনে খোঁড়াখুঁড়ি করে বা আপনার সিস্টেমের জন্য লাইব্রেরি ফাইলগুলি দেখে আপনি অতিরিক্ত তথ্য সংগ্রহ করতে সক্ষম হতে পারেন। সফটওয়্যার প্যাকেজগুলি জুড়ে একই লাইব্রেরির সাথে তুলনা করতে সক্ষম হওয়ার জন্য আপনি ম্যাটল্যাব সংযুক্ত লাইব্রেরিগুলি পরিবর্তন করার চেষ্টা করতে পারেন; এরিক চু একটি সুন্দর লেখার ব্যবস্থা সরবরাহ করেএটি অন্তত দেখায় যে আপনি কীভাবে ম্যাটল্যাবের বিএলএএস লাইব্রেরিটি আপনার নিজের সাথে প্রতিস্থাপন করতে পারবেন (অবশ্যই, আপনি নিজের ঝুঁকিতে এটি করেন)। তিনি পরামর্শ দেন যে আপনি একইভাবে ল্যাপাক দিয়েও করতে পারেন। এমনকি ম্যাটল্যাব আপনার নিজস্ব সংস্করণ দিয়ে স্যুটস্পার্সের সংস্করণটি প্রতিস্থাপন করাও সম্ভব হতে পারে।

একজন=প্রশ্নঃআরপ্রশ্নঃআর

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


মতলব হিসাবে একই সফ্টওয়্যার স্ট্যাক পাওয়া অসম্ভব বলে আমি মনে করি। প্রোটোটাইপিংয়ের জন্য অন্য একটি পরিবেশ ব্যবহার করাও চাই না। সমস্যাটি হ'ল কোডটি সঠিকভাবে মতলবে কাজ করে তবে সি তে হয় না
এমকে ওরফে গ্রিসু

@ গ্রিসু: আমি মনে করি একই লাইব্রেরিগুলিতে লিংক দেওয়ার চেষ্টা না করে একই সফ্টওয়্যার স্ট্যাক পাওয়া খুব কঠিন হবে। আমি যা সম্পর্কে বিভ্রান্ত তা হ'ল আপনি কীভাবে জানবেন যে ম্যাটল্যাবের ফলাফলটি সঠিক এবং সি-এর ফলাফলটি ভুল is এটি কি এমন কিছু পরীক্ষার ম্যাট্রিক্স যা বৈশিষ্ট্যগুলি জানে? আরও কথা, অ্যারোনআহমদিয়া ঠিক আছে; আর্কিটেকচার এবং সফ্টওয়্যার স্ট্যাকের প্রতিরূপের বাইরেও আপনি অস্থির অ্যালগরিদম দিয়ে একই ফলাফল পাওয়ার আশা করতে পারবেন না। আমাকে মূলত দুই বছর আগে ম্যাটল্যাব ফোরামে একই কথা বলা হয়েছিল।
জেফ অক্সবেরি

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

@ গ্রিসু: ভাল ফলাফল এবং সঠিক ফলাফলের মধ্যে একটি আলাদা পার্থক্য রয়েছে। আমি সম্প্রতি একটি গণনা ভুলভাবে প্রয়োগ করেছি যা আমার ফলাফলকে দুর্দান্ত দেখায়। তবুও, গণনাটি ভুল ছিল, এবং সঠিক গণনাটি আমার ফলাফলগুলিকে কম চিত্তাকর্ষক দেখায় (তবে ধন্যবাদ, আমার ফলাফলগুলি সঠিক কিনা তা বোঝায়)। আপনি কি অর্থোগোনাল প্রজেক্টর বা একটি তির্যক প্রজেক্টর গণনা করার চেষ্টা করছেন? (আমি জিজ্ঞাসা করি কারণ আমার থিসিসের উল্লেখযোগ্য অংশগুলি তির্যক প্রজেক্টরগুলিতে রয়েছে))
জেফ অক্সবেরি ২৯'১২'১৯

1
@GeoffOxberry: fwiw, মতলব আমার সংস্করণ, আমি কল করতে পারেন internal.matlab.language.versionPlugins.blasএবং internal.matlab.language.versionPlugins.lapackBlas এবং LAPACK সংস্করণ পেতে
আমরো

6

র‌্যাঙ্ক-প্রকাশকারী সফটওয়্যারটিতে লেসলি ফস্টার এর পৃষ্ঠাটি দেখুন । র‌্যাঙ্ক-প্রকাশকারী কিউআর এর ব্যর্থতা বিশ্লেষণ করেxGEQP3 এই ল্যাপাক ওয়ার্কিং নোটটিও দেখুন ।

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


র‌্যাঙ্ক-প্রকাশের সফ্টওয়্যারটির পৃষ্ঠাটি কোনও সহায়তা করেনি। সেখানে বর্ণিত আরআরকিউআর পদ্ধতিটি আমি আমার ধারণায় প্রথম ব্যবহার করেছি তবে এটি কলাম পিভোটিং ধারণার চেয়ে আরও খারাপ ফলাফল দেয়।
এমকে ওরফে গ্রিসু

2
@ গ্রিসু - এটি আপনাকে সহায়তা করা উচিত ছিল। xGEQP3অ্যালগরিদম র্যাঙ্ক প্রকাশক জন্য সম্পূর্ণরূপে নিরাপদ নয়। আপনি গ্যারান্টি যে আপনি সঠিক ফলাফল পেতে চান, আপনি SVD বা একটি নিরাপদ কিউ যেমন ব্যবহার করা উচিত xGEQPXবা xGEQPY। আপনি অস্থির অ্যালগরিদমটি একই ফলাফলটি বিভিন্ন আর্কিটেকচারে বা বিভিন্ন বাস্তবায়নে ফিরে আসার প্রত্যাশা করতে পারবেন না (এমএটিএলএবি সম্ভবত একটি পুরানো ল্যাপাক ব্যবহার করছে)।
আরন আহমদিয়া

আমি জানি যে জিইকিউপি 3 র‌্যাঙ্ক-প্রকাশকারী নয় তবে এটি আরআরকিউআর সাবরুটাইনগুলির চেয়ে আরও সঠিক ফলাফল দেয়। আমার বাইরের অ্যালগরিদমে একটি এসভিডি ব্যবহার করা খুব ব্যয়বহুল। আমি আইন -১ 17। Of এর অন্যতম লেখকের সাথে কথা বলব এবং তিনি মনে করেন যে এই ত্রুটিটি বাগের আওতায় নেই। আমি একই ফলাফলের সাথে ল্যাপাক ৩.০.০ থেকে DGEQPF / DGEQP3 চেষ্টা করেছিলাম।
এমকে ওরফে গ্রিসু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.