(python2.7.7)
元ネタ
問題:ベクトルのスカラ倍,ベクトル同士の乗算を行う関数を作りましょう。
(1)ベクトルをスカラ倍する関数を作りましょう。数値は整数,ベクトルには配列を用いて下さい。
def v_scalar_matrix(a_arr, scalar): return [a * scalar for a in a_arr] scalar = 5 a_arr = [1, 2, 3, 5, 8] b_arr = v_scalar_matrix(a_arr, scalar) for i in range(len(a_arr)): print "{scalar} * a[{i}] = b[{i}] => {scalar} * {a_i} = {b_i}".format(scalar=scalar, i=i, a_i=a_arr[i], b_i=b_arr[i])
結果
5 * a[0] = b[0] => 5 * 1 = 5 5 * a[1] = b[1] => 5 * 2 = 10 5 * a[2] = b[2] => 5 * 3 = 15 5 * a[3] = b[3] => 5 * 5 = 25 5 * a[4] = b[4] => 5 * 8 = 40
(2)ベクトル同士を乗算する関数を作りましょう。数値は整数,ベクトルにはArrayListを用いて下さい。
def a_multi_matrix(a_arr, b_arr): if not len(a_arr) == len(b_arr): raise return sum([a * b for a, b in zip(a_arr, b_arr)]) a_arr = [1, 2, 3, 5, 8] b_arr = [2, 4, 5, 7, 9] c = a_multi_matrix(a, b) test = 0 for i in range(len(a)): test += a[i] * b[i] print "a({i})* b({i}) = {a_i} * {b_i} : test = {test}".format(i=i, a_i=a_arr[i], b_i=b_arr[i], test=test) print "c = {c} : test = {test}".format(c=c, test=test)
結果
a(0)* b(0) = 1 * 2 : test = 2 a(1)* b(1) = 2 * 4 : test = 10 a(2)* b(2) = 3 * 5 : test = 25 a(3)* b(3) = 5 * 7 : test = 60 a(4)* b(4) = 8 * 9 : test = 132 c = 132 : test = 132