5

Andrews Curves

Unsolved
Linear Algebra

Difficulty: 5 | Problem written by mesakarghm
Problem reported in interviews at

Google

Andrews curves are a method for visualizing multidimensional data by mapping each observation onto a function. 

The function is defined as: 

\(f_x(\theta) = {x_1 \over \sqrt 2} + x_2 \sin(\theta) +x_3\cos(\theta) + x_4 \sin(2\theta) + ... \)

For a given data, calculate and return the values for fx. Here the inputs will be a matrix in 2 dimensions (M), and a range of values for theta (m). The function should output a list with length m, such that each list element represents the value of andrews function over the column of that index in input matrix (mat). 

Sample Input:
<class 'list'>
M: [[17 24 1 8 15] [23 5 7 14 16] [ 4 6 13 20 22] [10 12 19 21 3] [11 18 25 2 9]]
m: 3

Expected Output:
<class 'numpy.ndarray'>
[[26.02081528 28.02081528 26.02081528] [25.26345597 39.26345597 25.26345597] [11.82842712 37.82842712 11.82842712] [-8.92893219 29.07106781 -8.92893219] [-8.22182541 41.77817459 -8.22182541]]

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Asperiores minima aspernatur quo aliquam ex saepe impedit. Aliquid sed similique exercitationem consectetur corrupti dicta velit nesciunt magnam minus esse, hic beatae aliquid omnis culpa commodi quo, rerum rem earum amet asperiores, iste molestias harum nesciunt dicta hic placeat ullam voluptatibus vel ipsa quo. A asperiores suscipit laborum ducimus fugit ipsa quidem saepe facilis fuga, maiores nemo explicabo quis dolorum et necessitatibus minus sint numquam vitae hic, atque vero ad velit consectetur molestias alias quis nihil, quisquam aliquam debitis alias, temporibus minima asperiores nisi corrupti porro excepturi itaque quod officiis? Aut fugiat explicabo cumque suscipit maxime delectus rerum officiis aperiam a ea, impedit quo ipsa neque sit eos esse explicabo, atque aliquid illo officiis porro placeat, facilis animi aut doloremque, eius sint adipisci?

Repellat sed eaque eius odio aliquam modi quaerat esse saepe, veniam porro molestiae eveniet neque enim inventore, unde sint at eius cum laudantium aperiam nesciunt soluta. Minus nulla facere inventore, esse odit veniam animi facilis nostrum adipisci eligendi necessitatibus, ratione consequatur esse commodi, hic veritatis nulla tenetur earum esse molestiae? Optio quae quasi eum maiores quis vero impedit commodi illo unde, commodi nihil aliquid deleniti veritatis, alias omnis dignissimos aut dolores, architecto mollitia beatae unde ullam consectetur quos, nemo asperiores corrupti architecto dignissimos neque ratione ab recusandae? Atque dolorum id officiis assumenda harum.

Harum recusandae nobis adipisci voluptatem commodi odit necessitatibus? Laboriosam quibusdam illum, nihil doloremque inventore tempora iure ab, necessitatibus adipisci blanditiis omnis asperiores ipsum earum doloribus aspernatur, nisi eaque quam consequuntur, libero at et voluptate neque reprehenderit quos architecto officia. Tempora accusamus quaerat commodi consectetur perferendis iure voluptatem quisquam magni exercitationem, eius aliquid unde aspernatur obcaecati atque, officia odio accusamus reiciendis, quis ratione distinctio architecto voluptatem autem quae incidunt neque repellendus quo beatae, veritatis vel possimus in tenetur consectetur repellat iusto optio? Neque quis tempora nulla dolorum debitis sint asperiores quibusdam distinctio aliquam, voluptate blanditiis temporibus eum quo, optio ratione porro nesciunt deleniti repellendus cumque fuga ipsum?

This is a premium feature.
To access this and other such features, click on upgrade below.

Ready.

Input Test Case

Please enter only one test case at a time
numpy has been already imported as np (import numpy as np)