ম্যাট্রিক্স ব্যালেন্সিং অ্যালগরিদম


9

আমি স্ক্র্যাচ থেকে একটি কন্ট্রোল সিস্টেম টুলবক্স লিখছি এবং খাঁটি পাইথন 3 (নির্লজ্জ প্লাগ harold:) এ। আমার অতীত গবেষণা থেকে আমার care.mকাছে প্রযুক্তিগত / অপ্রাসঙ্গিক কারণগুলির জন্য আমি সবসময়ই রিকাটি সলভার সম্পর্কে অভিযোগ করি ।

অতএব, আমি আমার নিজস্ব রুটিনগুলি লিখছি। আমি যে উপায়টির আশেপাশে কোন উপায় খুঁজে পাচ্ছি না তা হ'ল উচ্চ-পারফরম্যান্সের ভারসাম্য বজায় রাখা অ্যালগরিদম, কমপক্ষে যতটা ভাল balance.m। আপনি এটি উল্লেখ করার আগে, xGEBALপরিবার স্কিপিতে উন্মুক্ত হয়ে গেছে এবং আপনি নীচে স্কিপি থেকে মূলত কল করতে পারেন, ধরুন আপনার কাছে একটি ফ্লোট টাইপ 2 ডি অ্যারে রয়েছে A:

import scipy as sp
gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL
Ab, lo, hi, scaling , info = gebal(A, scale=1 , permute=1 , overwrite_a=0 )

এখন আমি যদি নিম্নলিখিত পরীক্ষার ম্যাট্রিক্স ব্যবহার করি

array([[ 6.      ,  0.      ,  0.      ,  0.      ,  0.000002],
       [ 0.      ,  8.      ,  0.      ,  0.      ,  0.      ],
       [ 2.      ,  2.      ,  6.      ,  0.      ,  0.      ],
       [ 2.      ,  2.      ,  0.      ,  8.      ,  0.      ],
       [ 0.      ,  0.      ,  0.000002,  0.      ,  2.      ]])

আমি পাই

array([[ 8.      ,  0.      ,  0.      ,  2.      ,  2.      ],
       [ 0.      ,  2.      ,  0.000002,  0.      ,  0.      ],
       [ 0.      ,  0.      ,  6.      ,  2.      ,  2.      ],
       [ 0.      ,  0.000002,  0.      ,  6.      ,  0.      ],
       [ 0.      ,  0.      ,  0.      ,  0.      ,  8.      ]])

যাইহোক, আমি এটি পাস যদি balance.m, আমি পেতে

>> balance(A)

ans =

    8.0000         0         0    0.0625    2.0000
         0    2.0000    0.0001         0         0
         0         0    6.0000    0.0002    0.0078
         0    0.0003         0    6.0000         0
         0         0         0         0    8.0000

যদি আপনি ক্রমচারণের নিদর্শনগুলি পরীক্ষা করেন তবে সেগুলি একই তবে স্কেলিং বন্ধ রয়েছে। gebalunityক্য স্কেলিং দেয় যেখানে মতলব 2: এর নিম্নোক্ত ক্ষমতা দেয় [-5,0,8,0,2]

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

একটি বিষয় সম্ভবত আমি জোর দিতে পারি যে আমি বেনারের কাজ সম্পর্কে সচেতন; বিশেষত এই উদ্দেশ্যে হ্যামিলটোনীয় ম্যাট্রিক্সের সিম্প্লিকটিক ব্যালেন্সিং । তবে নোট করুন যে এই ধরণের চিকিত্সা gcare.m(জেনারেলাইজড রিকাটি সলভার) এর মধ্যে করা হয় এবং ব্যালেন্সিং সরাসরি মাধ্যমে করা হয় balance.m। সুতরাং, কেউ যদি আমাকে প্রকৃত বাস্তবায়নের দিকে নির্দেশ করতে পারে তবে আমি প্রশংসা করব।


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

উত্তর:


7

এটি বের করার জন্য আমাকে বেশ খানিকটা সময় নিয়েছে এবং যথাযথভাবে আপনি অপরাধীটি খুঁজে পাওয়ার পরে তা স্পষ্ট হয়ে যায় ।

ডেভিড এস ওয়াটকিন্সে সমস্যাযুক্ত কেসগুলি পরীক্ষা করার পরে ব্যালেন্সিং ক্ষতিকারক একটি ক্ষেত্রে। ইলেকট্রন। ট্রান্স। Numer। মলদ্বার, ২৩: ১-৪, ২০০ ( এবং এখানেও আলোচনা (উভয়টি অর্ক্সিব: 1401.5766v1 তে উদ্ধৃত করা হয়েছে ), দেখা গেছে যে মতলব প্রথমে তির্যক উপাদানগুলি পৃথক করে ভারসাম্য ব্যবহার করে।

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

আসলে, আমি যদি ম্যানুয়ালি অ্যারে থেকে তির্যকটি সরিয়ে ফেলি, তবে উভয় ফলাফলের সাথে মিলে যায়, এটি

import scipy as sp
gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL
Ab, lo, hi, scaling , info = gebal(A - np.diag(np.diag(A)), scale=1 , permute=1 , overwrite_a=0 )  

balance.m(অবশ্যই তির্যক এন্ট্রি ব্যতীত) একই ফলাফল দেয় ।

কোনও ফোর্টরান-সেভি ব্যবহারকারী যদি dgebal.f পরীক্ষা করে এটি নিশ্চিত করতে পারেন তবে আমি কৃতজ্ঞ হব।

সম্পাদনা: উপরের ফলাফলটি বোঝায় না যে এটি কেবলমাত্র পার্থক্য। আমি বিভিন্ন ম্যাট্রিকও তৈরি করেছি যেখানে জিইবিএল এবং ভারসাম্য রচনাগুলি পৃথক পৃথক হওয়ার পরেও বিভিন্ন ফলাফলের জন্ম দেয়।

আমি পার্থক্যটি কি হতে পারে তা বেশ কৌতূহল বোধ করি তবে এটি কোনও মাতালাব অন্তর্নির্মিত এবং তাই বন্ধ কোড হিসাবে এটি জানার কোনও উপায় নেই।

সম্পাদনা 2 : এটি দেখা গেছে যে মাতলাব ল্যাপাকের পুরানো সংস্করণটি ব্যবহার করছে (সম্ভবত ৩.০.০ পূর্ববর্তী) এবং ২০১b খ-এর মধ্যে তারা আরও নতুন সংস্করণে আপগ্রেড হয়েছে বলে মনে হচ্ছে। এখন যতদূর আমি পরীক্ষা করতে পারি ফলাফলগুলি সম্মত। সুতরাং আমি মনে করি এটি সমস্যার সমাধান করে। পুরানো ল্যাপাক সংস্করণগুলির সাথে আমার এটি পরীক্ষা করা উচিত ছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.