算法练习(12):矩阵详解(1.1.33)

综合技术 2018-06-22

知识点

  • 绘点
  • 随机函数

1.1.33矩阵库。编写一个Matrix库并实现以下API

题目

题目

编写一个测试用例,从标准输入读取矩阵并测试所有方法

分析

书中第一次出现矩阵的例子是代码:

int N = a.length;
double[][] c = new double[N][N];
for (int i = 0; i < N; i++)
   for (int j = 0; j < N; j++)
   { // Compute dot product of row i and column j.
      for (int k = 0; k < N; k++)
         c[i][j] += a[i][k]*b[k][j];
}

这段代码的作用是计算矩阵的乘积。那么,什么是矩阵呢?这里我们从头来了解矩阵。先看一下这个人:

阿瑟·凱萊

这个人叫阿瑟·凱萊,又译为凯利,他是矩阵(Matrix)的创始人。

使用Java实现矩阵

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。

由本题中提供的表格来看要表示一个矩阵只需要一个二维数组即可。

向量(Vector)

本题中除了矩阵还提到了向量,那向量又是什么,跟矩阵有何区别与联系呢?

其实我们可以把向量当作一个点(a,b)。它与矩阵的区别是:

向量可以用矩阵表示,且有时特殊矩阵就是向量。 简言之就是矩阵包含向量。

点乘(dot)

在数学中,数量积(dot product; scalar product,也称为点积、点乘)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。

坐标表示:已知两个非零向量$a=(x_1,y_1),b=(x_2,y_2)$,则有$a·b=x_1x_2+y_1y_2$,即两个向量的数量积等于它们对应坐标的乘积的和。

矩阵的运算

乘积

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。乘积矩阵的行数等于左边矩阵的行数,乘积矩阵的列数等于右边矩阵的列数 。

那么,我们怎么理解矩阵的乘法呢?这里给个知乎中的答案用于参考:

矩阵乘法的本质是什么?

大概总结一下:

小明今天要做饭,消耗2斤肉,1斤蔬菜。肉每斤20元,蔬菜每斤5元,则一共需多少花费?

这个问题的答案很简单:

$20 times 2+5 times 1= 45$

我们用向量相乘的方法写出来:

$$

left[

begin{matrix}

20 & 5\

end{matrix}

right]

left[

begin{matrix}

2 \

1 \

end{matrix}

right] =

45

$$

如果小明第二天有另一种做饭的方法,需要消耗1斤肉,4斤蔬菜,那么这两种方法的花费各是多少呢?我们显然需要另算这第二种方法的花费。把这个做饭方式写在第二个矩阵(向量是宽度或长度为1的矩阵)里:

$$

left[

begin{matrix}

20 & 5\

end{matrix}

right]

left[

begin{matrix}

2 & 1\

1 & 4\

end{matrix}

right] =

left[

begin{matrix}

45 \

40 \

end{matrix}

right]

$$

以此类推,可以推导出矩阵乘法的含义。

小专栏

责编内容by:小专栏 (源链)。感谢您的支持!

您可能感兴趣的

通过python学习算法 我微软的忠实粉丝,从进入码农这个行业一直都在C#语言,.net平台,asp.net这个框架。过年回家家里有弟妹已经升初中了,学习相当紧张,但是我还是想要跟他们说...
The man who helped Trump use Facebook to get elect... Cambridge Analytica CTO Darren Bolding, who ran President Donald Trump's Fa...
微软新 AI 算法让滑翔机主动捕捉热气流,而不再“等风来”... “浩浩乎如冯虚御风,而不知其所止。” ——苏轼 雷锋网最新消息,微软 Redmond 研究院正在开发一款无动力 AI 滑翔机。日前,研究小组在内华...
算法系列——Intersection of Two Arrays 题目描述 Given two arrays, write a function to compute their intersection. ...
Python开发【算法】:斐波那契数列两种时间复杂度... 斐波那契数列 概述: 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐...