如何从第一性原则的原理分解数学问题

如何从第一性原则的原理分解数学问题

摘要:牛津大学入学考试题目展示了所有优秀数学家都使用的系统的第一原则推理,而GPT4仍然在这方面有困难

作者:Keith McNulty

我们中的许多人都熟悉直角三角形的边的规则。根据毕达哥拉斯定理,如果a和b是两条较短的边,c是最长的边,那么a² + b² = c²。

alt

已知的整数解称为毕达哥拉斯三元组。例如,(3, 4, 5) 和 (5, 12, 13) 就是其中的一些。

更一般的构造是三元组。任何一组可以构成三角形的正整数三元组都称为三元组

显然,整数毕达哥拉斯三元组也是三元组。但通常情况下,如果一个整数三元组 (a, b, c) 在(非严格)递增的顺序列出时,前两个整数的和严格大于第三个整数,那么它就是一个三元组。

以 (4, 2, 3) 为例。这些可以是三角形的边长,因为2 + 3 > 4。类似地,(2, 2, 2) 是一个三元组。但 (1, 3, 1) 不是三元组,因为无法用这些边长构建三角形(1 + 1 ≯ 3)。

最近牛津大学入学考试的一个问题涉及到三元组,我认为它很好地说明了如何逐步从第一原则分解问题,以解决起初看起来非常具有挑战性的问题。

这个问题定义了一个函数 f(P),其中 P > 2,表示三元组的数量,它们的和为 P。最后,它要求我们找到 f(21)。

找到和为 21 的三元组的数量似乎是一个真正的智力挑战,但是使用一些逐步的系统步骤,我们可以找到一个非常简单的计算方法。

最后,我还将展示像GPT4这样的人工智能在需要第一原则推理的这类问题上存在真正的问题。

以下是问题的各个部分和我的解决方案。我发现这是一个有趣的问题,是数学思维的很好练习,几乎不需要课本知识。

(i) 找到 f(3), f(4), f(5), f(6) 的值 这只是让我们适应思考和理解一个新概念。

由于唯一的正整数三元组,其和为三,是 (1, 1, 1),而且这显然是一个三元组,所以 f(3) = 1

任何和为 4 的正整数三元组都必须包含2。因此,另外两个数字都是1。由于1 + 1 不严格大于 2,所以不存在三元组,因此 f(4) = 0。

任何和为 5 的正整数三元组都必须包含2或3,但不能同时包含。如果它包含3,那么其他两个必须都是1,而这不是三元组。如果它包含2,那么其他两个必须是1和2,这是一个三元组。

因此,(2, 2, 1),(2, 1, 2) 和 (1, 2, 2) 都是这样的三元组,所以 f(5) = 3。

任何和为 6 的正整数三元组必须包含一个4和两个1(不是三元组),一个3、2和1各一个(不是三元组),或者三个2(是三元组)。

因此,唯一的三元组是 (2, 2, 2),因此 f(6) = 1。

(ii) 如果 (a, b, c) 是一个三元组,证明 (a+1, b+1, c+1) 也是一个三元组

首先注意,我们总是可以假设 a, b, c 是(非严格)递增的顺序,因为如果它们不是,我们可以简单地重新排列它们,使它们变成递增的。

这种推理在这个问题的大多数部分都很重要。

现在,由于 a+b > c,我们可以说 (a+1) + (b+1) = (a+b)+2 > c+2 > c+1。因此,(a+1, b+1, c+1) 是一个三元组。

(iii) 如果 (x, y, z) 是一个三元组,x+y+z 是偶数且不小于 6,证明 x, y 和 z 都至少为 2,并且 (x-1, y-1, z-1) 也是一个三元组

再次假设 x, y, z 是递增的。为了证明它们都至少为 2,我们只需要证明 x 不能为 1。假设 x = 1。然后 1+y+z 是偶数,所以 y+z 是奇数。

此外,我们有 1+y > z,所以 y > z -1,因此 y ≥ z。但我们知道 y ≤ z,因此 y = z。所以 y+z 是偶数。

这是一个矛盾,所以 x > 1。

(iv) 证明对于任何大于等于 3 的正整数 k,f(2k-3) = f(2k) 根据第二部分,我们知

道任何和为 2k-3 的三元组都可以通过简单地对每个整数加 1 映射到和为 2k 的三元组。

这意味着和为 2k 的三元组集合至少和和为 2k-3 的三元组集合一样大。

根据第三部分,由于 2k 是偶数且不小于 6,我们知道我们可以通过从每个整数中减去 1 来将和为 2k 的三元组唯一映射到和为 2k-3 的三元组。

这意味着和为 2k-3 的三元组集合至少和和为 2k 的三元组集合一样大。

因此,两个集合必须具有相同的大小,因此 f(2k-3) = f(2k)。

(v) 设 S ≥ 3,令 P = 2S。证明 (a, b, c) 是和为 P 的三元组,如果且仅如果 a, b, c 中的每一个都严格小于 S

这是一个“如果且仅如果”的证明,所以我需要在两个方向上证明它。

再次假设 a, b, c 是递增的,并且它们的和为 P。

首先,我们需要证明如果 a+b > c,那么 c < S。假设 c ≥ S。然后 a+b > c ≥ S,所以 a+b+c > 2S = P。这是一个矛盾,所以 c < S。

现在我们需要证明如果 c < S,那么 a+b > c。如果 c < S,那么 2S-c > S > c。但是 a+b+c = P = 2S,所以 a+b = 2S-c。因此 a+b > c。

(vi) 对于任何 2 ≤ a ≤ S-1,证明使得 (a, b, P-a-b) 成为一个三元组的可能值的 b 的数量为 a-1

根据第五部分,P-a-b = 2S-a-b ≤ S-1。所以 S-a+1 ≤ b。但同时 b ≤ S-1。因此,对于任何特定的 a 值,b 的值可以在 S-a+1 到 S-1 之间变化。

因此,可能的 b 的总数是 (S-1)-(S-a) = a-1。

(vii) 找到任何大于等于 6 的偶数 P 的 f(P) 的表达式

让 (a, b, P-a-b) 是和为 P 的三元组,其中 P 是偶数且不小于 6。根据第三部分和第五部分,我们知道 a 可以从 2 变到 S - 1,而根据第六部分,对于每个这样的 a 值,都有 a-1 个 b 值。

所以我们的 f(P) 的表达式可以如下推导:

alt

(viii) 找到 f(21)

根据第四部分,f(21) = f(24)。由于 24 是偶数且大于 6,我们可以使用第七部分的新公式,取 S = 12,得到答案是 55。

让我们使用Python 和 R 中的一个简单计数函数来双重检查:

Python

def n_triangular_triples(P):
    check = []

    for a in range(1, P + 1):
        for b in range(1, P - a + 1):
            if P - a - b > 0:
                sorted_triplet = sorted([a, b, P - a - b])
                if sum(sorted_triplet) == P and sorted_triplet[0] + sorted_triplet[1] > sorted_triplet[2]:
                    check.append(1)

    return sum(check)

# 测试 P = 21
result = n_triangular_triples(21)
print(result)

R

# 简单计算和为 P 的三元组的函数
n_triangular_triples <- function(P) {
  check <- c()

  for (a in 1:P) {
    for (b in 1:(P - a)) {
      if (P - a - b > 0) {
        sorted <- sort(c(a, b, P - a - b))
        if ((sum(sorted) == P) && (sorted[1] + sorted[2] > sorted[3])) {
          check <- append(check, 1)
        }
      }
    }
  }
  sum(check)
}
# 测试 P = 21
n_triangular_triples(21)
[1] 55

当然,我们还可以使用我们的新公式来计算更大的 P 的 f(P)。

例如,f(997) = f(1000) = 124,251。

我们可以使用 Python或R 中的函数来检查,如果您愿意等待几秒钟让它遍历所有可能的三元组。

n_triangular_triples(997)
[1] 124251

GPT4 在这方面的表现如何?

并不好,尽管它渴望解释三角不等式定理,但如下所示,它的表现并不理想。我提出了三次问题,得到的答案分别是 100、22 和 190。看来真正的智能没有替代品!

您对这个问题有何看法?欢迎发表评论。

本文由 mdnice 多平台发布

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

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

相关文章

2023年墨西哥 SP/BMV IPC 研究报告

第一章 指数概况 1.1 指数基本情况 墨西哥 S&P/BMV IPC 指数衡量在墨西哥证券交易所 (Bolsa Mexicana de Valores, BMV)上市&#xff0c;规模最大、流动性最高的股票表现。提供一个覆盖墨西哥股市的广泛、具有代表性且可轻易复制的指数。根据多元化要求&#xff0c;按市值…

【深度学习】 Python 和 NumPy 系列教程(廿五):Matplotlib详解:3、多子图和布局:subplot()函数

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 3、多子图和布局 1. subplot()函数 简单示例 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名&#xff0c;并且具有强大的功能…

使用Selenium和Python自动预订车票

在本文中&#xff0c;我们将探讨如何使用Selenium和Python自动预订车票。我们将以12306.cn网站为例&#xff0c;演示自动化预订车票的过程。通过阅读本文&#xff0c;您将更好地了解如何使用Selenium与网页进行交互。 准备工作 首先&#xff0c;我们需要安装Selenium库。您可…

多表查询——“MySQL数据库”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容是MySQL数据库中的多表查询啦&#xff0c;这个内容确实是一个难点&#xff0c;下面&#xff0c;让我们进入多表查询的世界吧&#xff01;&#xff01;&#xff01; 一个案例引发的多表连接 多表查询分类讲解 SQL9…

bootstrap table export的使用,bootstrap table表格前端导出

第一步&#xff1a;html页面导入2个JS文件 1.依赖文件tableExport.js&#xff0c;该文件的内容如下&#xff1a; use strict;(function ($) {$.fn.tableExport function (options) {let docData;const defaults {csvEnclosure: ",csvSeparator: ,,csvUseBOM: true,dat…

vue前端拿到后端pdf与zip等重新打包为一个新的zip包

目录 vue前端拿到后端pdf与zip等重新打包为一个新的zip包code.vue vue前端拿到后端pdf与zip等重新打包为一个新的zip包 code.vue const urlList [{fileUrl:https://XX.zip,fileName:我是文件.zip},{fileUrl:https://XXX.pdf,fileName:我是pdf.pdf}]this.downloadZip(urlList)…

精品SpringCloud的高校招生信息管理系统-微服务分布式

《[含文档PPT源码等]精品基于SpringCloud实现的高校招生信息管理系统-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;springcloud JDK版本&#x…

FL Studio v21.1.1.3750 Producer Edition inc crack官方中文免费激活版功能介绍及百度网盘下载

FL Studio v21.1.1.3750 Producer Edition inc crack官方中文免费激活版是一款功能强大的软件音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。它代表了25多年的创新发展&#xff0c;在一个软件包中拥有您所需的一切&#xff0c;以创作、编排、录制、编辑、混音和掌…

Python--测试代码

目录 1、使用pip安装pytest 1.1 更新pip 1.2 安装putest 2、测试函数 2.1 单元测试和测试用例 2.2 可通过的测试 2.3 运行测试 2.4 未通过的测试 2.5 解决测试未通过 2.6 添加新测试 3、测试类 3.1 各种断言 3.2 一个测试的类 3.3 测试AnonymousSurvey类 3.4 使…

Linux命令200例:dip用于用户与远程主机建立通信连接

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

主题教育活动知识竞赛小程序界面分享

主题教育活动知识竞赛小程序界面分享

数据结构:数组

文章目录 数组一&#xff0c;概述二&#xff0c;添加数据三&#xff0c;删除数据 数组 一&#xff0c;概述 数组是一种线性表数据结构&#xff0c;它用一组连续的内存空间来存储一组具有相同类型的数据。 数组可以被视为一块连续的内存&#xff0c;即使物理上不连续&#xf…

微服务保护-授权规则

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

lighttpd以及socket和WebSocket编程

综述 本文涉及到下图绿色背景部分的内容&#xff1a; 左侧位于Linux下&#xff0c;其中包括lighttpd和socket程序&#xff1b;右侧是WebSocket程序。两者通过网络交互。 本文介绍lighttpd的基本使用方式&#xff0c;并通过编程完成一个socket服务器与浏览器端的WebSocket客户…

本地docker注册证书docker login连接到harbor仓库、利用shell脚本将大量镜像pull、tag、push到私有harbor仓库

1. 本地docker注册证书docker login连接到harbor仓库&#xff1a; 我们使用docker login/push/pull去与Harbor打交道&#xff0c;上传下载镜像等。 但是可能会出现x509: certificate signed by unknown authority之类的错误。 [roottest01 harbor.dev]# docker login harbor.d…

递归算法实现二分查找c++

递归算法可以用来实现二分查找。二分查找是一种高效的搜索算法&#xff0c;适用于已排序的数组。下面是使用递归算法实现二分查找的示例代码&#xff1a; #include <iostream> using namespace std;// 递归二分查找函数 int binarySearch(int arr[], int low, int high,…

数学建模__动态规划

动态规划就是&#xff0c;将任务每一步均记录下来&#xff0c;以便将来重复使用时能够直接调用 问题描述&#xff1a;给定n个物品&#xff0c;每个物品的重量是Wi,价值是Vi&#xff0c;但是背包最多能装下capacity重量的物品&#xff0c;问我们如何选择才能利益最大化。 这里涉…

Oracle的 dblink 学习笔记

文章目录 一、基础环境二、适用场景三、过程和方法四、参考资料 版权声明&#xff1a;本文为CSDN博主「杨群」的原创文章&#xff0c;遵循 CC 4.0 BY-SA版权协议&#xff0c;于2023年9月10日首发于CSDN&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;http…

Python | 根据子列表中的第二个元素对列表进行排序

在本文中&#xff0c;我们将学习如何根据主列表中存在的子列表的第二个元素对任何列表进行排序。 比如 Input : [[‘rishav’, 10], [‘akash’, 5], [‘ram’, 20], [‘gaurav’, 15]] Output : [[‘akash’, 5], [‘rishav’, 10], [‘gaurav’, 15], [‘ram’, 20]] Input …

信息化发展47

需求分析 1 、软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。 2 、根据IEEE 的软件工程标准词汇表&#xff0c; 软件需求是指用户解决问题或达到目标所需的条件或能力&#xff0c; 是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的…