设计一个程序实现两个任意长的整数的求和运算_自然数集,整数集,有理数集等都有字母表示,为什么无理数集没有...

在网上翻到一个非常有意思的问题:

38b4b28caeeb1ca2df10debaaa35de6b.png

这个问题乍看起来无厘头,但实际上是个非常深刻的问题,涉及到抽象代数(abstract algebra)的一些基本概念,因此我打算写篇文章来详细阐述一下。

人类的数学从数数开始,最早诞生的概念是自然数(natrual number)。后来随着数学应用范围的扩大,又产生了新类型的数。

初中时我们对数的体系做了详细地介绍

e69102d8c5cd7fbadf533e63bf08e103.png

到了高中我们又学了集合的概念,从集合的角度来研究数。为了叙述的方面,我们把由不同类型的数组成的集合用一个字母来表示,我们学过的有如下几个:

  • 自然数集:N
  • 整数集:Z
  • 有理数集:Q
  • 实数集:R
  • 复数集:C

相信很多小伙伴在这里也会碰到同这位网友一样的疑问:无理数(irrational number)也是很重要的数的类型,为什么它们的集合没有字母表示呢?是书上忘了讲,还是说数学家懒得起名字?

其实,无理数集没有用字母表示是有其中的道理的,要弄清楚这个道理,就得先弄清楚三个基本概念:集合(set),二元运算(binary operation),封闭(closed)。

基本概念

  • 集合

集合这个概念我们已经很清楚了,指的就是具有某些特定性质的元素做成的集体。当然关于集合的精确定义还有很多需要讨论,但是理解到这个层次也就足够了。

  • 二元运算

二元运算我们其实也已经很熟悉了,但是之前没有给它做出过精确的定义。用不太正式的语言来叙述,一个二元运算就是一种把两个数变成一个数的对应法则。比如加法就是一个二元运算,因为他把1和1变成2,把2和3变成5等等。同样道理,四则运算加减乘除都是二元运算。

不过我们一般把减法运算看作是加法运算的逆运算,把除法运算看作是乘法运算的逆运算,因此最基本的二元运算只有两种。

8da3539c6baea23557a66140f52a8105.png

于是有人就会问了,既然有二元运算,那有没有一元运算呢?当然是有的,所谓的一元运算,无非就是把一个数变成另一个数呗,我们常见的,比如对数运算,开方运算,都是一元运算。但其实,所谓的一元运算,就相当于我们学过的函数。

同样道理还会有三元运算,四元运算,n元运算等等,我们不再做过多讨论。

09ea369139622315596e0d346d6f1ece.png
  • 封闭

“封闭”其实是理解本文最核心的一个概念。

封闭是建立在集合与二元运算的概念的基础之上的。

对于某个数集和某种运算,如果从该数集里面任意挑两个数,做二元运算所得到的结果仍然是这个集合中的数,就说该数集对于这个二元运算是封闭的。

比如举个最简单的例子,自然数集对加法就是封闭的,因为任意两个自然数相加的结果,还是一个自然数。而自然数集对减法运算不封闭,比如我随便就可以举出两个数来2和3,他俩都是自然数,但是2-3=-1,它就不是自然数了。

5268152ef73af2ddb889a2153a42532c.png

封闭

要回答本文提出的问题,就得从封闭这个概念来着手。

我们先来分析一下已知的集合对四则运算的封闭性。

  • 自然数集N,对于加法运算和乘法运算都是封闭的,但是对于减法运算和除法运算不封闭。
  • 整数集Z,对于加法运算,减法运算,乘法运算都是封闭的,但是对于除法运算不封闭。
  • 有理数集Q,对于四则运算都是封闭的。
  • 实数集R,对于四则运算都是封闭的。
  • 复数集C,对于四则运算都是封闭的。

这里我想特别强调一下有理数集,有理数集对加减乘除4则运算都封闭,不是一件很明显的事情,我们需要有严格的证明。

所谓有理数就是可以写成两个整数之比的数,所以我们假设有两个有理数b1/a1,b2/a2,其中a1、b1、a2、b2都是整数,考察一下它们做四则运算的结果:

18dd8da8e009e11f67f3d61d0e110406.png

可以看出,四个运算结果依然都还是有理数,这就证明了有理数集对四则运算都是封闭的。

这里我想说的是,数学家们已经证明了:有理数集是对加减乘除四则运算都封闭的最小的数集。意思就是说任何比有理数还要小的集合,哪怕只比有理数集少一个数,就不再对加减乘除四则运算封闭了。

f1c5f3f0ecfa283c249e36a1afa5b1f6.png

在抽象代数学中,我们把对加减乘除四则运算都封闭的集合称为一个数域(number field),可以看出,实数集和复数集都是数域。而我们上面提到的结论就是:有理数集是最小的数域。换句话说,任何数域都包含有理数集作为它的子集。

无理数集

分析完这些,我们就可以来看看无理数集了。我们会发现,无理数及对四则运算都不封闭。我们很容易就能举出例子来:

  • 对加法:√2和-√2都是无理数,但是加在一起等于0,0不是无理数。
  • 对减法:√2和-√2的例子可以看成是√2-√2,结果也是0。
  • 对乘法:√2×√2,结果是2,2不是无理数。
  • 对除法:√2÷√2,结果是1,1不是无理数。
0bf6cb310c0bbbdaf90995eb653e156a.png

原来无理数集是个如此糟糕的集合!这就是我们不给它用字母表示的原因。

在现代代数学中,数学家们主要关注的就是集合及集合中元素的运算结构,产生了群(group),环(ring),域(field)等一系列概念。

一个集合上某个运算是封闭的,那么研究它才有意义,会有很多很美好的性质。但是如果运算不封闭,那么研究起来就会杂乱无章,并没有太大意义。

49db367b4b0ac40a21477198e6198357.png

对于前面五个集合,都存在至少一种运算使其封闭,我们就利用这种封闭性来得出不少新的性质,解决了很多数学问题,甚至构造出更多更复杂的结合。数学家们经常使用这五个集合,为了叙述上的方便,就拿五个字母来代替他们。

但是对于无理数集合,因为它对四则运算都不封闭,因此无法得到像前面五个集合那样丰富的性质,使用起来也就不如它们频繁,所以我们就没有必要拿一个单独的字母来命名它。

结束语

讲到这里就不得不稍微提一下近世代数(modern algebra)的发展。

近世代数中最主要的概念——群,思想起源于19世纪法国数学天才伽罗瓦(Galois,1811~1832)。伽罗瓦利用群论的方法,彻底解决了五次及以上方程根式解的问题,是数学发展史上开天辟地的事情。我这位旷世数学天才却因为意外而英年早逝,年仅21岁,是人类数学史上的一大憾事。

a05501380d531fdf453bdbf75b0f25d9.png

不过,我们现在在教科书上学到的代数学之所以长这个样子,则主要归功于20世纪德国女数学家,被誉为“现代代数之母”艾米·诺特(Emmy Noether,1882~1935)。诺特是数学史上毫无争议的最伟大的女数学家,他和他的学生所形成的“诺特学派”,彻底改变了代数学的全貌。

6ef8e7144e6da7e0ef766404ab936c17.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php strpo函数,php strpos函数有什么用

php strpos函数有什么用?定义和用法strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。注释:strpos() 函数是区分大小写的。注释:该函数是二进制安全的。相关函数:strrpos() - 查找字符串在另一字符串中最后一…

oracle 客户端_【数据库 常见术语1】 客户端,服务端

这个系列会介绍并回顾在学习和工作中常碰到的一些名词,以及它们的意思。客户端,服务端(以Oracle数据库为例)**************************************************************************************【我的理解】 打个比喻&…

多个线程访问统一对象的不同方法_分析| 你未必真的了解线程安全,别骗自己,来看下怎么实现线程安全...

世界那么大,谢谢你来看我!!关注我你就是个网络、电脑、手机小达人什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管…

php设置mysql查询编码,php连接mysql时怎么设置编码方式

php连接mysql时怎么设置编码方式php连接mysql数据库时,也就是在mysql_connect()语句之后添加“mysql_query("set names utf8");”语句来设置编码方式。注意:是utf8,不是utf-8;网页字符集也最好选用utf-8。在PHP连接数据…

pandas to_csv参数详解_【Python基础】Pandas数据可视化原来也这么厉害

一、可视化概述在Python中,常见的数据可视化库有3个:matplotlib:最常用的库,可以算作可视化的必备技能库,比较底层,api多,学起来不太容易。seaborn:是建构于matplotlib基础上,能满足…

oracle数据库重建em,oracle 11g em重建报唯一约束错误解决方法

oracle 11g em重建报唯一约束错误解决方法更新时间:2012年11月27日 15:07:33 作者:今天在手工配置Oracle11g的EM时总是报如下错误,也没有找到解决办法,以下是我的解决过程,希望可以帮助你们今天在手工配置Oracle11g的EM时总是报如下错误&am…

爬虫 404 try_Python爬虫MOOC笔记

写在前面的小于碎碎念最近在学习Python爬虫内容,其实很多知识在网上搜索一下都能查到,但是作为自己的一种学习记录,也是回顾与复习呀。这种东西真的变化超级快,以前可以直接爬取的内容,现在很多网站都增加了反爬机制&a…

python调用c++_python高性能编程之Cython篇 第一章

第一节 cython的潜能•Cython是一种编程语言,它将Python与C和C 的静态类型系统相结合。•Cython是一个将Cython源代码转换为高效的C或C 源代码的编译器。然后可以将此源代码编译为Python扩展模块或独立可执行文件。Cython的强大功能来自它结合了Python和C的方式&…

oracle获取序列并赋值,Oracle中序列的使用

数据库设计的三大范式第一条就是独立的表结构中必须有唯一主键来标识表中数据.在以往微软的SQL Server(duo版本)平台上.手动编码实现表中主键.并设定为自增列是极其简单.编码如下:typeidintnotnullprimarykeyidentity(1,1),在Oracle 10G中关于序列(Sequence)的使用.(A)Sequence…

oracle序时账是什么,序时账和明细账区别是什么

序时账和明细账区别:一、定义不同:1、明细账也称明细分类账,是根据总账科目所属的明细科目设置的,,用于分类登记某一类经济业务事项,提供有关明细核算资料。2、而序时账了,也称日记账,是指按照经济业务发生…

ui li 菜单 点击添加下级_【Qt开发】实现系统托盘,托盘菜单,托盘消息

概述系统托盘就是在系统桌面底部特定的区域显示运行的程序。windows在任务栏状态区域,linux在布告栏区域。应用程序系统托盘功能,是比较普遍的功能,本篇将详细的介绍如何实现该功能。演示Demo实现功能:1.应用启动后,任…

5g通用模组是什么_中国移动联合芯讯通发布5G终端、芯片及测试产业报告

11月19日,2020中国移动全球合作伙伴大会以“5G融入百业 数智引领未来”为主题在广州召开,从多个维度展现了中国移动运用5G技术驱动各行业转型升级的强大实力。并于21日在展会现场发布了《5G终端、芯片及测试产业报告》。5G终端、芯片及测试产业报告发布现…

dell网卡linux驱动,DELL R710 服务器 Linux 系统网卡驱动安装

DELL R710在装完AS4U7版本的Linux后发现,网卡没有识别出来。怀疑是网卡驱动没有装上,打电话给DELL的工程师,得到的答复是装系统前必须用随机带的引导盘来安装才能将网卡驱动装上。现在系统已经装完了,总不能重装一遍吧&#xff0c…

博客网站源代码_详解SEO布词以及网站排名优化技巧

首先,谈谈新手以及老手在认知上容易出现的SEO误区,我认为有以下几点因素,不容忽视。1、SEO优化就是为了排名、就是发外链不少人认为做SEO就是为了排名,完全不考虑网站文章的质量、可读性以及用户体验,甚至不惜使用一些…

惠普g260鼠标宏软件_黑爵电竞鼠标AJ337 电竞手残党福音 鼠标宏一键火力全开

2020年,可以说是英特尔最难受的一年,多年来的挤牙膏大法也不灵了,面对AMD更先进的7mm制程以及更多的线程数,加上本身更合理的售价,说实话就连一向占据处理器半壁江山的英特尔也感受到了很高的威胁。AMD撕裂者系列发布以…

linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...

压测工具其它有用工具在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能。好的压测工具有很多,可能的功能如下:发起压力监控性能监控系统使用率生成报告基准测试无非就是看系统能力是否达…

斐讯n1刷linux服务器,斐讯N1刷机Linux(Armbian)

一、降级N1打开ADB链接开始降级。降级后版本号不变二、第三方固件依然是上面的链接(官改v2.2)USB双头线链接HDMI借口最近的USB和电脑的USB进入线刷模式(电视不会显示任何东西,但是电脑会显示设备已连接)。打开上面的刷机工具刷入官改v2.2。理论刷完后重启即可进入安…

在linux cuda安装教程,Ubuntu20.04安装cuda10.1的步骤(图文教程)

安装前准备cuda的主要用途是深度学习,而目前主流的深度学习框架tensorflow2最高支持cuda 10.1,因此本文讲解在ubuntu 20.04系统上安装cuda 10.1的主要过程。首先要查看你的nvidia显卡驱动是否支持cuda10.1版本。在终端执行以下命令:nvidia-sm…

代码重构的方法和经验_关于烂代码优化重构的几点经验

是否已经读过前面两篇关于烂代码和好代码的文章?这些让人抓狂的烂代码,你碰到几种?什么才是好代码、高质量代码?工作中,总会不可避免的接触到烂代码,就像之前说的,几乎没有程序员可以完全避免写…

moodle环境安装linux,在Ubuntu 18.04/Debian 9上安装Moodle的步骤

本文介绍在Ubuntu 18.04/Debian 9系统上安装Moodle的的详细步骤,需要准备PHP、Apache/Nginx Web服务器及MySQL/MariaDB数据库。简介Moodle是一个免费的开源学习管理系统,用PHP编写,并在GNU通用公共许可证下发布。从Moodle创建学习课程&#x…