আমি থেকে সি ++ তে একটি বিদ্যমান কোড পোর্ট করছি এবং সমাধান করার জন্য একটি রৈখিক ব্যবস্থা আছে (আরও সাধারণ ফর্ম চেয়ে বেশি )
ম্যাট্রিক্স ঘন, এবং সাধারণ ফর্ম, কিন্তু কোন 1000x1000 চেয়ে বড়। সুতরাং ম্যাটল্যাবে, সমাধানটি ফাংশন বা ফরোয়ার্ড-স্ল্যাশ স্বরলিপি দ্বারা পাওয়া যায়mrdivide(b,A)
x = b/A;
BLAS এবং LAPACK রুটিন ব্যবহার করে আমার সি ++ কোডে কীভাবে এটি সমাধান করব?
আমি ল্যাপাক রুটিনের সাথে পরিচিত DGESV
যা জন্য সমাধান করে ।
সুতরাং, আমার মনে হয়েছিল ম্যাট্রিক্স ট্রান্সপোজ পরিচয় ব্যবহার করে কিছু হেরফের করতে হবে:
তারপরে DGESV
ট্রান্সপোজড অপারেটিং ব্যবহার করে চূড়ান্ত ফর্মটি সমাধান করুন । (তাই জায়গা বদল করুন খরচ এবং সিস্টেম সমাধানের জন্য খরচ)
আরও কার্যকর বা অন্যথায় ভাল একটি পদ্ধতির আছে ?
আমি ম্যাট্রিক্স এবং ভেক্টর ক্লাসের পাশাপাশি বুস্ট ইউব্ল্যাএস লাইব্রেরি থেকে ব্ল্যাক বাস্তবায়নের পাশাপাশি ল্যাপ্যাক লাইব্রেরি রুটিনের সাথে বাঁধাইয়ের সাথে কাজ করছি। আমি অন্যান্য ক্রিয়াকলাপের জন্য সফলভাবে এই সেটআপটি ব্যবহার করছি এবং এই লাইব্রেরির মধ্যে সীমাবদ্ধ সমাধান খুঁজে পাওয়ার আশা করছি।
এছাড়াও, আমার খেয়াল করা উচিত আমি কোড সেটআপের সময় এই ধরণের অপারেশনটি কয়েকবারই সম্পাদন করছি, সুতরাং কার্য সম্পাদন একটি গুরুতর উদ্বেগ নয়।
হয়তো এই ম্যাটল্যাব ডকুমেন্টেশন উপর mrdivide
অন্যদের জন্য সহায়ক।
boost::numeric::bindings::lapack::gesvx()
জন্য আমার সমস্যা হচ্ছে, তবে এটি এখানে আমার প্রশ্নের অংশ নয়। আমার যদি সাফল্য থাকে তবে আমি কীভাবে এটি করব তার একটি নোট নিয়ে ফিরে আসব।