0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Wolfram语言与Mathematica 13.2 版本(6)

哲想软件 来源:哲想软件 2023-02-21 09:33 次阅读

国际象棋作为可计算数据

我们使用Wolfram 语言的目标是使尽可能多的可计算性。版本13.2 添加了另一个域- 国际象棋 -支持导入 FEN和 PGN 国际象棋格式:

e7ae2426-b183-11ed-bfe3-dac502259ad0.png

PGN文件通常包含许多游戏,每个游戏都表示为FEN字符串的列表。这将计算特定PGN文件中的游戏数量:

e7da0f6e-b183-11ed-bfe3-dac502259ad0.png

这是文件中的第一个游戏:

e7f65fd4-b183-11ed-bfe3-dac502259ad0.png

鉴于此,我们现在可以使用Wolfram 语言的视频功能来制作游戏视频:

e812f964-b183-11ed-bfe3-dac502259ad0.png

控制失控计算

早在1979 年,当我开始构建SMP(Wolfram语言的前身)时,我做了一件对某些人来说似乎非常大胆,甚至可能是鲁莽的事情:我建立系统从根本上进行“无限评估”,也就是说,继续使用任何给定的定义,直到无能为力。换言之,评价过程将一直持续到达到一个固定点。“但是如果x没有值,你说x= x + 1会发生什么?”人们会问。“那样的话,系统不会爆炸吗?”嗯,从某种意义上说是的。但我赌了一把,人们真正想做的对普通计算进行无限评估的好处将远远超过任何看似“毫无意义的极端情况”(如x = x + 1)可能出现的问题。好吧,43年后,我想我可以自信地说,那场赌博成功了。无限评估的概念- 结合 Wolfram语言的符号结构 -一直是巨大力量的源泉,大多数用户根本就没有遇到过,也永远不必考虑x = x + 1 的“极端情况”。

但是,如果您键入x = x +1,则系统显然必须执行某些操作。从某种意义上说,最纯粹的事情就是永远继续计算。但是34年前,这导致了实际计算机上的灾难性问题-事实上今天仍然如此。因为一般来说,这种重复评估是一个递归过程,最终必须使用操作系统为每个程序实例设置的调用堆栈来实现。但是操作系统的工作方式(仍然!)是为堆栈只分配固定数量的内存- 如果这被溢出,操作系统只会让你的程序崩溃(或者,在早期,操作系统本身可能会崩溃)。这意味着从版本1 开始,我们就需要在无限评估方面有一个限制。在早期版本中,我们试图给出“到目前为止的计算结果”,包装在Hold 中。回到版本10,我们开始只返回原始表达式的保留版本:

e834730a-b183-11ed-bfe3-dac502259ad0.png

但即使这样在某种意义上也不安全。因为有了其他无限的定义,人们最终可能会遇到这样一种情况:即使试图返回持有的形式也会触发额外的无限计算过程。

最近,特别是随着我们对多计算的探索,我们决定重新审视如何限制无限计算的问题。在某个理论层面上,人们可以想象使用超限数之类的东西明确表示无限计算。但这充满了困难,并且具有明显的不可判定性(“这个无限计算输出真的和那个一样吗?”等)。但是在版本13.2 中,作为一种新的“纯符号”“失控计算”方法的开始,我们引入了构造TerminatedEvaluation——正如它所说,它只是象征性地表示终止计算。

所以这是现在x = x + 1 发生的情况:

e84f607a-b183-11ed-bfe3-dac502259ad0.png

这样做的一个显着特征是它是“独立封装的”:计算的一部分的终止不会影响其他部分,因此,例如,我们得到:

e871b47c-b183-11ed-bfe3-dac502259ad0.png

终止评估和延迟评估之间存在复杂的关系,我们正在开发该领域一些有趣且可能强大的新功能。但就目前而言,终止评估是在计算失控的极端情况下提高系统“安全性”的重要结构。引入它使我们能够解决多年来围绕复杂失控计算的“理论上无法解决”的问题。

终止评估是如果您遇到像$RecursionLimit这样的系统范围的“护栏”,您会遇到的情况。但在版本13.2 中,我们还加强了对显式请求中止的处理— 通过将新选项“PropagateAborts 添加到CheckAbort”。一旦生成了中止(直接使用Abort[ ]),或者由于TimeConstrained[ ] 或MemoryConstrained[]之类的结果生成了中止,就会出现中止应该传播多远的问题。默认情况下,它会一直向上传播,因此您的整个计算最终将被中止。但是从版本2(1991年)开始,我们就有了函数CheckAbort,它检查给定表达式中的中止,然后停止中止的进一步传播。

但是在诸如时间约束[]之类的问题上总是有很多棘手之处。由这些生成的中止是否应该以与中止[] 中止相同的方式传播?在版本13.2 中,我们现在已经清理了所有这些,并使用显式选项PropagateAborts forCheckAbort。使用PropagateAborts→True,所有中止都会被传播,无论是由Abort[]还是TimeCompated[]或其他什么启动。传播中止→错误传播不中止。但也有PropagateAborts→Automatic,它从TimeConstrained[]等传播中止,但不从Abort[]传播中止。

另一个小列表函数

在我们永无止境的扩展和完善Wolfram语言的过程中,我们一直在寻找人们反复想要做的“大量计算工作”,我们可以为此创建具有易于理解的名称的函数。如今,我们经常在Wolfram 函数存储库中对此类函数进行原型设计,然后进一步简化其设计, 并最终在永久核心 Wolfram语言中实现它们.在版本13.2 中,此过程只产生了两个新的基本列表操作函数:PositionGreatest和 PositionSmallest。

自版本1 以来,我们一直拥有Position 函数,以及Max。但多年来,我经常发现自己需要做的事情是将这些结合起来来回答这个问题:“这个列表的最大值在哪里?当然,在Wolfram 语言中做到这一点并不难——Position[list,Max[list]]基本上就是这样做的。但是有一些边缘情况和扩展需要考虑,只有一个函数来做到这一点很方便。而且,更重要的是,现在我们有了像TakeLargest这样的函数,这个函数有一个明显的、一致的名称:PositionLargest。(我所说的“显而易见”,是指你听完之后显而易见;我们直播的设计评审会议的档案会揭示——就像经常发生的情况一样——我们实际上花了相当长的时间才确定“显而易见”。

这是位置最大和在行动:

e89d8962-b183-11ed-bfe3-dac502259ad0.png

而且,是的,它必须返回一个列表来处理“关系”:

e8ac0e88-b183-11ed-bfe3-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Wolfram
    +关注

    关注

    0

    文章

    16

    浏览量

    7726
  • 操作系统
    +关注

    关注

    37

    文章

    6825

    浏览量

    123333
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62622

原文标题:Wolfram 语言与Mathematica 13.2 版本(6)

文章出处:【微信号:哲想软件,微信公众号:哲想软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何优化 Mathematica 代码性能

    1. 理解 Mathematica 的评估机制 延迟评估(Hold) :使用 Hold 或其变体(如 HoldFirst 、 HoldAll 等)可以控制函数的评估时机,减少不必要的计算。 立即评估
    的头像 发表于 12-26 15:43 84次阅读

    Mathematica 在数据分析中的应用

    数据分析是现代科学研究和商业决策中不可或缺的一部分。随着数据量的爆炸性增长,对数据分析工具的需求也在不断增加。Mathematica,作为一种强大的计算软件,以其独特的符号计算能力和广泛的内置函数库
    的头像 发表于 12-26 15:41 63次阅读

    语言模型开发语言是什么

    在人工智能领域,大语言模型(Large Language Models, LLMs)背后,离不开高效的开发语言和工具的支持。下面,AI部落小编为您介绍大语言模型开发所依赖的主要编程语言
    的头像 发表于 12-04 11:44 117次阅读

    特斯拉FSD V13.2版本正式发布

    近日,特斯拉终于推出了其备受期待的“完全自动驾驶”软件最新版本FSD V13.2。尽管这一发布时间略晚于特斯拉此前承诺的感恩节最后期限,但在11月份结束前成功交付,仍然标志着特斯拉人工智能团队
    的头像 发表于 12-03 11:01 672次阅读

    特斯拉发布“完全自动驾驶”软件最新版本FSDV13.2

    近日,特斯拉终于推出了备受期待的“完全自动驾驶”软件最新版本——FSD V13.2。尽管此前曾承诺在感恩节之前发布,但特斯拉还是在11月份的最后时刻兑现了承诺,展现了其人工智能团队的不懈努力和重要进展。
    的头像 发表于 12-03 10:59 625次阅读

    华为MatePad Pro 13.2英寸亮相:纯血鸿蒙平板新旗舰

    近日,在华为Mate品牌盛典上,全新HUAWEI MatePad Pro 13.2英寸正式登场。作为新旗舰纯血鸿蒙平板,它带来了前所未有的创新交互体验,重新定义了平板的生产力。 这款平板机身轻薄便携
    的头像 发表于 11-27 10:32 242次阅读

    C语言数组应用计算机导论A第6讲:数组

    C语言数组应用计算机导论A第6讲:数组
    发表于 11-20 15:33 0次下载

    AMP32F407VGT6料号A版本跟C版本的差异

    有哪位大神能说下AMP32F407VGT6料号A版本跟C版本的差异
    发表于 06-29 10:46

    PwrCAN Module 13.2 | 双CAN通道+RS485通信,隔离电源,多场景通信专家

    NEWPwrCANModule13.2PwrCANModule13.2是一款通讯供电一体化的多功能模块,集成了带隔离的CAN通信接口和DC9-24V宽电压供电总线,同时内置Pwr485(带隔离)总线
    的头像 发表于 06-29 08:30 332次阅读
    PwrCAN Module <b class='flag-5'>13.2</b> | 双CAN通道+RS485通信,隔离电源,多场景通信专家

    iOS版ChatGPT支持首选语言设置中文

    近日,iOS版ChatGPT迎来了1.2024.129版本的重要更新。此次更新最显著的变化是新增了对App首选语言设置中文的支持,打破了之前仅限于其他语言的限制。
    的头像 发表于 05-17 09:31 619次阅读

    商汤科技即将推出日日新大模型5.0粤语版本

    在盛大的“新质企业家联合会”成立典礼上,商汤科技副总裁、智慧城市与商业事业群总裁张果琲宣布了一项重要消息。商汤科技即将推出日日新大模型5.0的粤语版本,这一新版本将基于大装置和强大的技术能力,为粤语语言处理带来显著的提升。
    的头像 发表于 05-13 10:58 592次阅读

    商汤将发布日日新大模型5.0粤语版本

    商汤科技即将迎来一项重要更新,他们将发布日日新大模型5.0的粤语版本。这一版本是基于商汤科技现有的大装置和日日新大模型5.0的先进能力而打造的,旨在粤语语言处理领域实现新的突破。据悉,新版本
    的头像 发表于 05-08 09:33 499次阅读

    华为MatePad Pro 13.2英寸平板电脑体验官招募,启用隔空手势功能

    华为近日启动了MatePad Pro 13.2英寸平板电脑同期验官招募,旨在收集“隔空手势”功能的使用反馈。本次活动报名时间为自2024年4月25日起至2024年5月15日止。
    的头像 发表于 04-29 15:06 1482次阅读

    荣耀在中国手机市场份额首次登顶,增幅达13.2% 

    IDC报告指出,华为在2024年第一季度市场份额同比增长达到了惊人的110.0%。尽管外界普遍认为荣耀将受此影响,但实际情况却是荣耀仍保持了13.2%的同比增长,成为前五大厂商中唯二实现市场份额同比增长的品牌。
    的头像 发表于 04-25 14:38 752次阅读

    达实智能正式发布AIoT智能物联网管控平台V6版本

    近日,在达实智能成立29周年庆典上,公司正式发布AIoT智能物联网管控平台V6版本
    的头像 发表于 03-20 16:42 1412次阅读
    达实智能正式发布AIoT智能物联网管控平台V<b class='flag-5'>6</b><b class='flag-5'>版本</b>