บทนำ
ฟังก์ชันตรีโกณมิติที่พบมากที่สุดสองแบบsine
และcosine
(หรือsin
และcos
สำหรับระยะสั้น) สามารถขยายเป็นฟังก์ชันที่มีค่าเมทริกซ์ได้ วิธีหนึ่งในการคำนวณ analogs ที่มีค่าเมทริกซ์มีดังนี้:
พิจารณาอัตลักษณ์ตรีโกณมิติที่สำคัญสองประการนี้:
การใช้ข้อมูลเฉพาะตัวเหล่านี้เราสามารถหาสมการต่อไปนี้sin
และcos
:
ชี้แจงเมทริกซ์ที่มีอยู่สำหรับตารางการฝึกอบรมทั้งหมดและจะได้รับโดย:
ที่0เป็นตัวตนของเมทริกซ์ฉันมีขนาดเดียวกับ โดยใช้เมทริกซ์เอ็กซ์โปเนนเชียลฟังก์ชันตรีโกณมิติทั้งสอง (และฟังก์ชันตรีโกณมิติอื่นทั้งหมด) สามารถประเมินเป็นฟังก์ชันของเมทริกซ์
ความท้าทาย
กำหนดตารางเมทริกซ์ออกค่าของและsin(A)
cos(A)
กฎระเบียบ
- อินพุตและเอาต์พุตอาจอยู่ในรูปแบบที่สะดวกและเหมาะสม (อาร์เรย์ 2 มิติรูปแบบเมทริกซ์ของภาษาของคุณ ฯลฯ )
- คุณสามารถเขียนโปรแกรมเดียวสองโปรแกรมอิสระฟังก์ชั่นเดียวหรือสองฟังก์ชั่น หากคุณเลือกที่จะเขียนสองฟังก์ชันรหัสอาจถูกใช้ร่วมกันระหว่างพวกเขา (เช่นการนำเข้าและฟังก์ชั่นผู้ช่วย)
- ค่าของเมทริกซ์อินพุตจะเป็นจำนวนเต็มเสมอ
- วิธีแก้ไขปัญหาของคุณอาจมีปัญหาความแม่นยำเนื่องจากการกำหนดจุดลอยตัว หากภาษาของคุณมีค่าความแม่นยำไร้ขีด จำกัด อย่างน่าอัศจรรย์โซลูชันของคุณควรทำงานได้อย่างสมบูรณ์แบบ (ไม่สนใจข้อเท็จจริงที่ว่าต้องใช้เวลาและ / หรือหน่วยความจำไม่ จำกัด ) อย่างไรก็ตามเนื่องจากค่าความแม่นยำไม่มีที่สิ้นสุดวิเศษเหล่านั้นไม่มีอยู่ความไม่ถูกต้องที่เกิดจากความแม่นยำที่ จำกัด จึงเป็นที่ยอมรับได้ กฎนี้มีไว้เพื่อหลีกเลี่ยงภาวะแทรกซ้อนที่เกิดจากการกำหนดจำนวนความแม่นยำเฉพาะในผลลัพธ์
- ไม่อนุญาตให้สร้างฟังก์ชันตรีโกณมิติตรีโกณมิติสำหรับเมทริกซ์อาร์กิวเมนต์ (รวมถึงฟังก์ชั่นไฮเปอร์โบลิกตรีโกณมิติ) เมทริกซ์บิวด์อินอื่น ๆ (เช่นการคูณการยกกำลังเส้นทแยงมุมการสลายตัวและเมทริกซ์เลขชี้กำลัง) ได้รับอนุญาต
กรณีทดสอบ
รูปแบบ: 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 รวมถึงการหาอนุพันธ์ทางเลือกของแอนะล็อกที่มีค่าเมทริกซ์ของฟังก์ชันตรีโกณมิติ
(ignoring the fact that it would require infinite time and/or memory)
sin([[1, 0, 1], [0, 0, 0], [0, 1, 0]]) = {{0.841, -0.158, 0.841}, {0, 0, 0}, {0, 1, 0}}
กับ Mathematica คุณช่วยตรวจสอบได้ไหม