ম্যাট্রিক্স কি ইতিবাচক-নির্ধারিত?


19

ভূমিকা

আজ আমরা প্রথম বর্ষের লিনিয়ার বীজগণিত শিক্ষার্থীদের বেনার যত্ন নেব: ম্যাট্রিক্স সুনির্দিষ্টতা! স্পষ্টতই এর এখনও কোনও চ্যালেঞ্জ নেই তাই এখানে আমরা যাচ্ছি:

ইনপুট

  • যে কোনও সুবিধাজনক বিন্যাসে একটি n×n প্রতিসাম্য ম্যাট্রিক্স A (আপনি অবশ্যই ম্যাট্রিক্সের উপরের বা নীচের অংশটি নিতে পারেন)
  • Ptionচ্ছিকভাবে: ম্যাট্রিক্সের আকার n

কি করো?

চ্যালেঞ্জ সহজ: একটি রিয়েল-মূল্যবান ম্যাট্রিক্স দেওয়া n×n ম্যাট্রিক্স সিদ্ধান্ত নেন কিনা এটি একটি truthy মান যদি তাই হয় এবং একটি falsey মান যদি না outputting ইতিবাচক নির্দিষ্ট হয়।

আপনি নিজের বিল্ট-ইনগুলি প্রকৃতপক্ষে সুনির্দিষ্টভাবে কাজ করার জন্য ধরে নিতে পারেন এবং সুতরাং কৌশল / কোড "প্রমাণিতভাবে" সঠিক ফলাফল দিতে পারলে এমন সংখ্যক সমস্যাগুলির জন্য অ্যাকাউন্ট করতে হবে না যা ভুল আচরণের দিকে পরিচালিত করতে পারে।

কে জিতলো?

এটি , তাই বাইটের (প্রতি ভাষা) সংক্ষিপ্ততম কোডটি জয়ী!


যাইহোক ইতিবাচক-নির্দিষ্ট ম্যাট্রিক্স কী?

যখন একটি প্রতিসাম্য ম্যাট্রিক্স ধনাত্মক-সুনির্দিষ্ট হয় তখন এর স্পষ্টতই 6 টি সমতুল্য সূত্র থাকে। আমি আরও তিনটি সহজ পুনরুত্পাদন করব এবং আরও জটিলগুলির জন্য আপনাকে উইকিপিডিয়ায় রেফারেন্স করব।

  • যদি vRn{0}:vTAv>0 তবে A ধনাত্মক-সুনির্দিষ্ট।
    এই পুনরায় প্রণয়ন যেমন হতে পারে
    যে নন-জিরো ভেক্টর যদি v গুণফল বিন্দু (আদর্শ) v এবং Av ইতিবাচক তারপর A ইতিবাচক-নির্দিষ্ট হয়।
  • যাক λii{1,,n} হতেeigenvaluesএরA , দয়া করেi{1,,n}:λi>0 (সমস্ত eigenvalues যে ইতিবাচক) তাহলেA ইতিবাচক-নির্দিষ্ট হয়।
    আপনি যদি না জেনে থাকেন তবে কোন আইগেন্যুয়েলগুলি আমি আপনাকে পরামর্শ দেওয়ার জন্য আপনার পছন্দসই সার্চ ইঞ্জিনটি ব্যবহার করার পরামর্শ দিচ্ছি, কারণ ব্যাখ্যাটি (এবং প্রয়োজনীয় গণনার কৌশলগুলি) এই পোস্টটিতে অন্তর্ভুক্ত করার পক্ষে দীর্ঘ।
  • তাহলে Cholesky-পৃথকীকরণ এর A বিদ্যমান, অর্থাত একটা ছোট হাতের ত্রিদলীয় ম্যাট্রিক্স বিদ্যমান L যেমন যে LLT=A তারপর A ইতিবাচক-নির্দিষ্ট হয়। দ্রষ্টব্য যে এটি প্রথম দিকে ফিরে আসা "মিথ্যা" সমান, যদি কোনও পর্যায়ে অ্যালগরিদমের সময় মূলের গণনা নেতিবাচক যুক্তির কারণে ব্যর্থ হয়।

উদাহরণ

সত্যবাদী আউটপুট জন্য

(100010001)

(1000020000300004)

(521211113)

(1222502030)

(7.152.452.459.37)

মিথ্যা আউটপুট জন্য

(কমপক্ষে একটি আইগেনুয়ালু 0 / ধনাত্মক আধা-নির্দিষ্ট) ( 3 - 2 )

(322240202)

(ইগুভ্যালুগুলির বিভিন্ন লক্ষণ / অনির্দিষ্টকালীন থাকে)

(100010001)

(সমস্ত ইগন্যালিউজ 0 / নেগেটিভ নির্দিষ্টের চেয়ে কম)

(100010001)

(সমস্ত ইগন্যালিউজ 0 / definণাত্মক নির্দিষ্টের চেয়ে ছোট)

(230350001)

(সমস্ত ইগন্যালিউজ 0 / negativeণাত্মক নির্দিষ্টের চেয়ে ছোট)

(7.152.452.459.37)

(তিনটি ইতিবাচক, একটি নেতিবাচক ইজিনাল্যু / অনির্দিষ্টকালের জন্য)

(7.152.451.233.52.459.372.713.141.232.7106.23.53.146.20.56)



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

9
@ শেগি আমি মনে করি যে সমস্ত পটভূমি এটি বন্ধ না করে চ্যালেঞ্জটি আরও ভাল। একটি ইগেনভ্যালু অন্য কোথাও রয়েছে এর অনেকগুলি বিদ্যমান ব্যাখ্যা রয়েছে এবং এই পোস্টটি ইতিমধ্যে সত্যিই বড়।
গম উইজার্ড

1
আপনি যদি ইনপুটটিকে সীমাবদ্ধ না করেন তবে চ্যালেঞ্জটি আরও ভাল হত প্রতিসম ম্যাট্রিকগুলিতে ।
polfosol ఠ_ఠ

1
আমি বোঝাতে চাইছি ইগেনভ্যালুগুলির সাইন জন্য অনুসন্ধান করাও বিরক্তিকর। আমি জানি বিভিন্ন স্বাদ;)
polfosol ఠ_ఠ

উত্তর:


11

সি, 108 বাইট

-1 বাইট ধন্যবাদ লোজার্ন
-3 বাইট ধন্যবাদ সিলিংক্যাটকে ধন্যবাদ

f(M,n,i)double**M;{for(i=n*n;i--;)M[i/n][i%n]-=M[n][i%n]*M[i/n][n]/M[n][n];return M[n][n]>0&(!n||f(M,n-1));}

এটি অনলাইন চেষ্টা করুন!

গাউসিয়ান নির্মূল কার্য সম্পাদন করে এবং সমস্ত তির্যক উপাদানগুলি ইতিবাচক কিনা তা পরীক্ষা করে (সিলভেস্টারের মাপদণ্ড)। যুক্তিn হ'ল ম্যাট্রিক্স বিয়োগের আকার।


সম্ভবত ডাবল পরিবর্তে ভাসা দিয়ে একটি চরিত্র সংরক্ষণ?
জেনস


আপনি অন্য অক্ষর শেভ করতে পারেন যদি আপনি লুপটিতে ছেড়ে i=0যান, পুনরাবৃত্ত কল f(M,n-1,0)এবং তৃতীয় আর্গ হিসাবে 0 দিয়ে প্রাথমিক কল করুন।
জেনস

@ জেনস ১। ডাবলসের পরিবর্তে ফ্লোট ব্যবহার করা তাড়াতাড়ি লক্ষণীয় গোলাকার ত্রুটির দিকে পরিচালিত করতে পারে, তাই আমি মনে করি না যে একটি বাইট সংরক্ষিত হয়েছে এটি তার পক্ষে মূল্যবান। ২. অতিরিক্ত যুক্তির মাধ্যমে ভেরিয়েবলের সূচনা করা আমার কাছে প্রতারণার মতো মনে হয়।
nwellnhof

@ লোগরেন আমি আমার সি উত্তরগুলিতে "রিটার্নের বিবৃতি বাদ দিন" কৌশলটি ব্যবহার করতে অস্বীকার করি। তবে অন্যান্য বাইট সংরক্ষণের জন্য ধন্যবাদ।
nwellnhof

9

ম্যাটল্যাব / অক্টোব , 19 17 12 বাইট

@(A)eig(A)>0

এটি অনলাইন চেষ্টা করুন!

ফাংশন আইইগ আরোহী ক্রমে ইগেনভ্যালুগুলি সরবরাহ করে, সুতরাং যদি প্রথম ইগেনালুয় শূন্যের চেয়ে বড় হয়, অন্যগুলিও হয়।


আপনি f=শুরুতে ড্রপ করতে পারেন - বেনাম ফাংশনগুলি সাধারণত উত্তর হিসাবে গ্রহণ করা হয়।
ডেল্ডাড0

টিপ জন্য ধন্যবাদ!
ড্যানিয়েল তুরিজো

এমনকি যদি এটি একটি ভেক্টর? আকর্ষণীয়
ড্যানিয়েল তুরিজো

1
+1 টি। এটি অনলাইনে চেষ্টা করার জন্য আমি একটি লিঙ্ক যুক্ত করেছি। আশা করি কিছু মনে করবেন না। নোট করুন যে এটি অ্যারে থাকা সত্ত্বেও আউটপুট মানগুলি ডেলফ্যাড0r পোস্ট করা লিঙ্ক অনুযায়ী সঠিক "সত্যবাদী" বা "মিথ্যা" মান হিসাবে গণ্য করে তা প্রমাণ করে দিচ্ছে।
টম কার্পেন্টার

2
এটি বলার পরে, এটি টিআইওর প্রথম "ভুয়া" পরীক্ষার ক্ষেত্রে ব্যর্থ হয়। আমি একটি নির্ভুল সমস্যার কারণে অনুমান করছি - ইগেন মানগুলির মধ্যে একটি 8.9219e-170 এর পরিবর্তে প্রকাশ পেয়েছে
টম কার্পেন্টার

7

জেলি , 11 10 বাইট

ṖṖ€$ƬÆḊṂ>0

সিলভেস্টারের মাপদণ্ড ব্যবহার করে ।

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

ṖṖ€$ƬÆḊṂ>0  Main link. Argument: M (matrix)

   $Ƭ       Do the following until a fixed point is encountered.
Ṗ             Pop; remove the last row of the matrix.
 Ṗ€           Pop each; remove the last entry of each row.
     ÆḊ     Take the determinants of the resulting minors.
       Ṃ    Take the minimum.
        >0  Test if the least determinant is positive, i.e., if all determinants are.


6

হাস্কেল , 56 বাইট

f((x:y):z)=x>0&&f[zipWith(-)v$map(u/x*)y|u:v<-z]
f[]=1>0

এটি অনলাইন চেষ্টা করুন!

মূলত নওহ্নহোফের উত্তরের একটি বন্দর । গাউসিয়ান নির্মূলকরণ সম্পাদন করে এবং মূল তির্যকটিতে থাকা উপাদানগুলি ইতিবাচক কিনা তা পরীক্ষা করে।

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


2
আপনি inputs :: [[[Rational]]]সঠিক উত্তর পেতে যোগ করতে পারেন
কার্টিস Bechtel

4

চতুর্থ পরীক্ষার মামলাটি কি মিথ্যা হওয়া উচিত?
tsh

@ স্প স্থির, আমি বোবা!
মিঃ এক্সকোডার

8
মজাদার যে কীভাবে এর জন্য অন্তর্নির্মিত রয়েছে তা মজার , তবে এর নামটি আপনার সমাধানের চেয়ে দীর্ঘ।
ফেডেরিকো পোলোনি

@ ফেডেরিকো পোলোনি: নুলস্পেস বা ম্যাট্রিক্সর্যাঙ্ক ব্যবহারের সমাধান কি আরও ছোট হবে না? নাল স্পেস যদি শূন্য হয় তবে ম্যাট্রিক্স ইতিবাচক সুনির্দিষ্ট।
ফিল এইচ

@ ফিলিফ না, আমি ভয় করি যে এটি নিজের দ্বারা কার্যকর হবে না। উদাহরণস্বরূপ, দ্বিতীয় মিথ্যা উদাহরণ ((1, -1,1) সহ তির্যক ম্যাট্রিক্স) এর র‌্যাঙ্ক 3 রয়েছে, তবে এটি ইতিবাচক সুনির্দিষ্ট নয়।
ফেডেরিকো পোলোনি

3

এমএটিএল , 4 বাইট

Yv0>

এটি অনলাইন চেষ্টা করুন!

আমি লক্ষ করেছি যে [3 -2 2; -2 4 0; 2 0 2]পরীক্ষার ক্ষেত্রে এমএটিএল 0খুব ছোট অসাধ্যতার সাথে এগেনভ্যালু গণনা করে , কিছু হিসাবে কম হিসাবে কিছু গণনা করে10-18। অতএব নির্ভুলতার কারণে এটি প্রথম মিথ্যা পরীক্ষার ক্ষেত্রে ব্যর্থ। লুইস মেন্ডোকে নির্দেশ করার জন্য ধন্যবাদ যে একটি খালি নয় এমন অ্যারে সত্যবাদী যদি তার সমস্ত এন্ট্রি 0 থেকে আলাদা হয়, 1 বাইট সংরক্ষণ করে।


1
@ লুইস মেন্ডো ধন্যবাদ, আমি আজ এমএটিএল সম্পর্কে নতুন কিছু শিখলাম!
মিঃ এক্সকোডার

আমার আনন্দ :-) এখানে সোয়েভারের আরও ভাল ব্যাখ্যা । আমি বলতে ভুলে গেছি যে জটিল-মূল্যবান অ্যারেগুলির জন্য কেবল আসল অংশটি শূন্যের সাথে তুলনা করা হয়। তাই [1 2 3j]মিথ্যা
লুইস মেন্ডো



2

এমএটিএল , 6 বাইট

এটি আরও কম বাইট ব্যবহার করে করা সম্ভব, @ মি। এক্সকডার একটি 5 বাইট এমএটিএল উত্তর সন্ধান করতে সক্ষম হয়েছেন !

YvX<0>

ব্যাখ্যা

Yv     compute eigenvalues
  X<   take the minimum
    0> check whether it is greather than zero

এটি অনলাইন চেষ্টা করুন!


Fails on the first falsy test case. See my deleted answer.
Mr. Xcoder

1
@Mr.Xcoder Oh, you even submitted an answer before me. I think you should undelete your answer as it just depends on rounding issues. (I think you can expect answers to use limited precision arithmetic - I think only the CAS languages here use exact computations.)
flawr

Following your advice, I've undeleted it.
Mr. Xcoder

1

Maple, 33 bytes

(i.e. my 2 cents)

with(LinearAlgebra):
IsDefinite(A)

Hello and welcome to PPCG; I am unfamiliar with Maple, though is the newline necessary?
Jonathan Frech

@JonathanFrech Hello and thanks. No it's not. I didn't count it btw.
polfosol ఠ_ఠ

To me your current byte count seems to reflect the newline character.
Jonathan Frech

@JonathanFrech Duh, my bad
polfosol ఠ_ఠ

1
Well ... now your code and your byte count disagree.
Jonathan Frech

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