导航:首页 > 源码编译 > 数学模型课后习题源码

数学模型课后习题源码

发布时间:2024-06-20 16:09:24

❶ 数学建模与编程

如果你C语言很熟悉的话完全可以,C++只是在C语言的基础上做了一些扩展,在解决数学建模上两者是差不多的。不过建议你用MATLAB,它对于许多数学矩阵上的运算十分方便。

编程不是建模的重点,但是又是必要的一个环节,掌握一门编程语言才能很好地把握建模的过程。

❷ 比特币源码研读一:椭圆曲线在比特币密码中的加密原理

参加比特币源码研读班后首次写作,看到前辈black写的有关密钥,地址写的很好了,就选了他没有写的椭圆曲线,斗胆写这一篇。

在密码学上有两种加密方式,分别是对称密钥加密和非对称密钥加密。

对称加密:加密和解密使用的同样的密钥。

非对称加密:加密和解密是使用的不同的密钥。

二战中图灵破解德军的恩尼格码应该就是用的对称加密,因为他的加密和解密是同一个密钥。比特币的加密是非对称加密,而且用的是破解难度较大的椭圆曲线加密,简称ECC。

非对称加密的通用原理就是用一个难以解决的数学难题做到加密效果,比如RSA加密算法。RSA加密算法是用求解一个极大整数的因数的难题做到加密效果的。就是说两个极大数相乘,得到乘积很容易,但是反过来算数一个极大整数是由哪两个数乘积算出来的就非常困难。

下面简要介绍一下椭圆曲线加密算法ECC。

首先椭圆曲线的通式是这个样子的:

一般简化为这个样子:

()发公式必须吐槽一下,太麻烦了。)

其中

这样做就排除了带有奇点的椭圆曲线,可以理解为所有的点都有一条切线。

图像有几种,下面列举几个:[1]

椭圆曲线其实跟椭圆关系不大,也不像圆锥曲线那样,是有圆锥的物理模型为基础的。在计算椭圆曲线的周长时,需要用到椭圆积分,而椭圆曲线的简化通式:

,周长公式在变换后有一项是这样的:,平方之后两者基本一样。

我们大体了解了椭圆曲线,就会有一个疑问,这个东西怎么加密的呢?也就是说椭圆曲线是基于怎样的数学难题呢?在此之前还得了解一些最少必要知识:椭圆曲线加法,离散型椭圆曲线。

椭圆曲线加法

数学家门从普通的代数运算中,抽象出了加群(也叫阿贝尔群或交换群),使得在加群中,实数的算法和椭圆曲线的算法得到统一。

数学中的“群”是一个由我们定义了一种二元运算的集合,二元运算我们称之为“加法”,并用符号“+”来表示。为了让一个集合G成为群,必须定义加法运算并使之具有以下四个特性:

1. 封闭性:如果a和b是集合G中的元素,那么(a + b)也是集合G中的元素。

2. 结合律:(a + b) + c = a + (b + c);

3. 存在单位元0,使得a + 0 = 0 + a =a;

4. 每个元素都有逆元,即:对于任意a,存在b,使得a + b = 0.

如果我们增加第5个条件:

5. 交换律: a + b = b + a

那么,称这个群为阿贝尔群。[1]

运算法则:任意取椭圆曲线上两点P、Q (若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R。我们规定P+Q=R。(如图)[2]

特别的,当P和Q重合时,P+Q=P+P=2P,对于共线的三点,P,Q,R’有P+Q+R’=0∞.

这里的0∞不是实数意义的0,而是指的无穷远点(这里的无穷远点就不细说了,你可以理解为这个点非常遥远,遥远到两条平行线都在这一点相交了。具体介绍可以看参考文献[2])。

注意这里的R与R’之间的区别,P+Q=R,R并没有与P,Q共线,是R’与P,Q共线,不要搞错了。

法则详解:

这里的+不是实数中普通的加法,而是从普通加法中抽象出来的加法,他具备普通加法的一些性质,但具体的运算法则显然与普通加法不同。

根据这个法则,可以知道椭圆曲线无穷远点O∞与椭圆曲线上一点P的连线交于P’,过P’作y轴的平行线交于P,所以有无穷远点 O∞+ P = P 。这样,无穷远点 O∞的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点 O∞ 称为零元。同时我们把P’称为P的负元(简称,负P;记作,-P)。(参见下图)

离散型椭圆曲线

上面给出的很好看的椭圆曲线是在实数域上的连续曲线,这个是不能用来加密的,原因我没有细究,但一定是连续曲线上的运算太简单。真正用于加密的椭圆曲线是离散型的。要想有一个离散型的椭圆曲线,先得有一个有限域。

域:在抽象代数中,域(Field)之一种可进行加、减、乘、除运算的代数结构。它是从普通实数的运算中抽像出来的。这一点与阿贝尔群很类似。只不过多了乘法,和与乘法相关的分配率。

域有如下性质[3]:

1.在加法和乘法上封闭,即域里的两个数相加或相乘的结果也在这个域中。

2.加法和乘法符合结合律,交换率,分配率。

3.存在加法单位,也可以叫做零元。即存在元素0,对于有限域内所有的元素a,有a+0=a。

4.存在乘法单位,也可以叫做单位元。即存在元素1,对于有限域内所有的元素a,有1*a=a。

5.存在加法逆元,即对于有限域中所有的元素a,都存在a+(-a)=0.

6.存在乘法逆元,即对于有限域中所有的元素a,都存在a*=0.

在掌握了这些知识后,我们将椭圆曲线离散化。我们给出一个有限域Fp,这个域只有有限个元素。Fp中只有p(p为素数)个元素0,1,2 …… p-2,p-1;

Fp 的加法(a+b)法则是 a+b≡c (mod p);它的意思是同余,即(a+b)÷p的余数与c÷p的余数相同。

Fp 的乘法(a×b)法则是 a×b≡c (mod p);

Fp 的除法(a÷b)法则是 a/b≡c (mod p);即 a×b∧-1≡c (mod p);(也是一个0到p-1之间的整数,但满足b×b∧-1≡1 (mod p);

Fp 的单位元是1,零元是 0(这里的0就不是无穷远点了,而是真正的实数0)。

下面我们就试着把

这条曲线定义在Fp上:

选择两个满足下列条件的小于p(p为素数)的非负整数a、b,且a,b满足

则满足下列方程的所有点(x,y),再加上无穷远点O∞ ,构成一条椭圆曲线。

其中 x,y属于0到p-1间的整数,并将这条椭圆曲线记为Ep(a,b)。

图是我手画的,大家凑合看哈。不得不说,p取7时,别看只有10个点,但计算量还是很大的。

Fp上的椭圆曲线同样有加法,法则如下:

        1. 无穷远点 O∞是零元,有O∞+ O∞= O∞,O∞+P=P

        2. P(x,y)的负元是 (x,-y),有P+(-P)= O∞

3. P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下关系:

x3≡-x1-x2(mod p)

y3≡k(x1-x3)-y1(mod p)

其中若P=Q 则 k=(3+a)/2y1 若P≠Q,则k=(y2-y1)/(x2-x1)

通过这些法则,就可以进行离散型椭圆曲线的计算。

例:根据我画的图,(1,1)中的点P(2,4),求2P。

解:把点带入公式k=(3*x∧2+a)/2y1

有(3*2∧2+1)/2*4=6(mod 7).

(注意,有些小伙伴可能算出13/8,这是不对的,这里是模数算数,就像钟表一样,过了12点又回到1点,所以在模为7的世界里,13=6,8=1).

x=6*6-2-2=4(mod 7)

y=6*(2-4)-4=2 (mod 7)

所以2P的坐标为(2,4)

那椭圆曲线上有什么难题呢?在模数足够大的情况下,上面这个计算过程的逆运算就足够难。

给出如下等式:

K=kG (其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数)不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。

这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k称为私钥,K称为公钥。

现在我们描述一个利用椭圆曲线进行加密通信的过程[2]:

1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。

2、用户A选择一个私钥k,并生成公钥K=kG。

3、用户A将Ep(a,b)和点K,G传给用户B。

4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。

5、用户B计算点C1=M+rK;C2=rG。

6、用户B将C1、C2传给用户A。

7、用户A接到信息后,计算C1-kC2,结果就是点M。因为

C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

再对点M进行解码就可以得到明文。

整个过程如下图所示:

密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:

T=(p,a,b,G,n,h),p 、a 、b 用来确定一条椭圆曲线,G为基点,n为点G的阶,h 是椭圆曲线上所有点的个数m与n相除的整数部分

这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;

2、p≠n×h;

3、pt≠1 (mod n),1≤t<20;

4、4a3+27b2≠0 (mod p);

5、n 为素数;

6、h≤4。

200位位的一个数字,那得多大?而且还是素数,所以这种方式是非常安全的。而且再一次交易中,区块被记录下来只有10分钟的时间,也就是说要想解决这个难题必须在10分钟以内。即便有技术能够在10分钟以内破解了现在这个难度的加密算法,比特币社区还可以予以反制,提高破解难度。所以比特币交易很安全,除非自己丢掉密钥,否则不存在被破解可能。

第一次写一个完全陌生的数学领域的知识,也许我有错误的地方,也许有没讲明白的地方,留言讨论吧。总之写完后对比特比系统的安全性表示很放心。

参考文献

[1] 椭圆曲线密码学简介

[2] 什么是椭圆曲线加密(ECC)

[3] 域(数学)维基网络

区块链研习社源码研读班 高若翔

❸ GitHub上面有哪些经典的java框架源码

❹ 数学建模

MATLAB
详细信息:

数学建模软件介绍一般的数学建模研究中,常用的有四种软件,即:matlab的,行话,数学和SAS描述如下4简要介绍。

1.MATLAB概况

MATLAB的矩阵实验室(矩阵实验室)之意。除了具有出色的数学能力,还提供了符号计算,文字

管理,可视化,建模和仿真与实时控制功能的专业水平。

MATLAB的基本数据单位是矩阵,它的数学表达式和指令,工程常见的形式是非常相似的,所以使用MATLAB来解决要比用C,FORTRAN等问题

经过简单的语言,同样的事情。

目前流行的MATLAB 5.3/Simulink 3.0中包含数百个内置函数有主包和几个30套(工具箱)。套件可分为功能性工具

工具袋和学科。功能扩展套件,用于MATLAB的符号计算,可视化,建模和仿真,文字处理和实时控制等功能。学科工具包是专业性比较强

工具包,控制工具包,信号处理工具包,通信工具都属于这一类。

开放如此广泛的MATLAB用户的欢迎除了所有主要包MATLAB的文件和各种可以文件包是可读,用户的源代码

或添加您自己的编程构造新的专用工具包。

2.Mathematica概况

沃尔夫勒姆研究为一体的高科技计算(计算技术)的第一个趋势,发明者成立于

1987年斯蒂芬·沃尔夫勒姆复杂性理论,在1988年推出的高科技计算软件Mathematica的,是一个天才的产品相媲美的诺贝尔奖。数学是一组数学工具来整合数字

和符号计算,提供超过一万世界各地的研究人员,工程师,物理学家,分析师和其他专业技术人员一个易于使用的顶部

科学计算环境。现在,在学术界,电力,机械,化工,土木,信息工程,财务金融,医学,物理,统计,教育出版,OEM等领域有着广泛

盘使用。

数学设有高阶数学函数

·演算方法和丰富的图书馆和一个巨大的数学知识,使线性代数的数学5数值计算,例如功能向量,矩阵求逆等,都做得比的Matlab R13更好,更快,提供了业界最精确的数值计算结果。

·Mathematica可以做不仅数值,但也可以设计,提供最佳的符号计算。

·丰富的数学函数库,可以快速回答微积分,线性代数,微分方程,复变函数,数值分析,概率统计等。

·Mathematica函数可以画出专业显卡的专业领域,提供可视化的呈现结果的丰富的图形表示。

·Mathematica可以安排专业的科学杂志上的论文,使操作和布局在同一个环境下完成,提供高品质的排版公式和可编辑的表单,并自动优化屏幕布局打印,整理计划从最初的概念到最终报告,并输出TXT,HTML,PDF格式,提供最佳的兼容性。

·可以用C,C + +,Fortran语言,Perl中,Visual Basic和Java中使用相结合,提供了强大的高级语言接口功能,使应用程序开发更容易。

·数学本身是一种简单易学的编程语言。 Mathematica提供了丰富的和交互式的帮助功能,使用户现学现卖。功能强大,操作简单,易学易用的特点,可以最有效地缩短了开发时间。

3.lingo概况

LINGO是用来求解非线性规划(NLP - 非线性规划)和次级规则(QP-QUARATIC PROGRAMING),其中

LINGO 6.0学生版版本最多的300个变量和150约束规则问题,其标准版本有解决量级以上的另外10 ^ 4订单的能力。虽然LINDO和

LINGO不能直接求解目标规划问题,但用顺序算法可以分解成一个LINDO和LINGO规划问题可以得到解决。

建模语言和解决引擎集成

LINGO是使建立和求解线性,非线性和整数优化模型更快,更容易,更高效的综合工具。 LINGO提供了一个强大和快速的语言引擎解释和解决求解优化模型。

■简单的模型表示

LINGO可以是线性,非线性和整数问题可能抓紧制定和易于阅读,理解和。

■方便的数据输入和输出选项

LINGO模型可以创建直接从数据库或工作表获取信息。同样地,LINGO解决方案的结果可以直接输出到数据库或工作表。

■强大的内置解决发动机

LINGO求解引擎有线性,非线性(凸和非凸),二次,二次限制和整数最佳化。

■型号交互方式或创建交钥匙应用

LINGO提供完全互动的环境,为您建立,求解和分析模型。 LINGO提供的DLL和OLE界面允许用户从写程序调用。

■帮助功能广泛的文件和所有工具和文件

LINGO提供了快速录入,并允许您开始。有详细的功能定义LINGO用户手册。

4.SAS概况

SAS软件系统,称为统计分析系统,前两个北卡罗来纳毕业生准备的生物统计学学院,并于1976年成立SAS公司的正式推出了SAS软件。 SAS是一个大型综合性信息系统的决策支持,但该软件的功能是有限的,以第一次统计分析,因为统计分析仍然是其核心职能的重要组成部分。 SAS是现在的版本9.0,大约1G的大小。经过多年的发展,SAS已在120多个国家和世界各地的地区通过了近三百万的组织,直接和超过300万用户,遍及金融,医疗,制造,运输,通信,政府,教育和科研等领域。在英国和其他国家,使用SAS统计分析能力是许多公司和研究机构选择的条件之一。在数据处理和统计分析领域,被称为国际标准SAS系统软件系统,并在96到97年已被选择为所选择的产品,以建立数据库。堪称巨无霸社会统计软件。在此仅举一例如下:在以严格闻名世界的美国FDA的药物审批过程中,统计分析只能在规定的SAS进行的药检结果,其他软件无效的结果和无效!即使是简单的平均值和标准差也不行!这表明,权威SAS的位置。

SAS系统是软件系统,该系统形成多个功能模块,在BASE SAS模块的基本组成部分的组合的组合。 BASE SAS的SAS模块是系统的核心,承担着主要的数据管理任务,并管理用户环境,用户语言处理,调用其他SAS模块和产品。换句话说,运行的SAS系统,我们必须首先启动BASE SAS模块,它本身就具有数据管理,除了方案设计和无法形容的统计计算,或中央控制室的SAS系统。此外,它可以存在外单独或与其他产品或模块组合在一起,形成一个完整的系统。安装模块和更新可通过其安装过程中可以容易地进行。 SAS系统具有灵活的扩展接口和强大的功能模块,BASE SAS的基础上,您还可以添加以下不同的模块,并添加不同的功能:SAS / STAT(统计分析模块),SAS / GRAPH(绘图模块),SAS / QC(质量控制模块),SAS / ETS(经济计量学和时间序列分析模块),SAS / OR(运筹学模块),SAS / IML(交互式矩阵程序设计语言模块),SAS / FSP(交互式菜单系统用于快速数据模块处理),SAS / AF(交互式全屏幕应用系统软件模块)等。 SAS有一个智能绘图系统,不仅可以绘制各种图表,还绘制地图。 SAS提供了一些统计程序,每个含有极丰富可选的。用户还可以设置一系列数据处理,实现更复杂的统计分析。此外,SAS还提供了多种概率分析功能,分位数函数,样本统计函数和随机数生成功能,让用户轻松实现具体的统计要求。

阅读全文

与数学模型课后习题源码相关的资料

热点内容
单纯形法包括动态规划算法 浏览:949
cpdf百度网盘 浏览:669
综合布线工程中配线架的算法 浏览:923
单片机硕士论文 浏览:327
股票预测算法现状 浏览:428
程序员三高 浏览:178
pythonfiddle 浏览:215
韩信分油总共有几种算法 浏览:941
程序员思维方案 浏览:970
编译环境要装c盘吗 浏览:648
单片机生成pwm 浏览:206
线上租车有什么app 浏览:908
php程序修改 浏览:684
下列能查找文件或文件夹的操作是 浏览:314
遥感科学与技术算法待遇 浏览:136
cad标注半径命令 浏览:367
打卡领购app邀请码怎么填 浏览:336
编程访问权限冲突 浏览:152
桌面运维如何转服务器运维 浏览:627
tomcat如何设置服务器 浏览:679