वैज्ञानिक प्रोग्रामिंग भाषा: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 16: Line 16:
A = rand(20, 20)  # A is a 20x20 matrix
A = rand(20, 20)  # A is a 20x20 matrix
b = rand(20)      # b is a 20-element vector
b = rand(20)      # b is a 20-element vector
x = A\b          # x is the solution to A*x = b
x = A\b          # x is the solution to A*x = b                                              
                                                                                                                                             
                                                                                                                           
                                                                           
</syntaxhighlight>
</syntaxhighlight>
बड़े सदिश और आव्यूह  के साथ काम करना इन लैंग्वेज की एक प्रमुख विशेषता है, क्योंकि रैखिक बीजगणित [[गणितीय अनुकूलन]] की नींव रखता है, जो बदले में गहन शिक्षण जैसे प्रमुख अनुप्रयोगों को सक्षम बनाता है।
बड़े सदिश और आव्यूह  के साथ काम करना इन लैंग्वेज की एक प्रमुख विशेषता है, क्योंकि रैखिक बीजगणित [[गणितीय अनुकूलन]] की नींव रखता है, जो बदले में गहन शिक्षण जैसे प्रमुख अनुप्रयोगों को सक्षम बनाता है।
Line 22: Line 25:
===गणितीय अनुकूलन===
===गणितीय अनुकूलन===


एक वैज्ञानिक प्रोग्रामिंग लैंग्वेज में, हम गणितीय लैंग्वेज के करीब एक वाक्यविन्यास के साथ फ़ंक्शन ऑप्टिमा की गणना कर सकते हैं। उदाहरण के लिए, निम्नलिखित जूलिया कोड [[बहुपद]] का <math>P(x, y) = x^2 - 3 x y + 5 y^2 - 7 y + 3</math> न्यूनतम पता लगाता है .
एक वैज्ञानिक प्रोग्रामिंग लैंग्वेज में, हम गणितीय लैंग्वेज के करीब एक वाक्यविन्यास के साथ फ़ंक्शन ऑप्टिमा की गणना कर सकते हैं। उदाहरण के लिए, निम्नलिखित जूलिया कोड [[बहुपद]] का <math>P(x, y) = x^2 - 3 x y + 5 y^2 - 7 y + 3                                                                                                                                                                                                                        
                                                                                          </math> न्यूनतम पता लगाता है .


<syntaxhighlight lang="julia">
<syntaxhighlight lang="julia">
Line 35: Line 39:
         autodiff = :forward)
         autodiff = :forward)
</syntaxhighlight>
</syntaxhighlight>
इस उदाहरण में, अनुकूलन में न्यूटन की विधि|न्यूनतमीकरण के लिए न्यूटन की विधि का उपयोग किया जाता है। आधुनिक वैज्ञानिक प्रोग्रामिंग लैंग्वेज इनपुट के रूप में दिए गए फ़ंक्शन के ग्रेडिएंट और हेसियन की गणना करने के लिए [[स्वचालित भेदभाव]] का उपयोग करेंगी; सी एफ [[भिन्नात्मक प्रोग्रामिंग|डिफरेंसिअबल  प्रोग्रामिंग]]। यहां, उस कार्य के लिए स्वचालित फ़ॉरवर्ड विभेदन को चुना गया है।
इस उदाहरण में, अनुकूलन में न्यूटन की विधि|न्यूनतमीकरण के लिए न्यूटन की विधि का उपयोग किया जाता है। आधुनिक वैज्ञानिक प्रोग्रामिंग लैंग्वेज इनपुट के रूप में दिए गए फ़ंक्शन के ग्रेडिएंट और हेसियन की गणना करने के लिए [[स्वचालित भेदभाव|आटोमेटिक]]  [[भिन्नात्मक प्रोग्रामिंग|डिफरेंसिअबल  ]] का उपयोग करेंगी; सी एफ [[भिन्नात्मक प्रोग्रामिंग|डिफरेंसिअबल  प्रोग्रामिंग]]। यहां, उस कार्य के लिए स्वचालित फ़ॉरवर्ड विभेदन को चुना गया है।
पुरानी वैज्ञानिक प्रोग्रामिंग लैंग्वेज जैसे कि आदरणीय फोरट्रान को प्रोग्रामर को अनुकूलित किए जाने वाले फ़ंक्शन के बगल में, एक फ़ंक्शन जो ग्रेडिएंट की गणना करता है, और एक फ़ंक्शन जो हेसियन की गणना करता है, को पास करने की आवश्यकता होगी।
पुरानी वैज्ञानिक प्रोग्रामिंग लैंग्वेज जैसे कि आदरणीय फोरट्रान को प्रोग्रामर को अनुकूलित किए जाने वाले फ़ंक्शन के बगल में, एक फ़ंक्शन जो ग्रेडिएंट की गणना करता है, और एक फ़ंक्शन जो हेसियन की गणना करता है, को पास करने की आवश्यकता होगी।



Revision as of 09:36, 3 August 2023

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

व्यापक अर्थ में, एक वैज्ञानिक प्रोग्रामिंग लैंग्वेज एक प्रोग्रामिंग लैंग्वेज है जिसका उपयोग कम्प्यूटेशनल विज्ञान और कम्प्यूटेशनल गणित के लिए व्यापक रूप से किया जाता है। इस अर्थ में, C/C++ और पाइथन [1] को वैज्ञानिक प्रोग्रामिंग लैंग्वेज माना जा सकता है।

एक शसक्त अर्थ में, एक वैज्ञानिक प्रोग्रामिंग लैंग्वेज वह है जिसे गणितीय सूत्र और आव्यूह के उपयोग के लिए डिज़ाइन और अनुकूलित किया गया है।[2] ऐसी लैंग्वेज की पहचान न केवल गणितीय या वैज्ञानिक कार्य करने वाले पुस्तकालयों की उपलब्धता से होती है, किंतु लैंग्वेज के वाक्य-विन्यास से भी होती है। उदाहरण के लिए, न तो C++ और न ही पाइथन में आव्यूह अंकगणित (जोड़, गुणा आदि) के लिए अंतर्निहित आव्यूह प्रकार या फ़ंक्शन हैं; इसके अतिरिक्त, यह कार्यक्षमता मानक पुस्तकालयों के माध्यम से उपलब्ध कराई गई है। शसक्त अर्थों में वैज्ञानिक प्रोग्रामिंग लैंग्वेज में ALGOL, APL, फोरट्रान, J, जूलिया, मेपल, MATLAB और R सम्मिलित हैं।

वैज्ञानिक प्रोग्रामिंग लैंग्वेज को सामान्य रूप से वैज्ञानिक लैंग्वेज के साथ भ्रमित नहीं किया जाना चाहिए, जो वैज्ञानिक पद्धति के अभ्यासकर्ताओं से अपेक्षित स्पष्टता , शुद्धता और संक्षिप्तता में उच्च मानकों को संदर्भित करती है।

उदाहरण

रैखिक बीजगणित

वैज्ञानिक प्रोग्रामिंग लैंग्वेज रैखिक बीजगणित के साथ काम करने की सुविधा प्रदान करती हैं। उदाहरण के लिए, निम्नलिखित जूलिया प्रोग्राम रैखिक समीकरणों की एक प्रणाली को हल करता है:

A = rand(20, 20)  # A is a 20x20 matrix
b = rand(20)      # b is a 20-element vector
x = A\b           # x is the solution to A*x = b

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

गणितीय अनुकूलन

एक वैज्ञानिक प्रोग्रामिंग लैंग्वेज में, हम गणितीय लैंग्वेज के करीब एक वाक्यविन्यास के साथ फ़ंक्शन ऑप्टिमा की गणना कर सकते हैं। उदाहरण के लिए, निम्नलिखित जूलिया कोड बहुपद का न्यूनतम पता लगाता है .

using Optim

P(x,y) = x^2 - 3x*y + 5y^2 - 7y + 3

z₀ = [ 0.0
       0.0 ]     # starting point for optimization algorithm

optimize(z -> P(z...), z₀, Newton();
         autodiff = :forward)

इस उदाहरण में, अनुकूलन में न्यूटन की विधि|न्यूनतमीकरण के लिए न्यूटन की विधि का उपयोग किया जाता है। आधुनिक वैज्ञानिक प्रोग्रामिंग लैंग्वेज इनपुट के रूप में दिए गए फ़ंक्शन के ग्रेडिएंट और हेसियन की गणना करने के लिए आटोमेटिक डिफरेंसिअबल   का उपयोग करेंगी; सी एफ डिफरेंसिअबल  प्रोग्रामिंग। यहां, उस कार्य के लिए स्वचालित फ़ॉरवर्ड विभेदन को चुना गया है। पुरानी वैज्ञानिक प्रोग्रामिंग लैंग्वेज जैसे कि आदरणीय फोरट्रान को प्रोग्रामर को अनुकूलित किए जाने वाले फ़ंक्शन के बगल में, एक फ़ंक्शन जो ग्रेडिएंट की गणना करता है, और एक फ़ंक्शन जो हेसियन की गणना करता है, को पास करने की आवश्यकता होगी।

फ़ंक्शन के अधिक ज्ञान को कम करके, अधिक कुशल एल्गोरिदम का उपयोग किया जा सकता है। उदाहरण के लिए, कॉन्वेक्स ऑप्टिमाइजेशन तेजी से गणना प्रदान करता है जब फ़ंक्शन उत्तल होता है, द्विघात प्रोग्रामिंग तेजी से गणना प्रदान करता है जब फ़ंक्शन अपने चर में सबसे अधिक द्विघात पर होता है, और रैखिक प्रोग्रामिंग जब फ़ंक्शन सबसे अधिक रैखिक होता है।

यह भी देखें

संदर्भ

  1. Karakan, Burak (1 May 2020). "डेटा साइंस के लिए पायथन बनाम आर". Towards Data Science. Retrieved 13 May 2021.
  2. Zachary, Joseph. "Introduction to Scientific Programming: Computational Problem Solving Using Maple and C". Joseph L. Zachary. University of Utah. Retrieved 13 May 2021.