ম্যাট্রিক্স ত্রিকোণমিতি


13

ভূমিকা

সবচেয়ে সাধারণ দুটি ত্রিকোণমিতিক ফাংশন, sineএবং cosine(অথবা sinএবং cosসংক্ষেপে), ম্যাট্রিক্স-মূল্যবান ফাংশন হতে বাড়ানো যেতে পারে। ম্যাট্রিক্স-মূল্যবান অ্যানালগগুলি গণনা করার একটি উপায় নিম্নরূপ:

এই দুটি গুরুত্বপূর্ণ ত্রিকোণমিতিক পরিচয় বিবেচনা করুন:

ট্রিগ পরিচয়

এই পরিচয়গুলি ব্যবহার করে, আমরা নিম্নলিখিত সমীকরণগুলি এর জন্য sinএবং পেতে পারি cos:

ট্রিগার ফাংশন

ম্যাট্রিক্স সূচকীয় সমস্ত চৌকো ম্যাট্রিক্স জন্য বিদ্যমান এবং দেওয়া হয়:

ম্যাট্রিক্স সূচকীয়

যেখানে একজন 0 পরিচয় ম্যাট্রিক্স হয় আমি একই আয়তনের সঙ্গে একটি । ম্যাট্রিক্স এক্সফোনেনসিয়াল ব্যবহার করে এই দুটি ত্রিকোণমিতিক ফাংশন (এবং এইভাবে সমস্ত অন্যান্য ত্রিকোণমিতিক ফাংশন) ম্যাট্রিক্সের ফাংশন হিসাবে মূল্যায়ন করা যায়।

চ্যালেঞ্জ

একটি বর্গাকার ম্যাট্রিক্সের দেওয়া একটি , আউটপুট মান sin(A)এবং cos(A)

বিধি

  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক, যুক্তিসঙ্গত বিন্যাসে হতে পারে (2 ডি অ্যারে, আপনার ভাষার ম্যাট্রিক্স ফর্ম্যাট ইত্যাদি)।
  • আপনি একটি একক প্রোগ্রাম, দুটি স্বতন্ত্র প্রোগ্রাম, একটি একক ফাংশন, বা দুটি ফাংশন লিখতে পারেন। আপনি যদি দুটি ফাংশন লিখতে চান, তাদের মধ্যে কোড ভাগ করা যেতে পারে (যেমন আমদানি এবং সহায়ক ফাংশন)।
  • ইনপুট ম্যাট্রিক্সের মানগুলি সর্বদা পূর্ণসংখ্যার হবে।
  • আপনার সমাধানটিতে ভাসমান-পয়েন্ট অসম্পূর্ণতার ফলাফল হিসাবে নির্ভুলতার সমস্যা থাকতে পারে। যদি আপনার ভাষার যাদুকরী অসীম-নির্ভুল মান থাকে তবে আপনার সমাধানটি পুরোপুরি কাজ করা উচিত (এ জন্য অসীম সময় এবং / বা স্মৃতি প্রয়োজন হবে এ উপেক্ষা করে)। যাইহোক, যেহেতু এই magন্দ্রজালিক অসীম-নির্ভুল মানগুলির অস্তিত্ব নেই, তাই সীমাবদ্ধ নির্ভুলতার কারণে ঘটে যাওয়া ভুলত্রুটি গ্রহণযোগ্য। আউটপুটটিতে নির্দিষ্ট পরিমাণের নির্ভুলতার প্রয়োজনের ফলে জটিলতাগুলি এড়াতে এই নিয়মটি কার্যকর।
  • যে বিল্টিনগুলি ম্যাট্রিক্স আর্গুমেন্ট (হাইপারবোলিক ট্রিগ ফাংশন সহ) জন্য গণনা ত্রিকোণমিত্রিক ফাংশনগুলি অনুমোদিত নয়। অন্যান্য ম্যাট্রিক্স বিল্টিনগুলি (যেমন গুণ, ক্ষয়, তির্যককরণ, ক্ষয় এবং ম্যাট্রিক্স সূচক) অনুমোদিত।

পরীক্ষার কেস

বিন্যাস: 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]]

আরও পড়া

ম্যাথ.এসই-তে এই দুর্দান্ত প্রশ্নটির মধ্যে মেট্রিক্স-মূল্যবান অ্যানালগগুলি ত্রিকোণমিত্রিক ক্রিয়াকলাপগুলির কিছু বিকল্প ডেরাইভেশন অন্তর্ভুক্ত রয়েছে।


আমি sin([[1, 0, 1], [0, 0, 0], [0, 1, 0]]) = {{0.841, -0.158, 0.841}, {0, 0, 0}, {0, 1, 0}}ম্যাথেমেটিকার সাথে পেয়েছি , আপনি কি পরীক্ষা করতে পারবেন?
কেনেটিমে

1
@ একনিটম পরীক্ষার কেসটি এটি দেখায়।
মেগো 5'16

1
@ মেগো দৃশ্যত বিদ্যমান সমস্ত উত্তরই মুছে ফেলা উচিত।
ফেয়ারসাম

3
@ মেগো এই ভেবে সম্পূর্ণ অবাস্তব নয় যে ভাসমান-পয়েন্ট ভিত্তিক বিল্টইনগুলির মধ্যে একটিই সঠিক অ্যালগরিদম ব্যবহার করে (বা ভাসমান-পয়েন্ট অপারেশনগুলি "রিয়েল সংখ্যা" অপারেশনের সাথে প্রতিস্থাপন করা হলে সঠিক হবে)।
feersum

1
@ ফেয়ারসাম আমি আমার সর্বশেষ সম্পাদনায় এটিকে সম্বোধন করেছি:(ignoring the fact that it would require infinite time and/or memory)
মেগো

উত্তর:


6

জুলিয়া, 33 19 বাইট

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

এটি এমন একটি ফাংশন যা ভাসমানগুলির একটি 2-মাত্রিক অ্যারে গ্রহণ করে এবং যথাক্রমে কোসাইন এবং সাইনকে এই জাতীয় অ্যারেগুলির একটি দ্বিগুণ প্রদান করে। নোট করুন যে এটি পরীক্ষার ক্ষেত্রে প্রদত্ত ক্রমের বিপরীত, যেখানে সাইন প্রথমে তালিকাবদ্ধ রয়েছে।

একটি বাস্তব-মূল্যবান ম্যাট্রিক্স এ জন্য , আমাদের আছে

জ্যা

এবং

কোসাইন্

অর্থাৎ সাইন এবং কোসাইন একটি ম্যাট্রিক্স সূচকীয় এর কাল্পনিক এবং বাস্তব অংশের মিলা IA । দেখুন ম্যাট্রিক্সের কার্যাবলী (Higham, 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);}

ইনপুট এমন সংখ্যার একটি তালিকা যা স্টিডিনে একটি নিখুঁত বর্গ square স্ট্যান্ডআউটে আউটপুট একটি দুর্দান্ত মুদ্রিত 2 ডি অ্যারে


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

ওহ, আপনি ঠিক বলেছেন, ধন্যবাদ!
flawr

2
কেন ব্যবহার expmকরবেন না ?
লুইস মেন্ডো

2
পরিচয় অনুসারে: আমার আশা করা উচিত যে তারা সেই পরিচয়টি সন্তুষ্ট করবে, বিবেচনা করে যে স্কেলার ফর্মটি ম্যাট্রিকগুলিতে ফাংশন প্রসারিত করতে ব্যবহৃত হয়েছিল!
মেগো 5'16

1
আচ্ছা তবে পুরো বিষয়টি প্রায় তুচ্ছ হয়ে যায়।
flawr



0

সেজ, 44 বাইট

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

এটি অনলাইনে চেষ্টা করুন

এই বেনামে ফাংশন যথাক্রমে 2 টি ম্যাট্রিকের তালিকা প্রদান করে sin(A)এবং cos(A)যথাক্রমে। ( কাল্পনিক ইউনিট দ্বারা গুণিত সমস্ত উপাদান সহ) exp(I*A)জন্য ম্যাট্রিক্স সূচককে গণনা করে এবং একটি ম্যাট্রিক্স প্রদান করে যেখানে এর সমস্ত উপাদানগুলিতে প্রয়োগ করা হয়েছে। ম্যাট্রিকগুলিতে প্রয়োগ এবং (একটি মাপের মানসিকতার কল্পিত এবং আসল অংশগুলি পাওয়ার জন্য ফাংশনগুলি) মাধ্যমে আমরা ইউলারের বিখ্যাত পরিচয়ের (চ্যালেঞ্জের পাঠ্যসূচীতে উল্লেখ করা) ধন্যবাদ এবং মান পাই ।I*AAmatrix.apply_map(f)fimagrealsin(A)cos(A)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.