黎曼猜想(一) 欧拉乘积式

素数无限的几个证明

毕达哥拉斯学派证明

公元前600~公元前500年古希腊时期,为了证明素数有无限个这个问题,毕达哥拉斯学派给出了一个证明:

素数是从2和3开始的,所以用2 * 3+1 = 7;
7是素数,所以用2 * 3 * 7+1 = 43;
43是素数,所以用2 * 3 * 7 * 43+1 = 1807;
1807不是素数,但是1807 = 13 * 139,这两个数都是素数,发现了两个新素数,我们用小的素数与那一堆相乘,所以用2 * 3 * 7 * 43 * 13 + 1 = 23479;
23479不是素数,但是23479 = 53 * 443,这两个都是素数,又发现了两个新素数;
继续往下,会一直发现新的素数,即证明素数有无限个。
毕达哥拉斯学派在当时能证明出来是非常了得,后200年又出现了这么一位神人——欧几里得!

欧几里得证明

欧几里得用的是反证法,证明如下:

先假设素数是有限个,即P1, P2, P3,…Pk;其中Pk是最大的素数;
我们用A = P1 * P2 * P3 * P4 * …* Pk + 1;即将所有素数相乘后加1;
一个自然数要么是素数要么是合数(除了1);
1、A是素数,由于Pk是素数,所以不存在比Pk还大的素数A,即A不可能是素数;
2、A是合数,由于所有的合数都可以由素数相乘得到,即A % Pi = 0,所有的素数都是A的因子,而A = 所有素数相乘 + 1,即A不可能是合数;

那么A又不是素数也不是合数,得出原命题素数有限个是错误的,即证明了素数无限个。

欧拉证明

在这里插入图片描述
在这里,我们就要介绍欧拉乘积式了,因为这也是证明素数无限个的一个证明方法。

1735年,欧拉大神发表了一个极其重要的公式,即欧拉乘积式:
∑ n = 1 ∞ n − s = ∏ p ( 1 − 1 p s ) − 1 \sum_{n =1 }^{\infty }n^{-s} = \prod_{p}(1 - \frac{1}{p^{s}})^{-1} n=1ns=p(1ps1)1

证明之前我们先需要知道以下基本知识。

我们知道调和级数是发散的,即:
在这里插入图片描述
门戈利当时提出了一个问题,全体自然数的平方倒数之和是多少呢?当时也没有解决这个问题,后来被约翰伯努利的学生欧拉解决出来了,即上上期博客的巴塞尔问题,可以自行观看,答案是:
在这里插入图片描述

后来欧拉又把这样的式子进行了拓展,即将自然数上的幂变成s,即得到这样的一个式子:
ε ( s ) = 1 + 1 2 s + 1 3 s + 1 4 s + 1 5 s + 1 6 s + . . . ( 1 ) \varepsilon (s) = 1 + \frac{1}{2^{s}} + \frac{1}{3^{s}} + \frac{1}{4^{s}} +\frac{1}{5^{s}} + \frac{1}{6^{s}}+... \qquad (1) ε(s)=1+2s1+3s1+4s1+5s1+6s1+...1

我们对左右两边同时乘以 1 2 s \frac{1}{2^{s}} 2s1,即得到:
1 2 s ε ( s ) = 1 2 s + 1 4 s + 1 6 s + 1 8 s + . . . . ( 2 ) \frac{1}{2^{s}}\varepsilon (s) = \frac{1}{2^{s}} + \frac{1}{4^{s}} + \frac{1}{6^{s}} + \frac{1}{8^{s}} + .... \qquad(2) 2s1ε(s)=2s1+4s1+6s1+8s1+....2

式(1) - 式(2) 得:

( 1 − 1 2 s ) ε ( s ) = 1 + 1 3 s + 1 5 s + 1 7 s + 1 9 s + . . . ( 3 ) (1 - \frac{1}{2^{s}})\varepsilon (s) = 1 + \frac{1}{3^{s}} + \frac{1}{5^{s}} + \frac{1}{7^{s}} +\frac{1}{9^{s}} +... \qquad (3) (12s1)ε(s)=1+3s1+5s1+7s1+9s1+...3)

这样,所有的2的倍数的自然数都消去了。

我们在对左右两边同时乘以 1 3 s \frac{1}{3^{s}} 3s1,即得到:

1 3 s ( 1 − 1 2 s ) ε ( s ) = 1 9 s + 1 1 5 s + 1 2 1 s + 1 2 7 s + . . . ( 4 ) \frac{1}{3^{s} }(1 - \frac{1}{2^{s}})\varepsilon (s) = \frac{1}{9^{s}} + \frac{1}{15^{s}} + \frac{1}{21^{s}} +\frac{1}{27^{s}} +... \qquad (4) 3s1(12s1)ε(s)=9s1+15s1+21s1+27s1+...4)

式(3) - 式(4)得:
( 1 − 1 3 s ) ( 1 − 1 2 s ) ε ( s ) = 1 + 1 3 s + 1 5 s + 1 7 s + 1 1 1 s + . . . ( 5 ) (1-\frac{1}{3^{s} })(1 - \frac{1}{2^{s}})\varepsilon (s) = 1 + \frac{1}{3^{s}} + \frac{1}{5^{s}} + \frac{1}{7^{s}} + \frac{1}{11^{s}} + ... \qquad (5) (13s1)(12s1)ε(s)=1+3s1+5s1+7s1+11s1+...(5)

有没有发现这样的一个问题,第一次相减,把所有的自然数的2倍都消去了,第二次相减,把所有的自然数的3倍都消去了,emmmm,埃拉托色尼筛法!!!

没错,理解到了这一步就已经很快了,类似的运算继续下去,我们每一步都减去 1 5 s \frac{1}{5^{s}} 5s1倍、 1 7 s \frac{1}{7^{s}} 7s1倍…也就把素数的倍数都消去。

最终得到这样一个公式:

. . . ( 1 − 1 1 3 s ) ( 1 − 1 1 1 s ) ( 1 − 1 7 s ) ( 1 − 1 5 s ) ( 1 − 1 3 s ) ( 1 − 1 2 s ) ε ( s ) = 1 ( 6 ) ...(1 - \frac{1}{13^{s}})(1 - \frac{1}{11^{s}})(1 - \frac{1}{7^{s}})(1 - \frac{1}{5^{s}})(1-\frac{1}{3^{s} })(1 - \frac{1}{2^{s}})\varepsilon (s) = 1 \qquad (6) ...(113s1)(111s1)(17s1)(15s1)(13s1)(12s1)ε(s)=1(6)

再将左边变过去,保留 ε ( s ) \varepsilon (s) ε(s),即:
ε ( s ) = 1 ( 1 − 1 2 s ) ( 1 − 1 3 s ) ( 1 − 1 5 s ) ( 1 − 1 7 s ) ( 1 − 1 1 1 s ) ( 1 − 1 1 3 s ) . . . ( 7 ) \varepsilon (s) = \frac{1}{(1 - \frac{1}{2^{s}})(1 - \frac{1}{3^{s}})(1 - \frac{1}{5^{s}})(1 - \frac{1}{7^{s}})(1-\frac{1}{11^{s} })(1 - \frac{1}{13^{s}})...} \qquad (7) ε(s)=(12s1)(13s1)(15s1)(17s1)(111s1)(113s1)...1(7)

让我们用连乘符号 ∏ \prod 简洁一下得:
∑ n = 1 ∞ n − s = ∏ p ( 1 − 1 p s ) − 1 ( 8 ) \sum_{n =1 }^{\infty }n^{-s} = \prod_{p}(1 - \frac{1}{p^{s}})^{-1} \qquad (8) n=1ns=p(1ps1)1(8)

当n = 1时,左边就是调和级数,是发散的,而右边的p是所有素数,若素数是有限个,即调和级数不发散,那怎么可能呢???所以得证素数是无限个。

欧拉大神NB!

注意:
s一定是大于1的,否则会出现一些好玩的东西,比如全体自然数之和竟然是 − 1 12 ! ! ! -\frac{1}{12}!!! 121!!!我们下期再聊。

参考:
https://www.bilibili.com/video/BV1dt4y1179j
https://www.bilibili.com/video/BV1eW411r7cp
https://www.bilibili.com/video/BV13W41167Bb

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
黎曼卷积层是一种基于黎曼流形的卷积操作,可以用来处理在流形上定义的数据,比如图像、声音等。下面是一个基于PyTorch实现黎曼卷积层的示例代码。 首先,我们需要导入PyTorch和其他相关的库: ```python import torch import torch.nn as nn import torch.nn.functional as F from collections import OrderedDict ``` 接下来,我们定义黎曼卷积层的类: ```python class RiemannConv(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, manifold, stride=1, padding=0, dilation=1, groups=1, bias=True): super(RiemannConv, self).__init__() self.in_channels = in_channels self.out_channels = out_channels self.kernel_size = kernel_size self.stride = stride self.padding = padding self.dilation = dilation self.groups = groups # 首先定义一个普通的卷积层 self.conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride=stride, padding=padding, dilation=dilation, groups=groups, bias=bias) # 然后初始化黎曼流形相关的参数 self.manifold = manifold self.manifold_dim = manifold.dim() self.weight = nn.Parameter(torch.Tensor(out_channels, in_channels // groups, kernel_size[0], kernel_size[1], self.manifold_dim, self.manifold_dim)) if bias: self.bias = nn.Parameter(torch.Tensor(out_channels)) else: self.register_parameter('bias', None) self.reset_parameters() ``` 在这个类中,我们首先定义了一些基本的卷积参数,例如输入和输出通道数、卷积核大小等。然后我们定义了一个普通的`nn.Conv2d`卷积层,用于处理普通的欧几里得数据。 接下来,我们定义了一些与黎曼流形有关的参数,例如流形的维度、权重矩阵的形状等。我们还定义了一个权重矩阵`self.weight`和一个偏置向量`self.bias`,它们都是可训练的参数。 最后,我们调用了`reset_parameters`函数,用于初始化模型参数: ```python def reset_parameters(self): stdv = 1. / (self.weight.size(-1) * self.weight.size(-2)) self.weight.data.uniform_(-stdv, stdv) if self.bias is not None: self.bias.data.zero_() ``` 这个函数用于将权重矩阵和偏置向量初始化为随机值。 接下来,我们需要实现黎曼卷积的前向传播函数: ```python def forward(self, input): # 获取输入数据的形状 batch_size, in_channels, height, width = input.size() # 将输入数据转换成流形张量 input_manifold = self.manifold.from_vector(input.view(batch_size, in_channels, height * width)) # 将权重矩阵转换成流形张量 weight_manifold = self.manifold.from_vector(self.weight.view(self.out_channels, self.in_channels // self.groups, self.kernel_size[0] * self.kernel_size[1] * self.manifold_dim * self.manifold_dim)) # 计算卷积 output_manifold = self.manifold.convolution(weight_manifold, input_manifold, stride=self.stride, padding=self.padding, dilation=self.dilation, groups=self.groups) # 将输出流形张量转换成普通张量 output = output_manifold.to_vector().view(batch_size, self.out_channels, height, width) # 添加偏置项 if self.bias is not None: output += self.bias.view(1, self.out_channels, 1, 1).expand_as(output) return output ``` 这个函数首先将输入数据转换成流形张量,然后将权重矩阵也转换成流形张量。接着,我们调用黎曼流形的卷积函数`self.manifold.convolution`,计算卷积结果。最后,我们将输出流形张量转换成普通张量,添加偏置项,并返回结果。 最后,我们可以使用上面定义的`RiemannConv`类来构建一个神经网络,例如: ```python class MyNet(nn.Module): def __init__(self, manifold): super(MyNet, self).__init__() self.conv1 = RiemannConv(3, 16, kernel_size=3, manifold=manifold) self.conv2 = RiemannConv(16, 32, kernel_size=3, manifold=manifold) self.fc1 = nn.Linear(32 * 7 * 7, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = x.view(x.size(0), -1) x = F.relu(self.fc1(x)) x = self.fc2(x) return x ``` 在这个网络中,我们使用了两个黎曼卷积层和两个全连接层。我们可以使用这个网络来处理在黎曼流形上定义的数据,例如球面图像或声音信号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值