मैट्रिक्स पॉजिटिव-निश्चित है?


19

परिचय

आज हम पहले साल के रेखीय बीजगणित छात्रों के बैन का ध्यान रखने वाले हैं: मैट्रिक्स की निश्चितता! जाहिरा तौर पर यह अभी तक एक चुनौती नहीं है इसलिए हम यहाँ जाते हैं:

इनपुट

  • एक सममित मैट्रिक्स किसी भी सुविधाजनक प्रारूप में (आप भी निश्चित रूप से केवल ऊपरी या मैट्रिक्स के निचले हिस्से लग सकते हैं)n×n A
  • वैकल्पिक रूप से: मैट्रिक्स का आकारn

क्या करें?

चुनौती आसान है: एक वास्तविक-मूल्यवान मैट्रिक्स मैट्रिक्स को देखते हुए कि क्या यह सत्य मान का उत्पादन करके सकारात्मक निश्चित है यदि ऐसा है और नहीं तो एक गलत मूल्य।n×n

आप वास्तव में ठीक से काम करने के लिए अपने बिल्ट-इन को मान सकते हैं और इस तरह संख्यात्मक मुद्दों के लिए खाता नहीं है जो गलत व्यवहार का कारण बन सकता है अगर रणनीति / कोड "साबित" सही परिणाम प्राप्त करना चाहिए।

किसी जीत?

यह , इसलिए बाइट्स (प्रति-भाषा) में सबसे छोटा कोड जीतता है!


एक सकारात्मक निश्चित मैट्रिक्स वैसे भी क्या है?

जब सममित मैट्रिक्स धनात्मक-निश्चित होता है, तो स्पष्ट रूप से 6 समतुल्य सूत्र होते हैं। मैं तीन आसान लोगों को पुन: पेश करूंगा और आपको अधिक जटिल लोगों के लिए विकिपीडिया का संदर्भ दूंगा ।

  • यदि तो सकारात्मक-निश्चित है। इसे फिर से तैयार किया जा सकता है: यदि प्रत्येक गैर-शून्य वेक्टर (मानक) डॉट उत्पाद के लिए और सकारात्मक है तो धनात्मक-निश्चित है।vRn{0}:vTAv>0A

    vvAvA
  • चलो हो eigenvalues के , अब अगर (है कि सभी है eigenvalues ​​धनात्मक होते हैं) तब धनात्मक-निश्चित होता है। यदि आप नहीं जानते हैं कि मैं क्या कहता हूं, तो आपको पता लगाने के लिए अपने पसंदीदा खोज इंजन का उपयोग करने का सुझाव देता हूं, क्योंकि स्पष्टीकरण (और आवश्यक गणना रणनीतियों) इस पोस्ट में शामिल होने के लिए बहुत लंबा है।λii{1,,n}Ai{1,,n}:λi>0A
  • यदि Cholesky-अपघटन के से मौजूद है, यानी वहाँ एक कम त्रिकोणीय मैट्रिक्स मौजूद ऐसी है कि तो सकारात्मक-निश्चित है। ध्यान दें कि यह प्रारंभिक-रिटर्न "झूठे" के बराबर है यदि किसी भी बिंदु पर एल्गोरिथ्म के दौरान रूट की गणना एक नकारात्मक तर्क के कारण विफल हो जाती है।ALLLT=AA

उदाहरण

सत्य आउटपुट के लिए

(100010001)

(1000020000300004)

(521211113)

(1222502030)

(7.152.452.459.37)

झूठा उत्पादन के लिए

(कम से कम एक eigenvalue 0 / धनात्मक अर्ध-निश्चित है)

(322240202)

(eigenvalues ​​के अलग-अलग संकेत / अनिश्चित होते हैं)

(100010001)

(सभी 0 / नकारात्मक निश्चित से छोटे eigenvalues)

(100010001)

(सभी 0 / नकारात्मक निश्चित से छोटे eigenvalues)

(230350001)

(सभी 0 / नकारात्मक निश्चित से छोटे eigenvalues)

(7.152.452.459.37)

(तीन सकारात्मक, एक नकारात्मक / अनिश्चित)

(7.152.451.233.52.459.372.713.141.232.7106.23.53.146.20.56)



आपको इस बात की बेहतर परिभाषा प्रदान करने की आवश्यकता है कि हम यह मानने के बजाय कि हम गणितीय संकेतन पढ़ सकते हैं (या सभी जानते हैं कि "आइजनवेल्यू" क्या है)। एक काम किया उदाहरण भी उपयोगी होगा।
झबरा

9
@ मुझे लगता है कि चुनौती सभी पृष्ठभूमि के बिना बेहतर है इसे रोकना। क्या एक eigenvalue कहीं और है के कई मौजूदा स्पष्टीकरण हैं, और यह पोस्ट पहले से ही वास्तव में बड़ी है।
गेहूं जादूगर

1
चुनौती यह थी कि आप सममित मैट्रिक में इनपुट को प्रतिबंधित नहीं करते थे।
पोलफोसोल ఠ_ఠ

1
मेरा मतलब था कि सिर्फ स्वदेशी के संकेत के लिए जाँच करना भी उबाऊ है। अलग-अलग स्वाद मुझे पता है;)
पोलोफोसोल ఠ_

जवाबों:


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 के साथ तीसरे आर्ग के रूप में कर सकते हैं।
जेन्स

@ जेंस 1. डबल्स के बजाय फ्लोट्स का इस्तेमाल करने से ध्यान देने योग्य चक्कर लग सकते हैं, इसलिए मुझे नहीं लगता कि बचाई गई एक बाइट इसके लायक है। 2. एक अतिरिक्त तर्क के माध्यम से एक वैरिएबल को शुरू करना मुझे धोखा देने जैसा लगता है।
nwellnhof

@ मैं अपने C उत्तरों में "रिटर्न स्टेटमेंट को छोड़ें" ट्रिक का उपयोग करने से इनकार करता हूं। लेकिन अन्य बाइट के लिए धन्यवाद बचाया।
nwellnhof

9

MATLAB / ऑक्टेव , 19 17 12 बाइट्स

@(A)eig(A)>0

इसे ऑनलाइन आज़माएं!

फ़ंक्शन ईग, आरोही क्रम में आईजेनवेल्यू प्रदान करता है, इसलिए यदि पहला ईजेन्यूएल शून्य से अधिक है, तो अन्य भी हैं।


आप f=शुरुआत में छोड़ सकते हैं - गुमनाम कार्यों को आम तौर पर उत्तर के रूप में स्वीकार किया जाता है।
Delfad0r

पारितोषिक के लिए धन्यवाद!
डैनियल टर्ज़ो सेप

भले ही इसका वेक्टर हो? रुचिकर
डैनियल टरिजो

1
+1। मैंने इसे ऑनलाइन आज़माने के लिए एक लिंक जोड़ा है। आशा है कि आप बुरा नहीं मानेंगे ध्यान दें कि यह भी साबित हो रहा है कि सरणियों के होने के बावजूद आउटपुट मान सही "सत्य" या "गलत" मानों के रूप में लिंक @ Delfad0r पोस्ट किए गए हैं।
टॉम कारपेंटर

2
ऐसा होने के बाद, यह TIO पर पहले "फाल्सी" परीक्षण के मामले में विफल रहता है। मैं एक सटीक मुद्दे के कारण अनुमान लगा रहा हूं - ईजन मूल्यों में 8.9219e-17से एक 0. के बजाय बाहर आता है
टॉम कारपेंटर

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

इसे ऑनलाइन आज़माएं!

मूल रूप से nwellnhof के उत्तर का एक बंदरगाह । गाऊसी उन्मूलन करता है और जांचता है कि मुख्य विकर्ण पर तत्व सकारात्मक हैं या नहीं।

गोलाई त्रुटियों के कारण पहला गलत उत्पादन होता है, लेकिन यह सैद्धांतिक रूप से अनंत परिशुद्धता के साथ काम करेगा। कर्टिस Bechtel के सुझाव के लिए धन्यवाद , अब आउटपुट सभी सही हैं।


2
आप inputs :: [[[Rational]]]सही उत्तर पाने के लिए जोड़ सकते हैं
कर्टिस बेचटेल

4

क्या 4 वां परीक्षण मामला गलत होना चाहिए?
tsh

@tsh फिक्स्ड, मैं गूंगा हूं!
मिस्टर एक्सकोडर

8
मजेदार यह है कि मैथेमेटिका के पास इसके लिए एक बेसिन कैसे है , लेकिन इसका नाम आपके समाधान से अधिक लंबा है।
फेडेरिको पोलोनी

@FedericoPoloni: NullSpace या MatrixRank का उपयोग करते हुए एक समाधान भी छोटा नहीं होगा? यदि नल स्थान शून्य है तो मैट्रिक्स सकारात्मक निश्चित है।
फिल एच।

@PhilH नहीं, मुझे डर है कि अपने आप से काम नहीं करता। उदाहरण के लिए, दूसरे गलत उदाहरण (विकर्ण मैट्रिक्स (1, -1,1) के साथ) रैंक 3 है, लेकिन सकारात्मक निश्चित नहीं है।
फेडरिको पोलोनी

3

MATL , 4 बाइट्स

Yv0>

इसे ऑनलाइन आज़माएं!

[3 -2 2; -2 4 0; 2 0 2]01018


1
@LuisMendo धन्यवाद, मैंने आज MATL के बारे में कुछ नया सीखा है!
मिस्टर एक्सकोडर

मेरी खुशी :-) यहाँ Suever द्वारा एक बेहतर व्याख्या है। मैं यह कहना भूल गया कि जटिल-मूल्यवान सरणियों के लिए केवल वास्तविक भाग की तुलना शून्य से की जाती है। तो [1 2 3j]फाल्सी है
लुइस



2

MATL , 6 बाइट्स

यह कम बाइट्स का उपयोग करके संभव है, @Mr। Xcoder एक 5 बाइट MATL उत्तर खोजने में कामयाब रहा !

YvX<0>

व्याख्या

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

इसे ऑनलाइन आज़माएं!


पहले झूठे परीक्षण के मामले में विफल रहता हैमेरा डिलीट किया हुआ जवाब देखें ।
मिस्टर एक्सकोडर

1
@ Mr.Xcoder ओह, तुम भी मेरे सामने एक जवाब प्रस्तुत किया। मुझे लगता है कि आपको अपने उत्तर को रद्द कर देना चाहिए क्योंकि यह केवल राउंडिंग मुद्दों पर निर्भर करता है। (मुझे लगता है कि आप सीमित सटीक अंकगणित का उपयोग करने के लिए उत्तर की उम्मीद कर सकते हैं - मुझे लगता है कि केवल सीएएस भाषाएं यहां सटीक गणना का उपयोग करती हैं।)
त्रुटी

आपकी सलाह के बाद, मैंने इसे हटा दिया है
श्री एक्सकोडर

1

मेपल , 33 बाइट्स

(यानी मेरे 2 सेंट)

with(LinearAlgebra):
IsDefinite(A)

नमस्कार और पीपीसीजी में आपका स्वागत है; मैं मेपल से अपरिचित हूं, हालांकि नईलाइन आवश्यक है?
जोनाथन फ्रैच

@JonathanFrech नमस्कार और धन्यवाद। नहीं यह नहीं। मैंने इसे btw नहीं गिना।
पोलोफोसोल ఠ_ఠ 16

मेरे लिए आपकी वर्तमान बाइट गिनती न्यूलाइन वर्ण को दर्शाती है।
जोनाथन फ्रीच

@JonathanFrech Duh, मेरा बुरा
polfosol ఠ_

1
खैर ... अब आपका कोड और आपकी बाइट की गिनती असहमत है।
जोनाथन फ्रीच

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.