2010-02-09 11 views
8

मान लीजिए मैं मैट्रिसेस की एक सूची चर G में बचाया और निम्न कार्रवाई लागू है:,क्या मैथमैटिका 7 आलसी evalution का समर्थन करता है?

top[g_] = Minors[g] 
Diagonal[top /@ G] 

Minors एक मैट्रिक्स प्रत्येक तत्व का नष्ट कर दिया (i, j) पंक्तियां/स्तंभ के साथ निर्धारक है देता है और Diagonal एक मैट्रिक्स के विकर्ण तत्वों की एक सूची देता है।

मेरा प्रश्न इन आदेशों के मूल्यांकन पर है - स्पष्ट रूप से मैं नहीं चाहता कि सभी प्रविष्टियों का मूल्यांकन किया जाए। क्या गणित इस अर्थ में आलसी है कि डायगोनल को पहले पार्स किया जाता है जो केवल माइनर्स से आवश्यक तत्वों को निकालता है या मामूली मैट्रिक्स का निर्माण होता है और फिर इसके विकर्ण तत्वों को बाहर निकाला जाता है?

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

+0

जी एक मैट्रिक्स या matrices की एक सूची है? क्या आप जी पर शीर्ष मानचित्र का मतलब है? और फिर matrices की एक सूची का विकर्ण ले लो? – Davorak

उत्तर

3

देर हो चुकी है इसलिए केवल एक छोटा सा जवाब: Hold[] और इसके रिश्तेदारों की जांच करें। उनके साथ आप आलसी मूल्यांकन कार्यों को लागू कर सकते हैं। अधिकांश आंतरिक गणित कार्य आलसी नहीं हैं, कुछ हैं। आम तौर पर, शुरुआत के रूप में, आपको गणित के आंतरिक कार्यों के व्यवहार को संशोधित करने से बचना चाहिए, हालांकि ऐसा करने में बहुत अच्छा मजा आता है और पूरी प्रणाली को आसानी से अनुपयोगी बना सकता है।

+1

जब आपको मौका मिलता है, तो क्या आप अपना प्रश्न एक उदाहरण प्रदान करने के लिए संपादित कर सकते हैं (शायद जैसा कि बताया गया है)? गणित की वेबसाइट, उदाहरणों से भरे हुए, व्यावहारिक कुछ भी प्रतीत नहीं कर रही थी। – Hooked

1

कोई गणित सामान्य रूप से आलसी नहीं है।

top/@G 

एक मैट्रिक्स का उत्पादन करेगा जो डायगोनल चालू होगा। चूंकि माइनर मैट्रिक्स के अलग-अलग तत्वों पर काम नहीं करता है, इसलिए आप जो भी मांग रहे हैं वह मेरे ज्ञान से नहीं, केवल आलसी मूल्यांकन है।

मुझे लगता है कि मेरे पास आपके लिए कोई समाधान है।

Clear[f]; 
Diagonal[Minors[G,Length[G],f]]/.f->Det 

यह समाधान केवल डायगोनल द्वारा वर्णित विकर्ण तत्वों के नाबालिगों का उत्पादन करेगा। लेकिन मैंने केवल अतिरिक्त गणना को अतिरिक्त स्मृति उपयोग समस्या में स्थानांतरित कर दिया है। चूंकि ऑफ विकर्ण तत्वों के सबमिट्रिक्स अभी भी केवल फेंकने के लिए उत्पादित हैं। यदि मैं इसे रोकने के तरीके के बारे में सोचता हूं तो मैं फिर से पोस्ट करूंगा।

3

आप खुद विकर्ण नाबालिगों की सूची के निर्माण और उसके बाद Det लागू करने, एक मैट्रिक्स M के लिए द्वारा इस समस्या को हल कर सकते हैं:

Map[Det,Drop[Transpose[Drop[M,{#}]],{#}]& /@ Range[1,Dimensions[M][[1]]]] 

यह एक cludge का एक सा है, लेकिन यह लगभग 50 गुना तेजी से होता है Minors में निर्मित गणित का उपयोग करने और केवल विकर्ण तत्वों को चुनना (100x100 यादृच्छिक matrices पर परीक्षण)।

+0

(+1) विशेष समस्या के व्यावहारिक समाधान के लिए (धन्यवाद!)। मैं एक अलग जवाब का चयन कर रहा हूं क्योंकि सवाल गणित में आलसी मूल्यांकन के बारे में था। – Hooked

+0

कोई समस्या नहीं :-)। – Timo

संबंधित मुद्दे