向量
在二维空间中,不同的方向表示不同的终点,比如同样走5000米
它的终点是(4,3)
而它的终点是(4.6,1)
在三维空间中也是如此
在线性代数的世界里,起始点不重要
在这个图中,从(-1,-1)到(3,2)和从(0,0)到(4,3)是一样的。它们只是坐标系不同而已。
为了研究方便,我们定义向量都从原点起始,但是顺序是重要的,很显然(4,3)和(3,4)是不同的。
向量是一组有序的数。
面积 卧室 卫生间 最近地铁站(km) 价格(万)
120 3 2 2 666
所以这是一个五维的向量(120,3,2,2,666),此时向量就是一组数,这组数的含义由使用者定义。
更严格一些的定义
行向量和列向量 (3,4)
通常教材,论文,提到向量,都指列向量。由于横版印刷,使用符号:
,这个T是一个运算符号,把这个向量进行转置的操作。
向量的类,因为向量就是一组数,所以我们用数组来表示。
接口
public interface Attribute<T extends Number> {
/**
* 向量的长度
* @return
*/
int len();
/**
* 获取向量的元素
* @param index 索引
* @return
*/
T get(int index);
}
实现类
public class Vector<T extends Number> implements Attribute<T> {
private T[] values;
public Vector(T[] values) {
this.values = values;
}
@Override
public String toString() {
return "Vector{" +
"values=" + Arrays.toString(values) +
'}';
}
@Override
public int len() {
return values.length;
}
@Override
public T get(int index) {
if (index >= len() || index < 0) {
throw new IllegalArgumentException("索引超出范围");
}
return values[index];
}
public static void main(String[] args) {
Attribute<Integer> vector = new Vector<>(new Integer[]{5,2});
System.out.println(vector.toString());
System.out.println(vector.len());
System.out.println(vector.get(0));
}
}
运行结果
Vector{values=[5, 2]}
2
5