iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java线型代数的核心是什么
  • 756
分享到

Java线型代数的核心是什么

2023-06-02 07:06:32 756人浏览 薄情痞子
摘要

本篇内容介绍了“Java线型代数的核心是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!生活中的线性:超市结算我们想象一个只卖两个商品的超

本篇内容介绍了“Java线型代数的核心是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

生活中的线性:超市结算

我们想象一个只卖两个商品的超市,销售青菜、黄豆。青菜每捆5元,黄豆每盒3元。此外,这个超市还有个积分系统,每捆青菜积分2分,每包黄豆积4分。需要一个结算系统,为客户计算总价和积分。

这对程序员来说不算挑战。每个语言都可以轻松的实现,比如用python:

# By Vameidef bill(x1, x2):    y1 = 5*x1 + 3*x2    y2 = 2*x1 + 4*x2    return y1, y2

x1,x2分别为青菜和黄豆的数目。y1,y2为总价和积分。通过输入不同品种的购买数目,我们得到输出。这里的输出有两个元素:总价和积分。

上面的计算,还可以写成一组简单的数学方程:

y1=5×x1+3×x2y1=5×x1+3×x2

y2=2×x1+4×x2y2=2×x1+4×x2

我们试想这样一种情况:一对夫妻去超市买菜。丈夫买了1捆青菜,2盒黄豆,结账的时候,为11元和10个积分。妻子买了2捆绑青菜,3盒黄豆,结账的时候,为19元和16积分。

但如果妻子结账前碰到丈夫了,俩人把东西放在一起,总共3捆青菜,5盒黄豆。按照我们的结算系统,总价为5×3+3×5=305×3+3×5=30元,总积分为2×3+4×5=262×3+4×5=26积分。

你可能会反驳我,为什么要那么麻烦呢?把刚才的两个单子加在一起不就可以了。11+19=3011+19=30元,10+16=2610+16=26积分。这通过结算系统的计算结果完全相同。

这想法没错。你已经在运用线性系统(Linear System)的思维了:

几个购物车里的东西,分开结账的几张小票的总和,和一次算总帐的结果相同。

线性系统还有更复杂的情况。把两个购物车给销售员,让销售员按相同的配比,丈夫的来3车,妻子的来2车。那么,新的总价,应该是丈夫的小票乘3,加上妻子的小票乘2。

线性的思维方式是如此的普遍,以致于我们要多想一下,才能想出非线性的例子。下面是一个非线性的情况:超市更改积分系统,积分超过20的话,将获得双倍积分。这个时候,如果分开结账,丈夫和妻子的积分都不到20,那么积分分别为10和16,总和为26。而合在一起结账,由于积分超过了20,积分将是52。有生活经验的夫妻们,一定是合在一起结账,而不是分开结账了。

我们创造了一个非线性的系统。把这个新的结算系统编成函数,依然用Python

# By Vameidef non_linear_bill(x1, x2):    y1 = 5*x1 + 3*x2    y2 = 2*x1 + 4*x2    if y2 > 20:        y2 = y2 * 2    return y1, y2

非线性并不是人们的惯常思维方式。超市和商场常有复杂的打折、赠券、积分系统, 这些系统很多时候是非线性的。大脑需要耗费很大能量,才能处理得过来。于是,作为超级线性的男生,我通常的想法都是:去它妈的,老子不要那么麻烦的合单或拆单了。

(奇怪的是,妹纸可以超级熟练的处理各种非线性的购物系统,甚至并行处理多个。上帝拿走的那根肋骨,一定是非线型的……)

“一个”

我们即将要改变我们对一个单位的数据的理解。举出一个数据

做为程序员,最直接会列举出一个数据,比如一个整数,一个浮点数。

那一个结构体呢?C语言中的结构体可以包含有多个元素。我们知道,每个元素分开写出来,并不是结构体的完整数据。比如:

typedef struct {    int veg;    int bean;} Cart;

再继续,一个对象的数据呢?一个对象可以有多个属性。当我们说一个对象的数据时,我们指的是这个对象的多个属性。比如:

public class Cart{   int veg;   int bean;}

再比如,我们在说一个人的数据时,包括姓名,身高、体重、IQ多个值。这多个值可以构成这个人的“一个”数据。我们可以在sql数据库中建立这样一个Person(name, height, weight, IQ)的表。每一行,也就是一个记录(record),算是一个数据单位。

即使是列表这样的数据容器,如果固定每个位置数据的意义,那么一个列表也可以算是“一个”数据。比如丈夫购物车为[1,2],妻子的购物车为[2,3]。

这种包含了多个元素的数据,称为向量(vector)。与之对应,一个单一的数值,称为标量(Scalar)。

 一个向量

我们用带小箭头字母表示,来表示一个向量。比如丈夫的购物车:

x⃗ =[12]x→=[12]

向量可以相加减,这时只需要对应行的元素相加就可以,相当于合并或分开购物车。比如丈夫和妻子的购物车合并:

[12]+[23]=[35][12]+[23]=[35]

向量也可以与一个标量相乘。比如x⃗ ×5x→×5表示5个购物车的量。这时只需将标量与向量的各行元素相乘。

5[12]=[510]5[12]=[510]

伴随着向量,有一个简单的概念,即维度(dimension)。上面的购物车向量,包含了两个数值,即青菜的数目和黄豆的数目。我们因此说该向量是二维的。而结构体中元素的个数、对象的属性个数,都是维度。我会在以后的文章中深入维度这一概念。

有了对数据的深入理解,那么线性系统的特点可以总结如下: 

L(aD1→+bD2→)=aL(D1→)+bL(D2→)L(aD1→+bD2→)=aL(D1→)+bL(D2→)

D1→D1→和D2→D2→是向量,分别是丈夫和妻子的购物车。而a, b为两个标量,比如a为2,b为3,表示丈夫那样的购物车乘2,妻子的购物车乘3。L为结算系统。方程右边表示,合在一起结账。方程右边表示,丈夫和妻子分开小票,相乘再相加。方程的两边相等。

矩阵革命

在数学上,我们已经有一组方程表示出了一个线性系统。上面的方程组有些不方便的地方:

  • 输入的元素(黄豆数目)和系统参数(单价)混合在一起

  • 有很多字母

数学家是偷懒的动物,这点和程序员很像。他们最后找到了一种省事的记述方式。利用刚才的向量。分离的表示输入、线性系统和输出的关系:

[1110]=[5234][12][1110]=[5324][12]

方程最左是个向量,最右是个向量。奇怪的是中间用括号括住的一堆数字。这被称为一个矩阵(Matrix)。可以看到,这个矩阵中有四个元素,包含了各个物品的单价和各个物品可获得的积分。这通常是结算系统所包含的数据。我们可以猜测到,这个矩阵相当于一个结算系统。左边的向量是输出,右边的向量是输入。

结算系统

这个结算系统运作时,把输入向量放横,再和结算系统的每一行元素分别相乘,即获得对应的输出元素。比如输出的第一个元素:

Java线型代数的核心是什么

根据这一运算规则,一个线性系统就完全用一个矩阵表示出来了。

可以把矩阵表示成字母A,那么用代数的形式,写出输出和矩阵、输入的关系:

y⃗ =Ax⃗ y→=Ax→

这个代数形式,在线性代数中,有基础性的地位。方程的右边,我们说矩阵和向量进行了“乘法”运算。这一运算的规则,是按照我们上面所描述的那样运行的。这简直是对乘法符号的一次“运算符重载”(operator overload)。

我们可以用程序来实现上面的计算过程。编写类似的C程序并不复杂。更方便的是调用现有的库函数,比如Python中的numpy: 

# By Vameiimport numpy as np# matrixa = np.matrix([[5, 3],[2, 4]])# input Vectorx = np.array([[1], [2]])# multiplicationy = np.dot(a, x)print(y)

矩阵这个东西把结算系统的表示方式大大缩减。更重要在于,线性系统和矩阵是互通的。矩阵表示的是一个线性系统。一个线性系统也总可以表示一个矩阵(证明从略)。

绕了半天,矩阵 = 线性系统。

“Java线型代数的核心是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java线型代数的核心是什么

本文链接: https://www.lsjlt.com/news/229232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java线型代数的核心是什么
    本篇内容介绍了“Java线型代数的核心是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!生活中的线性:超市结算我们想象一个只卖两个商品的超...
    99+
    2023-06-02
  • Java线程核心机制是什么
    这篇文章主要介绍“Java线程核心机制是什么”,在日常操作中,相信很多人在Java线程核心机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java线程核心机制是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • java多线程的核心知识点是什么
    这篇文章主要介绍“java多线程的核心知识点是什么”,在日常操作中,相信很多人在java多线程的核心知识点是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java多线程的核心知识点是什么”的疑惑有所帮助!...
    99+
    2023-06-20
  • Java中的线程生命周期核心概念是什么
    本篇内容主要讲解“Java中的线程生命周期核心概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的线程生命周期核心概念是什么”吧!Java多线程在Java语言中,多线程是由线程的...
    99+
    2023-07-02
  • hadoop的核心是是什么
    Hadoop的核心是一个分布式存储和计算框架,它允许用户在大规模集群上存储和处理大量数据。Hadoop包括两个主要组件:Hadoop...
    99+
    2024-04-02
  • Java日志的核心组件是什么
    本篇内容介绍了“Java日志的核心组件是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java日志基础Java使用了一种自定义的、可扩展...
    99+
    2023-06-17
  • 什么是JavaScript的核心
    本篇内容主要讲解“什么是JavaScript的核心”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是JavaScript的核心”吧! ...
    99+
    2024-04-02
  • matplotlib的核心是什么
    小编给大家分享一下matplotlib的核心是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!matplotlib使用numpy进行数组运算,并调用一系列其他的...
    99+
    2023-06-02
  • vuex核心是什么
    这篇文章主要介绍“vuex核心是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vuex核心是什么”文章能帮助大家解决问题。 vuex是专门帮助vue管理的一个...
    99+
    2024-04-02
  • hadoop核心是什么
    hadoop的核心是分布式文件系统hdfs和MapReduce,HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算,Hadoop是一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的...
    99+
    2024-04-02
  • java中的四个核心概念是什么
    本篇内容主要讲解“java中的四个核心概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的四个核心概念是什么”吧!1.Java虚拟机Java虚拟机的主要任务是装在class文件并...
    99+
    2023-06-17
  • Spark的核心调优参数是什么
    Spark的核心调优参数是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spark的核心调优参数到都有哪些  num-ex...
    99+
    2024-04-02
  • Java中的内核线程是什么
    Java中的内核线程是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3...
    99+
    2023-06-07
  • 数据库的核心操作是什么
    这篇文章将为大家详细讲解有关数据库的核心操作是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。数据库的最核心也是最常用的操作是增删改查。数据库  查询数据库:show ...
    99+
    2024-04-02
  • javascript核心是什么写的
    随着互联网的发展,JavaScript已经成为了一个非常重要的程序设计语言,不仅仅在Web开发中占据了重要地位,同时也在桌面程序开发、服务器端编程和游戏开发等领域得到了广泛应用。而JavaScript的成功之处在于,它不仅仅是一门语言,更是...
    99+
    2023-05-14
  • 大数据的核心价值是什么
    这篇文章将为大家详细讲解有关大数据的核心价值是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。大数据的核心就是预测。大数据的本质是解决问题,大数据的核心价值就在于预测;大数据是把数学算法运用到海量的数据...
    99+
    2023-06-14
  • 浅谈Java线程池的7大核心参数
    目录前言一、线程池的创建及重要参数二、ThreadPoolExecutor中重要的几个参数详解三、workQueue队列(阻塞队列)四、常见的几种自动创建线程池方式五、线程池实现线程...
    99+
    2024-04-02
  • Java中什么是内核线程
    这篇文章将为大家详细讲解有关Java中什么是内核线程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系...
    99+
    2023-06-14
  • Java synchronized偏向锁的核心原理是什么
    本篇内容主要讲解“Java synchronized偏向锁的核心原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java synchronized偏向锁的核心原理是什...
    99+
    2023-06-29
  • Zookeeper的核心原理是什么
    这篇文章主要介绍“Zookeeper的核心原理是什么”,在日常操作中,相信很多人在Zookeeper的核心原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Zookee...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作