点击链接查看:英才计划与中学生培养(一):卡脖子形势下,人才培养方向何在?本文为北京大学重庆大数据研究院基础软件科学研究中心执行主任、北太振寰创始人卢朓副教授在中国科协组织的中学生创新人才培养论坛上的分享。前文观点 计算是求解数学模型的手段。可是对于中学生来说,很多算法的实现并非易事,因此可选择的可以求解的数学模型就很少了。例如,求函数的最大值的问题,往往只能对二次函数,三角函数来求解,稍微复杂的函数就不会了。使用数值计算通用软件,消除中学生求解难的疑虑 其实,很多数学模型对中学生来说还是比较容易掌握的。为了让学生建模的时候可以选择更多的模型,我建议学生使用数值计算通用软件来消除求解难的顾虑。 借助数值计算通用软件,更有利于培养同学们的数学建模能力,我举几个例子: 第一个例子是线性规划、二次规划和整数规划之类的模型。实际上,中学生已经接触过这样的问题了,但是往往局限在很小的数值范畴内。这种模型的威力并未得到充分展现。 中学生如果使用数值计算通用软件来求解此类问题,那么就可以把更多精力放在体会这种数学模型的特点上。 我在B站上给出了一个视频,展示了如何使用数值计算通用软件求解整数规划问题,我相信感兴趣的中学生可以很快学会使用计算机求解整数规划问题的方式。 第二个例子与使用常微分方程的初值问题建模有关,这个可以和物理学科结合起来。我们可以通过测量物体在不同时刻的位移,把数据画出来,借助于常微分方程给出物理运动规律,这样就是在重走牛顿当年的发现之路。至于常微分方程初值问题的求解则可以借助数值计算通用软件来完成。 第三个例子是关于机器学习和人工智能的算法。 我在B站上给出了如何使用数值计算通用软件读取Excel数据,然后如何使用朴素贝叶斯来判断西瓜好坏的例子,也可以供中学生学习。 总之,我建议中学生借助数值计算通用软件来了解读取数据、数学建模、数值计算以及计算结果的可视化等环节,然后选取自己感兴趣的部分多下功夫,其它环节则可以通过数值计算通用软件具有的内置函数以及插件来完成。 参加“英才计划”的学生不一定都要找现实中的问题来做数学建模,还可以通过阅读文献来学习。如果对数学或者其他学科的某些定理和知识点感兴趣,可以通过数值计算通用软件来验证,加深对这些定理的理解。 这样的计算不能代替证明,但是帮助大家体会这个知识点的含义。 通过“英才计划”,我希望学生在多个方面有所收获,如: 1.提升搜集、理解、组织数据的技能,数学建模能力,团队协作能力以及论文写作能力; 2.培养定量研究发展变化规律的习惯,培养好奇心、想象力、创造力和表达力; 3.了解计算机算法和原理、数值计算通用软件的基本用法,对数学知识的用途有更深的认识等。从数值计算通用软件的推荐谈开去:“被禁”以后,我们该做些什么? 科学计算已经成为与理论和实验并列的科学研究的基本手段。科学计算软件可以分成两种类型:专用型和通用型。 通用型科学计算软件是开发工业软件的重要基础性工具,长期以来,这一部分的市场由国外公司垄断。通用型数值计算软件就好像连接各个工厂的高速公路一样,是数值计算软件中的基础设施。有了高速公路的连接,工厂的原材料才能运进来,生产的产品才能更方便地送到用户手里。 在向参加“英才计划”的学生推荐数值计算通用软件时,我最初考虑的是MATLAB。但由于这是一款商业软件,我担心购买软件会给学生带来额外的经济负担,所以并未选择。 2020年,美国商务部宣布新增33 家中国公司及机构列入 “实体清单”,中国大陆共有 13 所高校被列入该清单,分别为哈尔滨工业大学、哈尔滨工程大学、中国人民大学、北京航空航天大学、西安交通大学、西北工业大学、四川大学、电子科技大学、湖南大学、国防科技大学、同济大学、南昌大学、广东工业大学。MATLAB 所属公司 MathWorks 中止了对以上高校的正版授权。 这让我为当初自己的选择感到庆幸,也让很多人意识到通用型数值计算软件是一个“卡脖子”技术,没有这个技术,我们自己开发的专用软件或者算法就无法得到广泛的应用。但当时我仍想着:好在,我们还有Python可以使用。 可在俄罗斯-乌克兰战争爆发后,据相关报道显示“目前已经有多达30个开源项目加入了对俄罗斯的抵制,其中甚至包括亚马逊(AWS Terraform modules)和Oracle等科技巨头的项目,也不乏MongoDB、pnpm、es5-ext、Drupal、Redis Desktop Manager等流行项目”。这让我进一步认识到:这类开源软件的主导权如果是掌握在别人的手里,仍然蕴藏着危险。 事实上,中国的基础数学和理论数学研究在国际上还是处于领先地位。在涉及具体的算法或专用型数值计算软件领域,我们中国的科学家也取得了很好的成绩,在有关算法的顶级杂志上,中国人发表论文的数量和质量都位于前列,有很多算法被国外的通用型数值计算软件集成,得到了广泛的应用。 但是我们缺乏像MATLAB这样的数值计算通用软件。这是为什么呢? 因为,通用型的数值计算软件的开发需要耗费大量的时间,需要投入大量的人力物力,无法在短期内做出高精尖的成果。研发过程中需要有关键的技术基础,要掌握核心关键的规律、知识和方法,这些都只能通过“学中干”和“干中学”相结合才能获得。 工业软件可以说是现代产业体系之魂。目前,欧美的工业软件几乎已经渗透了所有工业领域的核心环节。发展具有自主知识产权的工业软件刻不容缓,对掌握我国产业发展的主导权,增强工业体系的韧性和抗打击性都非常重要。 而通用型数值计算软件的研发意义尤为重大:它不仅自己就是一个工业软件,还能够成为其他工业软件的底座,防止国产工业软件被釜底抽薪;同时,数值计算通用软件也是一个非常好的创新平台;正如前文所述,此类软件对于人才培养也至关重要。 通用型数值计算软件的成功研发,将是对人类文明的贡献,也是国家软实力的标志之一。因此,虽然困难重重,我和其他志同道合的伙伴们还是决心开发具有自主知识产权的通用型数值计算软件,破解“卡脖子”问题。 (未完待续)作者简介
为切实促进高校优质科技教育资源开发开放,建立高校与中学联合发现和培养青少年科技创新人才的有效方式,中国科协和教育部自2013年开始共同组织实施中学生科技创新后备人才培养计划(简称“英才计划”)。目前,共有15个省市、20所高校等参与培养工作。 在中国数学会2022年学术年会中,中国数学会与英才计划全国管理办公室设置了中学生创新人才培养论坛。参加论坛人员包括英才计划数学学科工作委员会专家,部分“英才计划”高校导师、中学教师、数学学科学生等。 北京大学重庆大数据研究院基础软件科学研究中心执行主任、北太振寰创始人卢朓副教授收到中国科协的邀请参加论坛,分享中学生基础学科科技创新后备人才的培养经验与体会。他说他感到非常荣幸。刘东升、陈姝羽等学生取得一系列的成绩,这主要还是他们自己努力的结果。他为他们感到高兴和自豪。 卢朓副教授参与了四年的“英才计划”项目,教学相长,对中学生人才的培养工作有了更深的认识,以下是卢朓副教授在论坛上的汇报。“德、才、学、识”,以德为先 结合我自己的科研方向,一方面,我希望能够在“德、才、学、识”四个方面提高学生的综合素质。 王梓坤院士的《科学发现纵横谈》是一本很好的科普书,每年我都会推荐给学生。王梓坤院士把治学成才之道归纳成十个字——“理想、勤奋、毅力、方法、机遇”。 “德、才、学、识”是对科学工作者的素质的基本要求。德,主要是指政治立场和态度, 指追求真理、热爱真理、严于律己,力求人品高尚。“德、才、学、识”四者不可或缺,而“德”居其首。“才”、“学”、“识”受“德”的制约。 我在对学生的培养过程中,把“德”放在首位,让学生了解科技发展的现状以及“卡脖子”问题,让学生立大志,把自己的成长与国家的需要紧密地结合起来。 柴静记者对丁仲礼院士的访谈是一段很好的科普节目。在访谈过程中,丁仲礼院士向大家说明,地球平均气温升高2度会导致多少多少物种灭绝是英国的一家科研小组用计算机模拟出来的,并不一定可信。 柴静接着说“我们几乎是信仰实验室的所有…”。 可以看到柴静从相信科学已经变成了迷信科学了,实际上科学结论是可以证伪的,并非意味着绝对真理。柴静又进一步说“ ... 得到了主流科学界的认同” 。这说明柴静是迷信西方的科学家权威。 丁仲礼院士说:“科学家有主流吗,真理的标准是根据人多人少定的吗?”接着,柴静又说“作为一个科学家不应该从国家利益出发,而应该从整个人类的共同利益出发”。这说明柴静是把西方的利益看成了整个人类的共同利益。 实际上,我们如果没有维护占到全球总人数1/5的中国人的利益,就不能说我们维护了全人类的共同利益。在培养学生的过程中,我会建议学生看看这段访谈,告诉他们不要迷信科学、不要迷信权威。 西方国家在科技等各个方面卡我们的脖子,破坏全球公平竞争的环境,其目的只是为了他们自己的利益。如果真如他们所愿,我们完全失去了竞争力,最终也会导致他们失去继续努力奋斗的动力,进而影响全人类的科技发展。 我们期待的是全人类的团结协作,共同推动科技等各个方面的发展。目前惧怕公平竞争的不是我们,我们没有选择,只能自力更生努力奋斗,争取把核心技术掌握在自己的手里,这样才能使西方看到封锁无效之后,放弃他们使绊子的行动,才能够迎来全人类团结起来为共同利益而努力奋斗的美好局面。 培养创新型人才,数学建模至关重要 另一方面,我希望能够培养学生的数学建模、数据分析和数值实验的能力。 (1)应用数学的价值观的三个方面:理论、交叉和落地 对学生的培养主要还是看学生的兴趣,因材施教;另外也结合我自己的专业特点——应用数学方向。早期的数学并没有区分基础数学和应用数学,后来研究方向开始逐步细化,可以分成基础数学和应用数学:基础数学包括代数,几何和分析;应用数学包含概率统计、运筹优化、计算数学、控制论等。 应用数学的价值观和基础数学不一样,它具有多元化的价值观。在张平文院士的《数据科学融通应用数学》的报告中给出了三个方面:首先,应用数学和基础数学一样,也是数学的一部分,也追求简洁与美,我们称之为理论;第二,应用数学和化学、材料等学科交叉,此时应用数学追求的价值观和所交叉的学科的价值观一致;第三,应用数学还有很重要的一个价值观是“落地”,即经济与社会价值。这部分也是非常重要的。 现在全世界哪个公司最重要、最厉害?谷歌显然算得其中之一。谷歌起源于PageRank算法。 扫码查看Page Rank 算法简介视频我在B站给出的PageRank算法的一个简介,有兴趣的中学生也是能看得懂的。作为谷歌公司的PageRank算法从数学的眼光来说,它不属于原创,从逻辑角度来说却是原创的,即追求经济与社会价值。 (2)应用数学的精髓是模型和计算:数学建模的重要性 应用数学的精髓是模型和计算。 1998年菲尔兹奖得主、英国数学家高尔斯(T.Gowers)认为:数学研究的对象并非真正的现实世界本身,而只是现实世界的数学模型,也就是现实世界的一种虚构和简化的版本。 李大潜院士指出:“传统的数学教育往往从基本的概念或定义出发,以简练的方式合乎逻辑地推演出所要求的结论。这固然可以使学生在较短时间内按部就班地学到尽可能多的内容,并体会到一种丝丝入扣、天衣无缝的美感。但是,过分强调这一点,就可能使学生误以为数学这样的完美无缺、无懈可击是与生俱来、天经地义的,反而使思想处于一种僵化状态,在生动活泼的现实世界面前手足无措、一筹莫展,甚至使学生感到学了很多据说非常重要、十分有用的数学知识以后,却不会应用或无法应用,甚至还觉得毫无用处。" 数学模型是数学与应用的一个桥梁。李大潜院士还指出“通过数学建模将一个看来与数学无关的现实问题归结为一个合理的数学问题,并利用数学方法成功地予以解决,这是重要的能力与素质。这种能力和素质的培养与提高,对一个合格的数学工作者、特别是应用数学工作者来说,无疑是十分值得重视、应该着重加以培养的。数学建模对培养创新型人才非常重要。” 现在国家已经把数学建模的实践与活动列入全国高级中学的教学计划。(未完待续)
(转载自公众号:算海扬帆) 那么作为数学系的学生,如果仍想把编程学好,并为数学这把“屠龙刀”找到用武之地,有没有其它的办法呢?答案是肯定的。 目前各种开源编程语言、操作系统、应用软件以及编程工具都已经发展的相当成熟好用,它们一起构成了整个互联网的开源技术底座,而且大多都形成了非常成熟开源社区。个人通过这些开源社区,可以找到非常丰富的入门教程、帮助文档、教学视频等学习资源,还可以在线获得很多技术大咖的及时答疑解惑,完全可以弥补学校编程教育资源的不足和问题。 基于这些互联网上的学习资源,个人想学好编程,还需要充分发挥自己的主观能动性,抛弃所谓的天赋、喜不喜欢、有没有兴趣等主观的、道听途说的、廉价的、即无法证实也无法证伪的想法和疑问,在认真调查研究基础上,结合自己的实际情况,以及学习和职业发展目标的需要,制定一个合理可行的学习计划和方案,然后在不断学习中实践、在不断实践中学习。 下面我将从思想、原则、方法三个层面,分享我们团队在学习编程过程中的一些经验。 从思想观念的角度来讲,首先要给自己的大脑洗个澡,洗去那些错误有害的观念,植入能够反映客观现实的思想。有以下几点需要注意: 停止去问我有没有编程天赋这个问题,这不是一个好问题,因为是与否的回答都不能证实和证伪。 停止去问我对编程有没有兴趣、喜不喜欢的问题,因为在没有深入了解一件事情之前,我们没有资格回答这个问题。 停止去抱怨学校教育的不足之处,因为一个社会组织的发展也有它的内在客观规律(比如经济利益是驱动并决定组织向不同方向发展的根本动力),所以一个组织最后发展到让组织内所有人都不爽的状态,都有它不可抗拒的一面,整天的抱怨只是在宣泄情绪、浪费自己的时间而已。如果你在一个组织中浪费了青春年华,最后还要承担其不好的后果,那就下决心用行动去改变自己,从而把对自己成长的影响降到最低。 作为数学系的学生,我们要对数学本身有信心。不要仅仅停留在数数、买菜这么低的层次上来看待数学。数学是人类智慧皇冠上最灿烂的明珠,是一切自然、社会和工程科学的通行语言,这是真理,不用费时间和脑力去怀疑,我们最好能把数学当成一种信仰。我们暂时看不到、感受不到,不是因为这是不是真理的问题,而是我们还没有达到相应的高度。编程本质上就是把用数学语言描述的解决方案“翻译”为程序代码而已,只要我们能学好数学,就能学好编程。 在智能信息时代,软件才是连接一切的关键,而数学思想和算法则是所有软件的灵魂。因此,身处数学系的你,如果想找一份好工作,成为技术大牛,或者想知道数学到底是如何与自然、科学和工程学科相互作用的,想把数学变成真正的生产力,就需要把编程学好。 从原则的角度来讲,有如下原则我们需要坚持: 少即是多,慢即是快 循序渐进,日积月累 先入门存活,再实践精通 从方法的角度来讲,有如下的方法你可以尝试: 首先快速入门 Linux 及开源编程生产力工具,如:ubuntu、git(版本控制)及开源代码托管平台、cmake、vim、gcc、gdb、vscode 等等,然后在不断的使用过程中实践精通。这里强调的是要用开源工具来学习编程。 在学习编程的过程中,每天坚持写学习复盘总结,通过不断反观、反思、反省自己学习编程的过程,不断提炼总结经验教训,看清自己在学习过程中的思维与行为模式,并不断调整优化。这是一个向自己学习的过程,也是自主学习的核心要义。 可以找一个或多个引路人,定期寻求指导和反馈,帮助及时发现学习中存在的问题,答疑解惑,这样会少走很多弯路,少踩很多坑。 在编程之前,首先要写好编程数学文档。文档要尽量以最简洁明了、逻辑清晰的数学语言来描述要实现的算法,保证每一个计算步骤的正确性。简洁明了、逻辑清晰的数学语言往往意味着对应的程序实现也是简洁明了、逻辑清晰的。注意,这里所说的编程数学文档,不是通常教材上看到的那种伪代码,因为这种伪代码大部分是无法直接翻译成程序语言的。 精通数学中的张量语言,经验表明用它写出的编程数学文档,大部分是可以直接翻译为代码的。 在编程之前,你还要准备好可以用来测试程序运行的简单算例,用于在编程过程中随时测试你的程序。 要实现复杂的算法,先进行分解设计,把算法“正交”分解成很多简单的模块,其中每个模块有明确的功能和输入输出,然后采用增量开发的模式,逐个实现并测试其正确性,最后再集成测试正确性。 去阅读别人的代码时,有与编程相关的数学文档,要先看数学文档。如果没有,就要在看代码的过程中,不断尝试用数学语言来重新阐述这些代码,并写成编程数学文档,再结合一些必要的运行测试,可极大提升理解学习别人代码的速度。 反过来把编程作为学习数学的工具,帮助自己更深刻地理解数学本身。 学会使用符号计算工具,代替纸笔进行数学公式的推导,比如 Python 中 sympy 符号计算工具箱。 以上是我们团队在编程过程中总结的实战经验。目前团队小伙伴陈春雨已通过这一系列学习和实践,成功的从编程菜鸟晋升为大虾,初具亮剑江湖的实力,可见以上经验还是颇具参考性。希望这些经验能够帮到更多想把编程学好的学生。我也会一如既往地探索,从而可以帮助更多学生快速提升编程能力,为社会培养更多既懂理论、又懂实践的综合型人才。 欢迎更多有志于把计算数学变为真正生产力的老师、学生加入我们! 算法时代,未来已来!作为计算数学人,我们应心怀使命,肩扛责任,迎难而上,以攻坚的姿态开拓创新,为解决国家重大“卡脖子”问题贡献自己应有的一份力量,同时为培养新一代中国数学的中坚力量而努力。 相信我们在一起,就会了不起! (原文链接:https://mp.weixin.qq.com/s/vB0qAz2e1QmNMKnBGitEYw)
(转载自公众号:算海扬帆) 我见过很多数学系的学生,认为自己编程能力不行,说自己不是编程的那块料,每每遇到需要编程的任务,心里就犯难。即使那些稍微有点勇气的学生,下定决心硬着头皮上,也往往收效甚微,成长缓慢。 这不是一个正常的现象。因为数学系的学生,在经过了几年的学习和训练后,是应该具备相当程度的结构化、定量化的抽象逻辑思维能力,并且能够借助数学的思想和方法,熟练使用数学语言来刻画问题、构造解决方案。对于受过良好训练的数学系学生来说,所谓编程,本质上就是把用数学语言描述的解决方案“翻译”为程序代码而已。数学和计算机编程本来就是天作之合,有数学背景的学生应该具备很大的优势和潜力来学好编程。 我一直认为,能同时掌握数学语言和计算机编程语言的人,到高校一定是科研能手,到公司一定是业务骨干。但现实却是,很多大学的数学院系,仍在不断培养大量害怕编程的学生。如果去问数学系的学生将来要找什么工作,很多人的第一个想法就是当一名老师。如果问关于数学研究的事情,他们非常自然地认为证明分析就是数学研究的全部内容。 数学系的毕业生有很多去了学校,或者金融、互联网这些来钱快的行业。而在中国需要数学重点支撑的科学计算与工业软件领域,我们会发现数学背景出身的人寥寥无几。学生不愿去的直接原因,一方面是对自己编程能力和学习潜力没有信心;另一方面对数学如何应用到科学计算和工业软件领域也没有什么概念,对于实际工业应用背景更是知之甚少,缺乏将数学语言自如转换为应用领域语言的能力。 当前国产科学计算和工业软件远远落后于西方发达国家,在总体上存在基础薄弱、创新不足、人才短缺和应用困难等问题,被结结实实地“卡”着脖子。而要解决这一严峻的问题,培养大量既懂应用数学 、又懂计算机编程和应用物理的综合型人才,并引导他们进入科学计算和工业软件领域,是当下亟需做的事情。(鄂维南院士在《人工智能时代交叉科学的人才培养》一文中对算法时代如何培养人才有更深入细致的阐述) 那么,我们当前的数学教育已经做好培养这些综合性人才的准备了吗?依目前的情况来看,显然没有。数学系的学生,在数学、编程和数学应用之间的自我怀疑、彷徨、痛苦和挣扎,并不是一种偶然现象,而大学数学科研和人才培养体制机制的僵化就是造成这种现象的一个外部客观原因。 时至今日,在很多大学的数学系中,计算机编程教学依然是以教授语法知识为主,对数学核心课程的支撑也仅仅停留在商业软件的使用上,几乎没有关于编程原则、方法、技能和生产力工具的教学内容。 为什么只是教教编程语法?因为承担编程教学的师资,大部分还是数学系出身,基本没有受过正规的计算机编程训练。而且目前高校的这种以“数数”为主的评价机制,让承担编程教学的老师即使有心,也不太可能把大量时间花在学习提高自己编程能力、搞好编程教学的事情上。在师资的引进和培养上,大多学校还是以“戴帽子”的人为主,至于实际需要什么样的师资来为国家、社会培养更有用的人才,往往考虑的不够深入全面。所以,从我上大学到现在,整整 20 年了,大部分数学系的计算机编程教育,依然没有什么变化,而且预计在将来可见的很长一段时间内,整体上也不会有什么实质性的变化。 (原文链接:https://mp.weixin.qq.com/s/vB0qAz2e1QmNMKnBGitEYw)
系统仿真软件是一种用于模拟实际系统的软件,它可以帮助我们更好地理解系统的运行情况。仿真软件是用于建模和分析复杂系统的强大工具。它被用于从工程到金融的各种行业,以帮助了解系统如何工作以及如何改进。不同的仿真软件有不同的特点,因此在选择仿真软件时,我们需要考虑不同的系统仿真软件的优缺点。MATLAB/Simulink是一款功能强大的系统仿真软件,它可以帮助我们快速构建复杂的系统模型,并且可以模拟多种不同的系统。MATLAB是一个功能强大的通用工具,可用于模拟各种系统。它易于使用,具有广泛的功能,包括图形用户界面、强大的编程语言和预构建模型库。MATLAB也是高度可扩展的,允许用户创建自己的模型和仿真。此外,MATLAB/Simulink还提供了丰富的可视化工具,可以帮助我们更好地理解系统的运行情况。Simulink是一个图形编程环境,允许用户创建和模拟复杂系统。它被设计为易于使用,并具有广泛的功能,包括一个预先构建的模型库、一种强大的编程语言和一个图形用户界面。Simulink还具有高度的可扩展性,允许用户创建自己的模型和仿真。但是,MATLAB/Simulink的上手较难,对于初学者来说,可能需要花费更多的时间来学习。LabVIEW是另一款功能强大的系统仿真软件,它可以帮助我们快速构建复杂的系统模型,并且可以模拟多种不同的系统。此外,LabVIEW还提供了丰富的可视化工具,可以帮助我们更好地理解系统的运行情况。LabVIEW主要用于开发测量或控制系统。Modelica是一种用于建模和仿真复杂系统的面向对象的编程语言。它提供了一种灵活的方法来描述系统的行为,并且可以用于模拟和分析复杂的系统。Modelica语言支持多种类型的模型,包括动态系统、静态系统、热系统、流体系统和电气系统。它还支持多种类型的仿真,包括时间域仿真、频率域仿真和状态空间仿真。OpenModelica属于开源模拟软件包。OpenModelica是一个功能强大的多功能工具,可用于模拟各种系统。它被设计为易于使用,并具有广泛的功能,包括一个预先构建的模型库、一种强大的编程语言和一个图形用户界面。Dymola基于Modelica语言提供一个基于模型的仿真环境,它可以用于模拟和分析复杂的系统。它提供了一个可视化的编程环境,可以帮助用户快速构建模型,并使用图形化的工具进行模拟和分析。与Matlab/Simulink不同,Dymola支持模型驱动的仿真,可以更好地模拟复杂的系统。此外,Dymola还支持多种仿真技术,如动态系统建模、模型验证和可视化等。Scilab是一款开源的科学计算软件,它可以用于数值计算、矩阵运算、绘图、科学可视化、数据分析、模拟仿真等。它拥有丰富的函数库,可以满足各种科学计算需求。Scilab可以运行在Windows、Linux、Mac OS X等操作系统上,支持多种编程语言,如C、C++、Fortran等,可以与其他软件进行交互,如Matlab、Maple、Mathematica等。总体来说,对于控制、通信、电气等相关领域的理论研究推荐MATLAB/Simulink,LabVIEW则推荐用于测控系统,Modelica是一种编程语言,其自带的求解器较为弱,偏好该语言的用户可以尝试Dymola等相关软件,Scilab则是一个较为小众的开源软件。
为了研究、分析、设计和实现一个系统,必然需要进行对系统的试验。试验的方法可以分为两大类:一种是直接在真实系统上进行试验,一种则是根据系统的组成要素和要素间的相互作用,将系统抽象为模型,对模型进行试验。系统模型通常分为物理模型、概念模型和数学模型。本文重点论述基于数学模型描述的系统。通过对系统建模进行试验和结果分析,就是所谓的“系统仿真”。直接在真实系统上进行试验,显然更有助于系统的研究分析,而系统仿真不可能完全符合系统实际运行情况,那么为什么要进行系统仿真呢?一言以蔽之,系统仿真为系统设计和系统分析提供了成本较低的有力支持。以载人航天工程为例,其一,在系统设计阶段,真实的系统尚未建立,如何了解和验证系统的性能?载人航天作为举国体制下的重要工程,牵一发而动全身,在给出最终系统方案之前,必然要先确定所采用方案中系统的性能,但若为每一个方案都搭建一套真实的系统,在资源和人力上显然是不可承受的,系统仿真在这种情况下就为系统设计提供了有力支持;其二,在真实系统上进行试验可能引起系统破坏或故障,如果用真实的飞船搭载火箭进行发射试验,过程中不可避免会对系统产生破坏,其成本必然是高昂的,通过系统仿真可以减少试验成本;其三,在实际的发射过程会遇到各种复杂的随机问题,如何在试验阶段对其进行预测和提出解决方案呢?另一方面,某些系统在多次实验中要求相同的试验条件,如此才能更好地评估性能和发现问题,这在实际环境下是不可能实现的,而系统仿真则可以对同一试验条件的精准再现;其四,对于载人航天来说,每一次发射都要耗费漫长的时间和高昂的金钱成本,次次都在真实的系统上进行试验成本过高,系统仿真既节省了试验时间,又降低了试验成本。仿真的基本方法是建立系统的结构模型和量化分析模型,对模型进行仿真试验。根据模型的不同,可以将系统仿真方法分为三类:物理仿真、数学仿真和半实物仿真。物理仿真是按照真实系统的物理性质构造系统的物理模型,并在物理模型上进行试验。物理仿真虽然直观形象,但具有较多实验限制,且成本较高。数学仿真是对实际系统进行抽象,并将其特性用数学关系加以描述而得到系统的数学模型,将其转换为适合计算机编程的仿真模型,进行仿真试验。现代计算机技术的发展为系统仿真提供了条件。数学仿真在通信、控制、电力等多个工程和科研领域具有广泛应用。图1、图2是系统仿真的简单示例。 图1 双质量-弹簧-阻尼系统 图2 低通RC滤波器由于连续系统和离散系统的数学模型具有很大差别,所以数学仿真可以分为连续系统仿真和离散系统仿真。半实物仿真则是对物理仿真和数学仿真的综合应用,即对系统中运行规律明确的部分且简单的部分进行数学仿真,规律不明确或难以数学建模的部分进行物理建模,二者联合起来完成仿真试验。例如在通信领域,对一个通信设备的系统仿真,除了通过数学建模完成对其通信系统的仿真分析,还要通过对设备使用环境进行物理仿真,以确保设备在真实环境下的运转情况。系统仿真是科研和工程领域不可缺少的环节,对工程技术和科学研究的发展具有重要意义。 [1] 福州大学《系统仿真技术》研究生课程[2] http://www.bilibili.com/video/BV16E411A7zv?p=3&vd_source=f52c61024bca044c638d9c2fb92b3ede.
1、系统的思想系统的思想从古到今一直发生着演变。中国古代文化中的系统思想主要体现在对世界的认识和解释上,如《道德经》中的“道生一,一生二,二生三,三生万物”,论证了世间万物由要素组成,要素之间存在相互联系相互作用;又如春秋战国诸子百家对军事、自然、社会等现象进行讨论,形成了中国独有的军事、自然科学和社会伦理体系,并将其应用于具体的工程项目。近现代西方的系统思想则更关注系统的运行规律,其数学、物理、化学、生物学等基础科学和自然科学的发展,使人类对自然系统的组成、要素关系和运行规律等方面的认识取得了突破性成果,发展和完善了科学的方法论。2、系统的定义这里引用钱学森的观点给出“系统”的定义:系统是由相互作用相互依赖的若干部分结合而成的、具有特定功能的有机整体,而且这个有机整体又是它从属的更大系统的组成部分。由此可以提炼出认识一个系统的关键点在于组成系统的要素和各要素如何相互作用。根据系统层次结构的复杂程度,可以将系统分为简单系统和复杂系统:直接由要素构成的两层次系统称为简单系统,由多层子系统按照一定结构构成的系统称为复杂系统。例如,中国载人航天工程就是一个复杂系统,由航天员系统、空间应用系统、载人飞船系统、货运飞船系统、长征二号F运载火箭系统、长征七号运载火箭系统、长征五号B运载火箭系统、酒泉发射场系统、文昌发射场系统、测控通信系统、空间实验室系统、空间站系统、着陆场系统和光学舱系统等十四大系统组成,各个系统又由若干个子系统构成,如测控通信系统就包含雷达系统、光学系统等子系统。 图1 中国载人航天工程系统组成此外,按照时间和状态变量的取值特性,可以将系统分为连续、离散系统和混合系统状态变量随时间连续变化的系统称为连续系统;时间变量和状态变量均只取有限个离散值的系统称为离散系统;兼具连续和离散成分的系统称为混合系统。按照系统要素之间的关系或模型的形式,可以将系统分为线性系统和非线性系统:要素之间的关系能够用线性数学模型描述的系统称为线性系统,否则称为非线性系统。除此之外,还有其他的对系统的分类方式,如封闭系统和开放系统、动态系统和静态系统等。 [1]中国载人航天官方网站 中国载人航天工程网 http://www.cmse.gov.cn/gygc/xtzc/htyxt/。[2] 钱学森.论宏观建筑与与微观建筑:杭州出版社,2001
北太天元的开发者社区是一个新的尝试,他和北太天元软件是相依为命的,没有社区的健康成长,我们的软件就不可能获得大幅度功能扩展,不可能在不断地锤炼中提升,也终将无法成长为为国家科技的自立自强承担责任的产品,此社区对我们软件的意义是生死攸关的。 在我们的理想中,这个社区是所有人一起来建设、一起来拥有、一起来受益的平台。我们现在做的仅仅是为社区的建立和发展注入第一推动力,社区的未来会走向何方、会如何运作将是我们所有人共同努力的结果。任何一个人的力量都会影响到社区的成长方向,每个人都可以有非凡的贡献,这是我们心目中的理想国。 我们期待着这个社区如果能够集合出大家的力量,做一件成功的案例,这样就可以鼓励所有的国人,自信地知道我们也可以在这种模式下,达成过去无法想象其可以成功的任务,最终在各个不同的领域完成类似的、或者是更加辉煌的构建,为引领全球的新时代作出最基础的砖瓦来。 在此我呼吁所有的人们,来和我们一起吧!希望您在我们的开发者社区之中,找到帮助、交到朋友、建立成就感、收获美好人生!