前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >“神奇”的拉马努金矩阵

“神奇”的拉马努金矩阵

作者头像
滚神大人
发布于 2019-09-10 11:47:54
发布于 2019-09-10 11:47:54
1K00
代码可运行
举报
文章被收录于专栏:趣Python趣Python
运行总次数:0
代码可运行

我们先来聊聊拉马努金。

斯里尼瓦瑟·拉马努金(泰米尔语:ஸ்ரீனிவாஸ ராமானுஜன் ஐயங்கார்,ISO 15919转写:Srīṉivāsa Rāmāṉujan Aiyaṅkār,又译拉马努詹、罗摩奴詹,1887年12月22日-1920年4月26日)是那个年代最神奇的数学天才之一。尽管没有受过高等教育,他却沉迷数论,尤爱牵涉π、质数等数学常数的求和公式,以及整数分拆。(来自维基百科)

他是20世纪的天才数学家,却英年早逝。

他自学成才却留下了大量没有留下证明的公式,启发了后来的大量研究。

他的伯乐哈代(注:就是那个《哈代数论》的作者)曾在对他的一次采访中说他自己对数学最伟大的贡献是发现了拉马努金,并把拉马努金的天才比作至少和数学巨人欧拉(e^iπ + 1 = 0,了解一下)和雅可比(雅可比行列式,记得吧!)的相当。

“每个正整数都是拉马努金的朋友。”

感兴趣的朋友可以去看一下2015年出的电影《知无涯者》。

我们今天来研究下神奇的拉马努金矩阵。

<此动图由excel,画图板和Python程序生成>

这个矩阵的第一行是拉马努金的生辰。然后这个矩阵的行,列,对角线,动图中所有颜色相同的数之和均等与第一行之和,即139。

我们今天用程序来推导下这个矩阵是否有唯一解?是否神奇?

首先,4维矩阵总共有16个变量,第一行变量已经确定,那么剩余12个变量,恒等式的数量肯定超过了12个,需要对多余的变量做检验即可。

我们发现,在4维矩阵中,只要再假定2个变量,就可以推导出其他所有的变量,我们再检查其他的变量就好了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding=utf-8

'''
拉瓦努金矩阵
ref1 -> https://www.imsc.res.in/~rao/ramanujan/newnow/magicsqr.htm
ref2 -> http://leninkumarkoppoju.blogspot.com/2014/07/ramanujans-magic-square.html

22    12    18    87
88    17    9     25
10    24    89    16
19    86    23    11
'''

(a, b, c, d) = (22, 12, 18, 87)
#(a, b, c, d) = (12, 17, 19, 96)
(e, f, g, h) = (0, 0, 0, 0)
(i, j, k, l) = (0, 0, 0, 0)
(m, n, o, p) = (0, 0, 0, 0)

def check_single_not_suit(checked, all):
    return (checked in all) or (checked <= 0)

def check_SR_magic_sqr(abcd):
    count = 0
    a, b, c, d = (abcd)
    x = 4*max(abcd)
    y = sum(abcd)

    for f in range(1, x):
        for k in range(1, x):
            all = [a, b, c, d, f]
            if check_single_not_suit(k, all):continue
            all.append(k)
            p = y - a - f - k
            if check_single_not_suit(p, all):continue
            all.append(p)
            e = y - a - b - f
            if check_single_not_suit(e, all):continue
            all.append(e)
            m = y - a - d - p
            if check_single_not_suit(m, all):continue
            all.append(m)
            i = y - a - e - m
            if check_single_not_suit(i, all):continue
            all.append(i)
            j = y - e - f - i
            if check_single_not_suit(j, all):continue
            all.append(j)
            n = y - b - f - j
            if check_single_not_suit(n, all):continue
            all.append(n)
            o = y - m - n - p
            if check_single_not_suit(o, all):continue
            all.append(o)
            g = y - c - k - o
            if check_single_not_suit(g, all):continue
            all.append(g)
            h = y - e - f - g
            if check_single_not_suit(h, all):continue
            all.append(h)
            l = y - d - h - p
            if check_single_not_suit(l, all):continue
            all.append(l)
            if ((y == c + d + g + h) and (y == i + j + m + n) and \
                (y == k + l + o + p) and (y == i + j + k + l) and \
                (y == b + c + n + o) and (y == e + i + h + l) and \
                (y == d + g + j + m) and (y == f + g + j + k) and \
                (y == b + e + l + o) and (y == c + h + i + n) and \
                (y == g + h + k + l)):
                print(a, b, c, d)
                print(e, f, g, h)
                print(i, j, k, l)
                print(m, n, o, p)
                print('\n')
                count += 1
    return count

def main():
    count = check_SR_magic_sqr((a, b, c, d))
    print('total count is {}'.format(count))

if __name__ == "__main__":
    main()
    pass

结果表明,并没有唯一解,有很多解。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ...
(22, 12, 18, 87)
(57, 48, 20, 14)
(31, 3, 68, 37)
(29, 76, 33, 1)


(22, 12, 18, 87)
(56, 49, 23, 11)
(33, 1, 66, 39)
(28, 77, 32, 2)


(22, 12, 18, 87)
(56, 49, 21, 13)
(32, 2, 67, 38)
(29, 76, 33, 1)


total count is 228
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 趣Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
12:变幻的矩阵
12:变幻的矩阵 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 有一个N x N(N为奇数,且1 <= N <= 10)的矩阵,矩阵中的元素都是字符。这个矩阵可能会按照如下的几种变幻法则之一进行变幻(只会变幻一次)。  现在给出一个原始的矩阵,和一个变幻后的矩阵,请编写一个程序,来判定原始矩阵是按照哪一种法则变幻为目标矩阵的。  1. 按照顺时针方向旋转90度;  如:  1 2 3        7 4 1 4 5 6 变幻为  8 5 2 7 8 9     
attack
2018/04/11
9070
While 循环语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。当然也可以遍历所有的字符串,列表,元祖等。 其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。 当判断条件假false时,循环结束。 for 循环一般是用在一个有次数的循环上。 while 循环用在有条件的控制上。 来个容易上手的例子: n = 0 ## 给n赋值初始
老七Linux
2018/05/09
1.9K0
CVE-2020-16875 Exchange 命令执行漏洞
https://x41-dsec.de/security/advisory/exploit/research/2020/12/21/x41-microsoft-exchange-rce-dlp-bypass/
Khan安全团队
2020/12/28
6230
Python基础(九) | time random collections itertools标准库详解
(2)time.perf_counter()   随意选取一个时间点,记录现在时间到该时间点的间隔秒数,记录sleep
timerring
2022/10/06
6610
Python基础(九) | time random collections itertools标准库详解
Archived | 307-09-矩阵
定义矩阵A,B,其中A的大小为a \times b,B的大小为b \times c,对于矩阵C=AB中的每一个元素C(i.j),~i\in [1, a],~j\in [1,c],存在以下:
gyro永不抽风
2021/05/21
6250
谷歌造出拉马努金机:几毫秒求解数学常数,无需任何先验信息
π和e这样的基本常数在科学领域中无处不在,但计算它们的高精度近似值往往令人头大。如今,机器学习或许能帮上大忙。
量子位
2019/07/15
1.1K0
谷歌造出拉马努金机:几毫秒求解数学常数,无需任何先验信息
Data Structures and Algorithms Basics(012):Graph
Graph 目录: 第一部分、创建图: 1,矩阵表示法 2,列表表示法 第二部分、搜索(DFS/BFS): 1,深度优先搜索(DFS) 2,广度优先搜索(BFS) 3,Dijkstra算法 第三部分、相关练习题 1,迷宫(1) 2,迷宫(2) 3,迷宫(3) 4,迷宫(4) 5,Flood Fill 6,Friend Circles 7,Number of Islands 8,Max Area of Island 9,Employee Importance 10, Is Graph Bipartite 11
用户5473628
2019/08/08
5870
Data Structures and Algorithms Basics(017):String
# 1,偶数子串的数量: def evenNum(s): count = 0 for i in range(len(s)): if int(s[i]) % 2 == 0: count += i + 1 return count if __name__ == '__main__': evenNum("1234") # 2,出勤记录: def checkRecord(self, s): return not (s.count('A
用户5473628
2019/08/08
5200
java数据结构和算法(七)
1. 二分查找(非递归) 代码实现 public class BinarySearchNoRecursion { public static void main(String[] args) { int[] arr = {1, 23, 46, 413, 880, 999}; int index = binarySearch(arr, 999); System.out.println(index); } /** * 二分查找
shaoshaossm
2022/12/26
4760
java数据结构和算法(七)
【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )
颜色模式 : 将 某种颜色 表现为 数字形式 的模型 , 即记录图像颜色的方式 ; 下面是 所有的 颜色模式 :
韩曙亮
2023/03/27
1.4K0
用 MySQL 批量生成强密码
validate_password 是 MySQL 默认的密码管理策略插件,可通过配置对用户密码长度、强度进行管理。
用户1148526
2024/07/26
2100
Python 小型项目大全 41~45
在这个碰运气游戏中,你掷骰子来收集星星。你掷得越多,你能得到的星星就越多,但是如果你得到三个头骨,你就失去了一切!这款快速多人游戏可以支持任意多的玩家,是聚会的理想选择。
ApacheCN_飞龙
2023/04/12
7760
911完整记录_入院记录书写
1.OPatch替换为最新版本 2.数据库软件应用19121551补丁程序 3.数据库应用补丁 4.验证PSU补丁是否应用成功
全栈程序员站长
2022/11/19
2.7K0
河南工程学院第六届程序设计竞赛-A组-题解
HF 告诉 LYS 说:“我最近学习了二分开根号!!!” LYS 说:“那我给你出一个开五次方根的题目!” HF 感觉太简单了,就来找你们解决这个问题。
浪漫主义狗
2023/12/18
2670
河南工程学院第六届程序设计竞赛-A组-题解
面试常问的小算法总结
需要说明的是,由于算法的代码实现主要注重思路的清晰,下方有代码实现的文章主要以Python为主,Java为辅,对于Python薄弱的同学敬请不用担心,几乎可以看作是伪代码,可读性比较好。如实在有困难可以自行搜索Java代码
蛮三刀酱
2019/03/26
5680
面试常问的小算法总结
Tokenizer的系统梳理,并手推每个方法的具体实现
Tokenizer分词算法是NLP大模型最基础的组件,基于Tokenizer可以将文本转换成独立的token列表,进而转换成输入的向量成为计算机可以理解的输入形式。本文将对分词器进行系统梳理,包括分词模型的演化路径,可用的工具,并手推每个tokenizer的具体实现。
zenRRan
2023/09/11
3.7K0
Tokenizer的系统梳理,并手推每个方法的具体实现
[Atcoder][CF]简单题选做练习笔记 2
第一个式子,要求 p_i \equiv 0 \pmod 3,第二个式子要求 p_i \equiv 1 \pmod 3 且 p_j \equiv 2 \pmod 3 或者反过来。
Clouder0
2022/09/23
3950
CCPC 2021 哈尔滨站
A_i = 2^{i-1} \bmod M,给出 A,找出模数。如果模数不唯一,则无解。
Clouder0
2022/11/01
1.4K0
大学课程 | 《算法分析与设计》笔记
程序与算法的区别:程序可以不满足算法的第四点性质即有限性。例如操作系统,是在无限循环中执行的程序。
Justlovesmile
2021/12/14
1.1K0
【LDA数学八卦-1】神奇的Gamma函数
1. 神奇的Gamma函数 1.1 Gamma 函数诞生记 学高等数学的时候,我们都学习过如下一个长相有点奇特的Gamma函数 Γ(x)=∫∞0tx−1e−tdt 通过分部积分的方法,可以推导出这个函数有如下的递归性质 Γ(x+1)=xΓ(x) 于是很容易证明,Γ(x) 函数可以当成是阶乘在实数集上的延拓,具有如下性质 Γ(n)=(n−1)! 学习了Gamma 函数之后,多年以来我一直有两个疑问: 这个长得这么怪异的一个函数,数学家是如何找到的; 为何定义 Γ 函数的时候,不使得这个函数的定义满足
机器学习AI算法工程
2018/03/12
3.4K0
【LDA数学八卦-1】神奇的Gamma函数
推荐阅读
相关推荐
12:变幻的矩阵
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档