前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性代数整理向量

线性代数整理向量

作者头像
算法之名
发布2020-11-03 11:00:10
4070
发布2020-11-03 11:00:10
举报
文章被收录于专栏:算法之名算法之名

向量

  • 线性代数是从研究一个数拓展到一组数
  • 一组数的基本表示方法——向量(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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档