线性代数整理向量

2020-11-03 11:00:10 浏览数 (1)

向量

  • 线性代数是从研究一个数拓展到一组数
  • 一组数的基本表示方法——向量(Vector)
  • 向量是线性代数研究的基本元素
  • 一组数的作用:最基本的出发点:表示方向

在二维空间中,不同的方向表示不同的终点,比如同样走5000米

它的终点是(4,3)

而它的终点是(4.6,1)

在三维空间中也是如此

在线性代数的世界里,起始点不重要

在这个图中,从(-1,-1)到(3,2)和从(0,0)到(4,3)是一样的。它们只是坐标系不同而已。

为了研究方便,我们定义向量都从原点起始,但是顺序是重要的,很显然(4,3)和(3,4)是不同的。

向量是一组有序的数。

  • 如果只是表示方向,最多三个维度就够了,但为了扩展向量所能表达的范围,更加抽象的:n维向量。比如一个房子的维度
代码语言:javascript复制
面积       卧室        卫生间           最近地铁站(km)         价格(万)
120        3            2                2                  666

所以这是一个五维的向量(120,3,2,2,666),此时向量就是一组数,这组数的含义由使用者定义。

  • 两个视角看似不同,但可以互相转换,比如房子的这个向量,我们可以想象它是一个五维空间的一个终点。
  • 而一个方向就是一个点
  • 空间中的一个点,可以看作从原点指向这个点的一个方向
  • 在学习初始,使用方向的视角,更直观,更形象。
  • 更关键的是:这两个视角,都不是简单的"一组数"
  • 一个是一个有向线段
  • 一个是空间中的点

更严格一些的定义

  • 和向量相对应,一个数字,称为标量
  • 代数,用符号代表数。和标量相区别,向量的符号画箭头:
  • 个别情况下,尤其是几何学中,我们会考虑向量的起始点

行向量和列向量 (3,4)

通常教材,论文,提到向量,都指列向量。由于横版印刷,使用符号:

,这个T是一个运算符号,把这个向量进行转置的操作。

向量的类,因为向量就是一组数,所以我们用数组来表示。

接口

代码语言:javascript复制
public interface Attribute<T extends Number> {
    /**
     * 向量的长度
     * @return
     */
    int len();

    /**
     * 获取向量的元素
     * @param index 索引
     * @return
     */
    T get(int index);
}

实现类

代码语言:javascript复制
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));
    }
}

运行结果

代码语言:javascript复制
Vector{values=[5, 2]}
2
5

0 人点赞