導航:首頁 > 源碼編譯 > 數學模型課後習題源碼

數學模型課後習題源碼

發布時間: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還提供了多種概率分析功能,分位數函數,樣本統計函數和隨機數生成功能,讓用戶輕松實現具體的統計要求。

閱讀全文

與數學模型課後習題源碼相關的資料

熱點內容
python進程間共享 瀏覽:434
js如何獲取本地伺服器地址 瀏覽:68
gfx什麼時候支持安卓十一系統 瀏覽:939
壓縮機90兆帕 瀏覽:928
程序員調侃語句 瀏覽:579
不是php函數的是 瀏覽:998
壓縮文件好處 瀏覽:785
3d266期神童三膽計演算法 瀏覽:189
通過愛思助手怎麼下載app 瀏覽:323
vi命令將文件創在桌面上 瀏覽:923
程序員做競價 瀏覽:696
江蘇中小學編程納入課程 瀏覽:730
單純形法包括動態規劃演算法 瀏覽:951
cpdf百度網盤 瀏覽:671
綜合布線工程中配線架的演算法 瀏覽:925
單片機碩士論文 瀏覽:329
股票預測演算法現狀 瀏覽:430
程序員三高 瀏覽:182
pythonfiddle 瀏覽:217
韓信分油總共有幾種演算法 瀏覽:943