प्रोग्रामिंग के लिए अच्छे गणितीय सूत्र क्या हैं? [बन्द है]


19

आपके द्वारा सीखे गए कुछ सामान्य गणित सूत्र क्या हैं जिन्होंने आपको बेहतर एल्गोरिदम लिखने और एक बेहतर प्रोग्रामर बनने में मदद की?

उदाहरण: मैंने एक्युलियन डिस्टेंस फॉर्मूला के बारे में सीखा: sqrt((x1-x2)^2+(y1-y2)^2)जिसने मुझे यह समझने में मदद की कि 2 कारकों की तुलना करके वस्तुओं को कैसे खोजना है।


2
मुझे नहीं लगता कि यह यूक्लिडियन दूरी का सूत्र है।
ग्रेग हेवगिल सेप

@ लॉरी @Greg का संपादन किया गया।
जीएसटीओ

haha कैसे के बारे में fibo अनुक्रम ... बेंचमार्किंग के लिए अच्छा है
aggietech

1
समापन तिथि = (अनुमानित तिथि + दिनों की संख्या वाम / २) ^ ^ (घर पर काम / समय पर) * नि: शुल्क पिज्जा की संख्या
स्कीज़े

7
आपको यह जानना दिलचस्प लग सकता है कि यदि आपको दूरियों की तुलना करने की आवश्यकता है , तो आप sqrtकदम को छोड़ सकते हैं । एक तंग आंतरिक पाश के लिए, यह बात हो सकती है।

जवाबों:


16

2 की शक्तियों को जानना आसान है, खासकर जब निम्न-स्तरीय बिटवाइज़ ऑपरेशंस से निपटना।


+1 - आधारों से 2, 16, 10 और 8 में परिवर्तित होने में सक्षम होना आवश्यक है।
मौविसील

2
मैं बेस -8 के बारे में निश्चित नहीं हूं, लेकिन मैं 2,16 और 10 रूपांतरणों से सहमत हूं। आपको इसे उचित समय सीमा में करने में सक्षम होना चाहिए, लेकिन जरूरी नहीं कि तुरंत।
गुप्त

मेरा एक शिक्षक एक हेक्स-जानवर है। उनके प्रमुख हास्यास्पद संख्या में धर्मान्तरित और मैं एक वर्ष के लिए उनके लिए एक TA था, वर्ग हमेशा से प्रभावित था क्योंकि मैं था
क्रिस

मुझे आधार 8 से नफरत है :)

1
आधुनिक भाषाओं में मैक्रोज़, एनम और बिटफ़िल्ड के साथ, किन मामलों में लोगों को 2 की शक्तियों को जानने की आवश्यकता होती है, जो मौलिक रूप से जादुई संख्या हैं .. setsockopt(...SO_KEEPALIVE..)पढ़ने और लिखने की तुलना में काफी आसान हैsetsockopt(...16...)
JBRWilkinson

15

बूलियन बीजगणित पहले ही उल्लेख किया गया था, लेकिन मैं कुछ व्यावहारिक उदाहरण प्रदान करना चाहता था।

जब आप जटिल बूलियन अभिव्यक्तियों ( ifउदाहरण के लिए बयानों में ) के साथ काम करते हैं तो बूलियन बीजगणित बहुत बार आता है ।

युगल उपयोगी अभिव्यक्ति और कानून:

Distributivity

A & (B | C) = (A & B) | (एसी)

ए | (B & C) = (A | B) और (A | C)

तो अगली बार जब आप ऐसी अभिव्यक्ति पर ठोकर खाते हैं:

if((A || B) && (A || C) && (A || D) && (A || E)) { ... }

आप इसे आसानी से सिकोड़ सकते हैं:

if(A || (B && C && D && E)) { ... }

नकार और डी मॉर्गन का नियम

! (ए!) = ए

! (ए एंड बी) =! ए | ! बी

! (A | B) =! A & B!

कहते हैं कि आपके पास इस तरह का बयान है:

if(!A && !B && !C) {..}

और आपको इसके विपरीत का निर्माण करने की आवश्यकता है। लिख रहे हैं:

if(!(!A && !B && !C)) {...}

काम करेगा, लेकिन इस समकक्ष के रूप में शांत नहीं दिखता है:

if(A | B | C) {...}

2
ऐसा करने में समस्या यह है कि क्या यह वास्तविक वास्तविक जीवन के व्यावसायिक नियम हैं, क्योंकि उनमें CHANGE की प्रवृत्ति है। यदि हां, तो आपको इसे बदलने के लिए मूल अभिव्यक्ति को फिर से संगठित करने की आवश्यकता है, और फिर इसे फिर से अनुकूलित करें। ऐसा करते समय रख-रखाव करने वाले लोग परेशान हो जाते हैं।

और वह वह जगह है जहां एक कर्णघट मानचित्र मदद कर सकता है। यह केवल एक ही बार में 4 बूलियन झंडे पर अच्छी तरह से काम करता है, लेकिन अगर आपको अधिक - सौभाग्य की आवश्यकता है!
नौकरी में

3
डी मॉर्गन के नियम के लिए +1। मुझे आश्चर्य है कि ऐसा लगता है कि कितने लोगों को यह सिखाया गया है और इसे लागू करने का तरीका जानते हैं।
फॉर्च्युनर

आप इसे भूल गए (P -> Q) <=> (!P | Q):। मैं इसे हर समय उपयोग करता हूं क्योंकि बहुत कम वातावरण तार्किक निहितार्थ ऑपरेटर की पेशकश करते हैं, यह SQL CHECK बाधाओं के लिए एक बहुत ही आसान तुल्यता है।
मयू बहुत कम

कर्णघ और डी मॉर्गन का नियम कुछ ऐसा है जो आपको आमतौर पर इलेक्ट्रिकल इंजीनियरिंग कक्षाओं में उपयोग करने के लिए सिखाया जाता है, लेकिन कंप्यूटर इंजीनियरिंग कक्षाओं में नहीं। यह अजीब है, क्योंकि अनुप्रयोगों को उत्तरार्द्ध में पाया जा सकता है जैसे कि डी मॉर्गन के ऊपर उल्लिखित कानून का व्यावहारिक उपयोग।
Spoike

9

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

यदि आपको कुछ गणना करने की आवश्यकता है, तो आमतौर पर लाइब्रेरी में एक फ़ंक्शन होता है या इसके चारों ओर उदाहरण स्रोत कोड होता है जो आपके लिए इसकी गणना कर सकता है। उदाहरण के लिए, एक्सेल का पीएमटी () फ़ंक्शन, जो वाई अवधि में एक्स% पर ऋण चुकाने के लिए आवश्यक भुगतानों की गणना करता है। क्या आप वास्तव में यह जानना चाहते हैं कि यह कैसे गणना करता है, या क्या यह केवल बिल्ट-इन एक कॉल करने के लिए पर्याप्त है?

पिछले 10 वर्षों में, मुझे नहीं लगता कि मुझे Ceil (), Min () और Max () के अलावा मैथ लाइब्रेरी से कुछ भी उपयोग करने की आवश्यकता है, जो दर्शाता है कि भले ही कंप्यूटर गणित-आधारित समस्याओं को हल करने के लिए तैयार थे आज आम उपयोग डेटा के प्रवाह के आसपास निर्णय लेना है।

उदाहरण के लिए, फेसबुक को लें, जिसमें भारी मात्रा में कोड है। वहाँ कहीं न कहीं कुछ मठ है, लेकिन मुझे मुख्य रूप से क्रिप्टो एपीआई में संदेह है, जो शायद एक सिस्टम लाइब्रेरी है। लेकिन डेटाबेस का उपयोग, प्राधिकरण निर्णय, पृष्ठ निर्माण और सूचना मार्ग शायद पूरे मठ का उपयोग नहीं करते हैं।

हां, ऐसे बाजार हैं जिन्हें बहुत सारे गणित - वित्त, भौतिकी, इंजीनियरिंग की आवश्यकता है - लेकिन इन उद्योगों में, आपके प्राथमिक अनुशासन में गणित / अर्थशास्त्र, भौतिकी, इंजीनियरिंग, आदि होने की अधिक संभावना है, इसलिए आपके प्रश्न 'मैं कैसे लिख सकता हूं भाषा में सूत्र f (x)? '

अपने समय का एक बेहतर उपयोग, IMO, एल्गोरिथम (बिग ओ नोटेशन सहित) और डिज़ाइन पैटर्न की जांच करना होगा।


1
+1 क्योंकि यह एक उचित कथन जैसा लगता है - ऐसा कोई विशेष सूत्र नहीं है जिसे आपको जानना चाहिए, लेकिन एल्गोरिथम जटिलता (बिग ओ नोटेशन) की अवधारणा बहुत महत्वपूर्ण है।
माइकल एच।

खूब सारा गणित ... तय करता है कि आपको किन विज्ञापनों से बग करना है।

मैं मानता हूँ कि आवश्यक गणित की मात्रा आम तौर पर काफी कम है, हालांकि मेरा अनुभव आपके जितना कम नहीं है - मैं ग्राफिक्स में समय-समय पर ट्रिगर सामान का उपयोग करता हूं।
लोरेन Pechtel

7

ऐसा कोई फॉर्मूला नहीं है जो आपको एक बेहतर प्रोग्रामर बना सकता है।

गणित से संबंधित कौशल आपको एक बेहतर प्रोग्रामर बना सकते हैं:

  • वैज्ञानिक विधि - गणित / विज्ञान सोचने का तरीका और समस्या हल करना
  • अमूर्त - कपोल-कल्पना और प्रतिमानों की पहचान करने की क्षमता
  • वंशानुक्रम - नई समस्याओं को हल करने में मौजूदा कार्य / विधियों का पुन: उपयोग
  • अनुभव - समस्याओं और समाधानों के एक समूह को समझना

-1, आदमी ने उपयोगी MATH FORMULAS के बारे में पूछा। मुझे विश्वास नहीं हो रहा है कि यह जवाब बिल्कुल गलत था।
जस


6

मैं टेलर श्रृंखला का उल्लेख करना चाहता हूं जो "भारी" कार्यों के त्वरित सन्निकटन प्राप्त करने के लिए काफी उपयोगी हैं। उदाहरण के लिए sin(x)लगभग 0 के साथ अनुमानित किया जा सकता है x-(x*x*x/6)

सामान्य तौर पर, यह विचार कि चीजों को अंतिम महत्वपूर्ण अंक की गणना करने के बजाय जल्दी से अनुमानित करने के लिए चतुर तरीके हैं, (हालांकि प्राथमिक कार्यों के लिए, अधिकांश आधुनिक प्रोसेसर में तेज़ हार्ड-वायर्ड कार्यान्वयन शामिल हैं, ताकि टेलर को अनुमानित पाप का उपयोग करना महत्वपूर्ण नहीं हो सकता है) गति हासिल)।


3

डी मॉर्गन के नियम, बूलियन को बदलने के बारे में "और" और "या" नकारात्मक के सापेक्ष, और बूलियन तर्क के बारे में कुछ और अधिक प्राथमिक tidbits (जैसे डबल नकार)।


2

तीन का नियम (क्रॉस गुणा का प्रकार)

बुनियादी आँकड़ों के फार्मूले के लिए +1।

मैंने कई लोगों को मूल कोड पर इस सरल नियम को लागू करने में कठिनाई के साथ देखा।


क्रॉस-गुणा के लिए +1। कुछ सॉफ़्टवेयर में जो पूर्णांक ओवरफ़्लो समस्याओं से ग्रस्त है, क्रॉस-गुणा का उपयोग यह जांचने के लिए किया जाता है कि परिणाम अतिप्रवाह नहीं हैं।
रवांग

2
कोई बड़ी बात नहीं। यह एक हाई-स्कूल ग्रेजुएट के सिर में प्रवेश करना चाहिए जो सीएस की पढ़ाई करना चाहता है।
जॉब

@ जॉब: एक सैद्धांतिक दुनिया में, यह सच है!
पगोटी


2

ब्रह्मांड की कानून , बहुत सारी ज्यामितीय समस्याओं के लिए बहुत महत्वपूर्ण है,

वैकल्पिक शब्द

विशेष रूप से कोण निर्धारण।


उस समीकरण में गामा क्या है?
मैट एलेन

1
@ मेट एलेन: अगल-बगल के कोण C (IOW, A और B के बीच का कोण)
Lie Ryan

2
और निश्चित रूप से, सही त्रिकोण के लिए विशेष मामला:a^2 + b^2 = c^2
स्वयं पर ध्यान दें -

2

प्रोग्रामिंग एक बहुत व्यापक क्षेत्र है। गणित का सूत्र इस बात पर निर्भर करता है कि आप प्रोग्रामिंग के किस क्षेत्र में हैं। यदि आप ग्राफिक्स में हैं, तो गेम प्रोग्रामिंग में आपको अधिक त्रिकोणमिति, ज्यामिति जानने की जरूरत है। गेम प्रोग्रामिंग को आगे भौतिकी, प्रतिपादन, shader .. जैसे क्षेत्रों में वर्गीकृत किया जा सकता है और सूची चलती रहती है। इसलिए यदि आप एक भौतिकी सिमुलेशन विशेषज्ञ हैं, तो आपको भौतिकी से संबंधित चीजों को जानना चाहिए।
यदि आप सुरक्षा में हैं, तो आपको नंबर थ्योरी विशेषज्ञ होना चाहिए।
सामान्य तौर पर, आप इनमें से एक संयोजन पर जा सकते हैं, और जो कभी आपकी रुचि है। सीखना कभी दुख नहीं देता।


2

सबूत के तरीके

सबसे विशेष रूप से, जिन्हें मैंने सापेक्ष आवृत्ति के साथ उपयोग किया है:

अधिक हैं, और मैंने उनमें से कई का उपयोग एक बिंदु या किसी अन्य पर किया है, लेकिन ये 3 हैं जिन्हें मैं एक नज़र में उपयोग किए जाने को याद कर सकता हूं। यदि आप इकाई या एकीकरण परीक्षण लिखते समय उनकी मंशा को ध्यान में रख सकते हैं तो वे भी असीम रूप से सहायक हैं ।


2

T (n) = aT (n / b) + f (n), a> = 1, b> 1

मास्टर प्रमेय प्रोग्रामिंग के लिए जानना अच्छा है। यह आपको पुनरावृत्ति संबंधों को हल करने देता है जो आपको पुनरावर्ती एल्गोरिदम की जटिलता को खोजने में मदद कर सकता है। यह विशेष रूप से महत्वपूर्ण है जब "डिवाइड-एंड-कॉनकेयर" स्टाइल एल्गोरिदम लिखा जाता है। मोटे तौर पर, आप मास्टर प्रमेय का उपयोग जटिलता पाने के लिए कर सकते हैं यदि आप प्रत्येक "चरण" की जटिलता और शाखीय कारक को जानते हैं।


1
प्रोग्रामिंग के लिए जानना अच्छा क्यों है?
मैट एलेन

@MattEllen: यह आपको पुनरावृत्ति संबंधों को हल करने देता है जो आपको पुनरावर्ती एल्गोरिदम की जटिलता का पता लगाने में मदद कर सकता है। यह विशेष रूप से महत्वपूर्ण है जब "डिवाइड-एंड-कॉनकेयर" स्टाइल एल्गोरिदम लिखा जाता है। मोटे तौर पर, आप मास्टर प्रमेय का उपयोग जटिलता पाने के लिए कर सकते हैं यदि आप प्रत्येक "चरण" की जटिलता और शाखीय कारक को जानते हैं।
तिखन जेल्विस

1
  • बीजगणित
  • त्रिकोणमिति
  • वेक्टर (मैट्रिक्स ऑपरेशन)
  • गणना
  • [विभिन्न प्रक्षेप और उनके व्युत्पन्न]
  • [सतहों, NURBS]

(ब्रैकर्स में लोग "लागू" प्रकार के अधिक हैं)

सामान्य दिशाएं देना मुश्किल है, क्योंकि यह दृढ़ता से उस क्षेत्र पर निर्भर करता है जिसमें आप शामिल हैं। लेकिन उपरोक्त इंजीनियरिंग की डिग्री के मूल आधारों को शामिल करता है। ध्यान रखें, ये श्रेणियां अक्सर ओवरलैप होती हैं (त्रिकोणमिति + मैट्रिक्स ऑप्स।, कैलकुलस + मैट्रिक्स ऑप्स। और इसी तरह।)

मेरे पास हमेशा एक गणितीय पुस्तिका होती है। एक अक्सर किसी चीज के बारे में अनिश्चित होता है, और यह उसे संगठित तरीके से प्रस्तुत करने में मदद करता है।


1

बूलियन बीजगणित जानने से बहुत मदद मिलती है। यह आपको कोड लिखने से बचाता है

if (x < 10)
    return true;
else
    return false;

मुझे यकीन नहीं है कि मैं समझता हूँ कि बूलियन बीजगणित एक उपयोगकर्ता को लिखने से रोकने में कैसे मदद करता है? क्या आप प्रस्ताव कर सकते हैं कि उपयोगकर्ता को वहां क्या लिखना चाहिए? (मैं मान लूंगा x <10; लेकिन गलती हो सकती है।)
क्रिस

1
आप सही हैं - यह रिटर्न x <10 होना चाहिए। इस पर इस तरीके से विचार करें। मूल्यांकन (x <10) एक बूलियन परिणाम लौटाएगा। यदि कथन तब टूटता है [यदि x वास्तव में 10 से कम है] यदि (सत्य) सही लौटाता है; या [यदि x x से अधिक या बराबर 10 है] यदि (असत्य) ... अन्यथा असत्य वापस करें;
एरिक ओल्सन

2
(X <10) दो व्यावसायिक मामलों को अलग कर सकता है। वर्बोज़ फॉर्म के साथ, आप केवल

1

अनुकूलन समस्याओं के लिए, लॉग-लाइबिलिटी को समझना अच्छा है। उदाहरण के लिए, यदि आप वर्गों का योग कम करने की कोशिश कर रहे हैं, तो यह संभावना की लॉग को अधिकतम करने के समान है, क्योंकि (मोटे तौर पर बोल)

log( Product( exp( -(x[i]-mean)^2 )) )
  =
  - Sum( (x[i]-mean)^2 )

प्रदर्शन ट्यूनिंग के दायरे में अन्य पसंदीदा द्विपद और बीटा वितरण हैं। वे गणना करने के लिए बहुत सरल हैं।

यदि आप किसी प्रोग्राम की स्थिति के 10 यादृच्छिक-समय के नमूने लेते हैं, और यह F = 40% समय के लिए एक निश्चित स्थिति में है, तो यह एक अनुचित सिक्के के साथ सिक्का-टॉस प्रयोग की तरह है। जितनी बार आप इसे देखेंगे उस स्थिति में इसका मतलब 10 * 0.4 = 4, और sqrt का मानक विचलन (10 * 0.4 * 0.6) = sqrt (2.4) = 1.55 के साथ एक द्विपद वितरण है।

दूसरी ओर यदि आप 10 नमूने लेते हैं और 4 नमूनों पर उस स्थिति में देखते हैं, तो यह क्या बताता है कि एफ कितना बड़ा है? संभावित परिणाम 0, 1, 2, 3, 4, ..., 9, 10. 11 संभावनाएं हैं, और आपने जो संभावना देखी है (4) वह 5 वीं है। तो, 11 वर्दी (0,1) यादृच्छिक संख्याएँ लें, और उन्हें क्रमबद्ध करें। 5 वें एक का वितरण एफ का वितरण, एक बीटा वितरण है। इसका मोड 4/10 है। इसका माध्य 5/11 है। इसका विचरण 5 * 6 / (11 ^ 2 * 12) = 0.021, और मानक विचलन = 0.144 है।

बहुत से लोग सोचते हैं कि सॉफ़्टवेयर प्रदर्शन समस्याओं का पता लगाने और झूठे लोगों को खोजने से बचने के लिए बड़ी संख्या में नमूनों की आवश्यकता होती है। इन वितरणों से पता चलता है कि नमूनों की एक छोटी संख्या उनकी लागत के बारे में बहुत कुछ बता सकती है।


0

यह थोड़ा सरल हो सकता है, लेकिन G=(V,E)ध्यान में रखना अच्छा है। दूसरे शब्दों में, एक रेखांकन और किनारों का एक समूह है। रेखांकन बहुत सारी चीजों का प्रतिनिधित्व करने के लिए बस इतना उपयोगी है।

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