Python退火演算法在高次方程的應用
退火演算法就是鋼鐵在淬鍊過程中失溫而成穩定態時的過程,熱力學上溫度(內能)越高原子態越不穩定。這篇文章主要介紹了Python退火演算法在高次方程的應用,需要的朋友可以參考下
文章目錄
一,簡介
二,計算方程
三,總結
一,簡介
退火演算法不言而喻,就是鋼鐵在淬鍊過程中失溫而成穩定態時的過程,熱力學上溫度(內能)越高原子態越不穩定,而溫度有一個向低溫區輻射降溫的物理過程,當物質內能不再降低時候該物質原子態逐漸成為穩定有序態,這對我們從隨機複雜問題中找出最優解有一定借鑑意義,將這個過程化為演算法,具體參見其他資料。
二,計算方程
我們所要計算的方程是f(x) = (x - 2) * (x + 3) * (x + 8) * (x - 9),是一個一元四次方程,我們稱為高次方程,當然這個函式的開口是向上的,那麼在一個無限長的區間內我們可能找不出最大值點,因此我們嘗試在較短區間內解最小值點,我們成為最優解。
解法一:毫無疑問,數學方法多次求導基本可以解出,但是這個過程較複雜,還容易算錯,我就不贅述了,讀者有時間自己可以嘗試解一下。
解法二:這個解法就是暴力解決了,我們這裡只求解區間[-10,10]上的最優解,直接隨機200個點,再除以10(這樣可以得到非整數橫座標),再依此計算其縱座標f(x),min{f(x)}一下,用list的index方法找出最小值對應位置就行了,然後畫出圖形大致瞄一瞄。
直接貼程式碼:
import random
import matplotlib.pyplot as plt
list_x = []
# for i in range(1):
# #print(random.randint(0,100))
# for i in range(0,100):
# print("sss",i)
#
# list_x.append(random.randint(0,100))
for i in range(-100,100):
list_x.append(i/10)
print("橫座標為:",list_x)
print(len(list_x))
list_y = []
for x in list_x:
# print(x)
#y = x*x*x - 60*x*x -4*x +6
y = (x - 2) * (x + 3) * (x + 8) * (x - 9)
list_y.append(y)
print("縱座標為:",list_y)
#經驗證,這裡算出來的結果6.5和最優解1549都是對的
print("最小值為:",min(list_y))
num = min(list_y)
print("最優解:",list_y.index(num)/10)
print("第",list_y.index(num)/10-10,"個位置取得最小值")
plt.plot(list_x, list_y, label='NM')
#plt.plot(x2, y2, label='Second Line')
plt.xlabel('X') #橫座標標題
plt.ylabel('Y') #縱座標標題
#plt.title('Interesting Graph\nCheck it out',loc="right") #影像標題
#plt.title('Interesting Graph\nCheck it out')
plt.legend(Swift Code
plt.legend() #顯示Fisrt Line和Second Line(label)的設定
plt.savefig('C:/Users/zhengyong/Desktop/1.png')
plt.show()
得到如下結果:
那麼我們得出最優解的座標是(6.5,-1549.6875)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2690416/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python進階學習:Python退火演算法在高次方程的應用Python演算法
- 微分方程在遊戲經濟建模中的應用遊戲
- 模擬退火演算法(1)Python 實現演算法Python
- 模擬退火演算法解析演算法
- 自己用C語言寫的一個模擬退火演算法C語言演算法
- open ... 模擬退火演算法模板演算法
- redis在python中的應用RedisPython
- c++實現的模擬退火演算法C++演算法
- python中list列表的高階應用 高階函式Python函式
- 分享Python的5種高階特徵應用Python特徵
- python中文分詞jieba的高階應用Python中文分詞Jieba
- 模擬退火演算法Python程式設計(4)旅行商問題演算法Python程式設計
- 高考數學常用數學思想:函式與方程思想,在數列中的應用函式
- 模擬退火演算法Python程式設計(2)約束條件的處理演算法Python程式設計
- Python數學運算的一個小演算法(求一元二次方程的實根)Python演算法
- 一元5次方程式與一元6次方程式
- 在Python應用中使用MongoDBPythonMongoDB
- 教你用神經網路求解高階數學方程!神經網路
- CTF中的最佳化隨機演算法(爬山&退火)隨機演算法
- 記一次演算法在日常測試工作中的應用!絕對史無前例。演算法
- 模擬退火演算法Python程式設計(3)整數規劃問題演算法Python程式設計
- 用c++解一元二次方程C++
- 邊框檢測在 Python 中的應用Python
- 演算法分析__遞推方程演算法
- javascript的高階應用JavaScript
- AI 演算法在大資料治理中的應用AI演算法大資料
- python應用系統訪問瀚高庫Python
- 使用模擬退火演算法優化 Hash 函式演算法優化函式
- 線性蒙皮分解演算法及其在遊戲中的應用演算法遊戲
- 常見演算法在實際專案中的應用演算法
- 高收益的笨辦法:暴破在Windows提權中的應用Windows
- 6元8次齊次方程式的穿越介面
- 8元10次齊次方程式的穿越介面
- 10元12次齊次方程式的穿越介面
- 再記一次 應用伺服器 CPU 暴高事故分析伺服器
- 高壓貼片電容在電源產品中的應用
- Linux高階應用CpuMemSets在Linux中的實現(轉)Linux
- python的應用Python