मैट्रिक्स त्रिकोणमिति


13

परिचय

दो सबसे आम त्रिकोणमितीय कार्यों, sineऔर cosine(या sinऔर cosछोटे के लिए), मैट्रिक्स-मान कार्यों होने के लिए बढ़ाया जा सकता है। मैट्रिक्स-वैल्यूड एनालॉग्स की गणना करने का एक तरीका इस प्रकार है:

इन दो महत्वपूर्ण त्रिकोणमितीय पहचानों पर विचार करें:

पहचानों को ट्रिगर

इन पहचानों का उपयोग करके, हम प्राप्त कर सकते हैं के लिए निम्नलिखित समीकरणों sinऔर cos:

ट्रिगर कार्य

मैट्रिक्स घातीय सभी वर्ग मैट्रिक्स के लिए मौजूद है और द्वारा दिया जाता है:

मैट्रिक्स घातीय

जहां 0 पहचान मैट्रिक्स I है, के समान आयामों के साथ । मैट्रिक्स घातांक का उपयोग करके, इन दो त्रिकोणमितीय कार्यों (और इस प्रकार अन्य सभी त्रिकोणमितीय कार्यों) का मूल्यांकन मेट्रिसेस के कार्यों के रूप में किया जा सकता है।

चुनौती

एक वर्ग मैट्रिक्स को देखते हुए , के मूल्यों का उत्पादन sin(A)और cos(A)

नियम

  • इनपुट और आउटपुट किसी भी सुविधाजनक, उचित प्रारूप (2D सरणी, आपकी भाषा के मैट्रिक्स प्रारूप, आदि) में हो सकते हैं।
  • आप एक एकल कार्यक्रम, दो स्वतंत्र कार्यक्रम, एक एकल कार्य या दो कार्य लिख सकते हैं। यदि आप दो फ़ंक्शन लिखना चाहते हैं, तो कोड उनके बीच साझा किया जा सकता है (जैसे आयात और सहायक कार्य)।
  • इनपुट मैट्रिक्स के मान हमेशा पूर्णांक होंगे।
  • आपके समाधान में फ़्लोटिंग-पॉइंट इंप्रेशन के परिणामस्वरूप सटीकता के मुद्दे हो सकते हैं। यदि आपकी भाषा में जादुई अनंत-सटीक मूल्य थे, तो आपके समाधान को पूरी तरह से काम करना चाहिए (इस तथ्य की अनदेखी करते हुए कि इसे अनंत समय और / या स्मृति की आवश्यकता होगी)। हालाँकि, उन जादुई अनंत-सटीक मूल्यों का अस्तित्व नहीं है, सीमित सटीकता के कारण होने वाली अशुद्धि स्वीकार्य हैं। आउटपुट में सटीक मात्रा में सटीकता की आवश्यकता के परिणामस्वरूप जटिलताओं से बचने के लिए यह नियम है।
  • मैट्रिक्स तर्कों (हाइपरबोलिक ट्रिगर कार्यों सहित) के लिए त्रिकोणमितीय कार्यों की गणना करने वाले बिल्ड की अनुमति नहीं है। अन्य मैट्रिक्स बिल्डिंस (जैसे गुणा, घातांक, विकर्ण, अपघटन और मैट्रिक्स घातीय) की अनुमति है।

परीक्षण के मामलों

प्रारूप: A -> sin(A), cos(A)

[[0]] -> [[0]], [[1]]
[[0, 2], [3, 5]] -> [[-0.761177343863758, 0.160587281888277], [0.240880922832416, -0.359709139143065]], [[0.600283445979886, 0.119962280223493], [0.179943420335240, 0.900189146538619]]
[[1, 0, 1], [0, 0, 0], [0, 1, 0]] -> [[0.841470984807897, -0.158529015192103, 0.841470984807897], [0, 0, 0], [0, 1, 0]], [[0.540302305868140, -0.459697694131860, -0.459697694131860], [0, 1, 0], [0, 0, 1]]
[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]] -> [[0.841470984807897, 0, 0, 0, 0], [0, 0.841470984807897, 0, 0, 0], [0, 0, 0.841470984807897, 0, 0], [0, 0, 0, 0.841470984807897, 0], [0, 0, 0, 0, 0.841470984807897]], [[0.540302305868140, 0, 0, 0, 0], [0, 0.540302305868140, 0, 0, 0], [0, 0, 0.540302305868140, 0, 0], [0, 0, 0, 0.540302305868140, 0], [0, 0, 0, 0, 0.540302305868140]]
[[-3, 2, -6], [3, 0, 4], [4, -2, 7]] -> [[-0.374786510963954, 0.135652884035570, -1.35191037980742], [1.14843105375406, 0.773644542790111, 1.21625749577185], [1.21625749577185, -0.135652884035570, 2.19338136461532]], [[4.13614256031450, -1.91289828483056, 5.50873853927692], [-2.63939111203107, 1.49675144828342, -3.59584025444636], [-3.59584025444636, 1.91289828483056, -4.96843623340878]]

आगे की पढाई

Math.SE पर इस उत्कृष्ट प्रश्न में त्रिकोणमितीय कार्यों के मैट्रिक्स-मूल्यवान एनालॉग्स के कुछ वैकल्पिक व्युत्पन्न शामिल हैं।


मैं sin([[1, 0, 1], [0, 0, 0], [0, 1, 0]]) = {{0.841, -0.158, 0.841}, {0, 0, 0}, {0, 1, 0}}गणितज्ञ के साथ मिला , क्या आप जांच कर सकते हैं?
kennytm

1
@kennytm परीक्षण मामले को दर्शाता है।
मेगो

1
@Mego जाहिरा तौर पर मौजूदा जवाबों के सभी को हटा दिया जाना चाहिए।
19

3
@Mego यह सोचना पूरी तरह से अनुचित है कि फ़्लोटिंग-पॉइंट आधारित सभी बिल्डरों में एक सटीक एल्गोरिथ्म का उपयोग किया जाता है (या एक ऐसा होगा जो फ़्लोटिंग-पॉइंट ऑपरेशन्स को "वास्तविक संख्या" ऑपरेशनों से बदल दिया जाता है)।
feersum

1
@ Faersum मैंने अपने नवीनतम संपादन में संबोधित किया है:(ignoring the fact that it would require infinite time and/or memory)
Mego

जवाबों:


6

जूलिया, 33 19 बाइट्स

A->reim(expm(A*im))

यह एक ऐसा फंक्शन है, जो 2-आयामी फ़्लोट्स को स्वीकार करता है और इस तरह के सरणियों का एक हिस्सा क्रमशः कोसाइन और साइन को देता है। ध्यान दें कि यह परीक्षण मामलों में दिए गए आदेश का उल्टा है, जिसमें साइन को पहले सूचीबद्ध किया गया है।

एक वास्तविक मूल्यवान मैट्रिक्स ए के लिए , हमारे पास है

ज्या

तथा

कोज्या

यही है, मैट्रिक्स एक्सपोनेंशियल आईए के काल्पनिक और वास्तविक भागों के लिए और साइन के कॉइनमैट्रिसेस के कार्य देखें (हिघम, 2008)।

इसे ऑनलाइन आज़माएं! (सभी परीक्षण मामले शामिल हैं)

डेनिस के लिए धन्यवाद 14 बाइट्स बचाता है!


6

गणितज्ञ, 27 बाइट्स

{Im@#,Re@#}&@MatrixExp[I#]&

@ रेनर पी के समाधान पर आधारित है ।

Aएक तर्क के रूप में वर्ग मैट्रिक्स लेता है और एक सूची युक्त आउटपुट देता है {sin(A), cos(A)}

इनपुट को Nलंबे सटीक सूत्र के बजाय संख्यात्मक मान प्राप्त Columnकरने sin(A)और cos(A)नेस्टेड सूची के बजाय अलग-अलग मैट्रिसेस के परिणामों को प्रदर्शित करने के लिए स्वरूपित किया जाता है ।

उदाहरण

मूल्यों की अलग से गणना करने के लिए 38 बाइट्स की आवश्यकता होती है

{(#2-#)I,+##}/2&@@MatrixExp/@{I#,-I#}&

6

जेली , 23 22 बाइट्स

³æ*÷!
®Ḥ‘©r0Ç€s2_@/µÐL

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

पृष्ठभूमि

यह दृष्टिकोण सीधे साइन और कोसाइन के लिए टेलर श्रृंखला की गणना करता है , अर्थात

सूत्र

यह दोनों श्रृंखलाओं की प्रारंभिक शर्तों की संख्या बढ़ाता है जब तक कि परिणाम में परिवर्तन नहीं होता है, इसलिए इसकी सटीकता केवल फ्लोटिंग पॉइंट प्रकार की शुद्धता द्वारा सीमित है।

यह काम किस प्रकार करता है

®Ḥ‘©r0Ç€s2_@/µÐL  Main link, Argument: A (matrix)

             µÐL  Loop; apply the chain until the results are no longer unique.
                  Return the last unique result.
®                   Yield the value of the register (initially zero).
 Ḥ                  Unhalve/double it.
  ‘©                Increment and copy the result (n) to the register.
    r0              Range; yield [n, ..., 0].
      ǀ            Apply the helper link to each k in the range.
        s2          Split the results into chunks of length 2. Since n is always
                    odd, this yields [[Ç(n), Ç(n-1)], ..., [Ç(1), Ç(0)]].
          _@/       Reduce the columns of the result by swapped subtraction,
                    yielding [Ç(1) - Ç(3) + ... Ç(n), Ç(0) - Ç(2) + ... Ç(n - 1)].


³æ*÷!             Helper link. Argument: k (integer)

³                 Yield the first command-line argument (A).
 æ*               Elevate A to the k-th power.
    !             Yield the factorial of k.
   ÷              Divide the left result by the right one.

3

सी ++, 305 बाइट्स

#include<cmath>
#include<iostream>
#include<vector>
int x,i=0, j;void p(std::vector<double> v){int x=sqrt(v.size());for(i=0;i<x;i++){for(j=0;j<x;j++) std::cout << v[x] << " ";std::cout << "\n";}}int main(){std::vector<double> s, c;while(std::cin >> x){s.push_back(sin(x));c.push_back(cos(x));}p(s);p(c);}

इनपुट उन संख्याओं की एक सूची है जो स्टडिन पर एक पूर्ण वर्ग हैं। आउटपुट स्टडआउट पर एक सुंदर मुद्रित 2d सरणी है


2

मतलाब, 138 121 52 50 बाइट्स

चूंकि मैट्रिक्स घातांक की अनुमति है, (मैंने पहले क्या नोटिस किया था, डीओएच) मुझे अब अपने सहायक कवक को परिभाषित करने की आवश्यकता नहीं है, और पूरी तरह से हल किया जा सकता है:

A=input('')*i;a=expm(A);b=expm(-A);[(b-a)*i,a+b]/2

इनपुट में एक मैट्रिक्स होना चाहिए जैसे [1,2;4,5]या वैकल्पिक रूप से[[1,2];[3,4]]

एक अप्रत्याशित चीज (इतने लंबे समय तक अप्रत्याशित नहीं है) कि कोसाइन और साइन मैट्रिक्स अभी भी संतुष्ट हैं

I = sin(A)^2+cos(A)^2

के A^0रूप में ही नहीं है eye(size(A))?
FryAmTheEggman

ओह, तुम सही हो, शुक्रिया!
'17:

2
उपयोग क्यों नहीं expm?
लुइस मेंडू

2
पहचान के अनुसार: मुझे आशा है कि वे उस पहचान को संतुष्ट करेंगे, यह देखते हुए कि स्केलर फॉर्म का उपयोग मैट्रिस के कार्यों को बढ़ाने के लिए किया गया था!
मेगो

1
खैर तब पूरी बात लगभग तुच्छ हो जाती है।
'18:



0

ऋषि, 44 बाइट्स

lambda A:map(exp(I*A).apply_map,(imag,real))

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

यह अनाम फ़ंक्शन क्रमशः sin(A)और cos(A), के अनुरूप 2 मैट्रिक्स की सूची देता है । exp(I*A)के लिए मैट्रिक्स घातीय की गणना करता है I*A( Aकाल्पनिक इकाई द्वारा गुणा किए गए सभी तत्वों के साथ), और matrix.apply_map(f)एक मैट्रिक्स देता है जहां fइसके सभी तत्वों पर लागू किया गया है। लागू करके imagऔर realमैट्रिक्स के लिए (एक अदिश मूल्य के काल्पनिक और वास्तविक भागों प्राप्त करने के लिए काम करता है), हम के मूल्यों को प्राप्त sin(A)और cos(A)यूलर प्रसिद्ध पहचान (चुनौती पाठ में संदर्भित) के लिए धन्यवाद,।

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