999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

函數最值計算的模擬退火算法設計與應用研究

2022-02-13 10:47:18賈天理喻若舟王思凱
黑龍江科學 2022年1期
關鍵詞:程序計算機

賈天理,喻若舟,王思凱,秦 雯

(四川大學錦城學院 a.通識教育學院; b.計算機與軟件學院,成都 611731)

1 計算機求最值的擂臺思想

在高等數學學習中,關于一些冪次較高或者較為復雜的多項式函數求最值的問題,其求導、找駐點、求極值等都比較繁瑣,很容易在計算中出錯。因此,利用計算機輔助驗證函數最大值、最小值的正確性,成為有效解決問題的方法。計算機使用的模擬退火算法程序設計,成為快速解決問題的關鍵。通過設計模擬退火算法程序,使用計算機運行程序,可以在較短時間內找到一個函數的最值,進而快速地輔助驗證所求答案。計算機之所以如此“聰明”“快速”, 程序是它的靈魂,而程序是編寫調教出來的。計算機尋找最值的過程是通過兩兩比較的擂臺思想進行的:首先,進行相鄰兩個數的比較,將兩者比較后的較大值記錄在max變量中;其次,繼續與下一個數再進行兩兩比較,若下一個數大,則將下一個數的值記錄在max變量中,否則max保持原先值,以此進行下去。設計程序是計劃通過計算機幫助我們解決現實問題,比如設計一個“成績管理”程序求最高分,由于每次參加考試的人數不定,所以參與比較的數據個數是靈活通變的。

2 模擬退火算法概述

2.1 算法簡介

退火是一種對材料的熱處理工藝,包括金屬材料、非金屬材料,且新材料的退火目的也與傳統金屬退火存在異同。退火存在很多個冷卻點,這和函數中的極值概念十分相似——是局部的最大值,但不一定是全局的最大值。因此,模擬退火就是讓答案像金屬退火一樣:當溫度高時,金屬不穩定,隨機取值的范圍大,接受一個極大值成為最大值的概率小;當溫度低時,金屬趨于穩定,隨機取值的范圍小,接受一個極大值成為最大值的概率大;當多次重復進行模擬退火后,在全部答案中選取一個最優解。由于退火的規律引入了如初始溫度、冷卻倍率等隨機因素,得到最優解的概率會大大增加。因此,可以模擬這個過程,將目標函數作為能量函數,通過求得能量函數的最大值,來求得函數的最大/最小值。

模擬退火算法是一種通用的基于概率的算法,它是基于Monte-Carlo蒙特卡羅迭代求解策略的一種隨機尋優算法,該算法在理論上具有概率的全局優化性能,當一個問題是一個多峰函數時,常使用模擬退火算法求解。該算法目前已在工程計算中得到了廣泛應用,如生產調度、控制工程、機器學習、神經網絡、信號處理等領域。

2.2 算法程序設計

A.根據計算函數計算出一個位于當前答案的解空間。B.計算新答案與當前答案之間的差值。C.判斷新答案是否被接受。如果新答案優于當前答案,那么可以無條件接受新答案,即當前答案更改為新答案;如果新答案劣于當前答案,算法仍然有一定概率接受該答案。

使用以上程序設計一次,當前答案就完成了一次迭代。實際應用中一次程序運算往往不能得到正確的解,需要通過多次重復以上步驟開始下一輪迭代,以得到最終的正確答案。

2.3 算法核心代碼(C++語言)

#include

#include

#include

#include

using namespace std;

const int MAXN = 55, ATIMES = 1e3;

const double EPS = 1e-18, CD = 0.996, PRE_T = 1;

double a[MAXN], l, r, ans = -1e18, ansx;

int n;

//計算函數

inline double Cal(double x, double ans = 0) { for (int i = n; i >= 0; i--) ans = ans * x + a[i]; return ans; }

//退火函數

inline void Anneal(double& ansx, double& ans)

{

for (double t = PRE_T, sub = ansx; t > EPS; t *= CD)

{

//mov為自變量移動的范圍

double mov = ((double)rand() * 2 - RAND_MAX) / RAND_MAX * (r - l), x = sub + mov * t; //第一步

if (xr) continue;//忽略掉不在定義域的解

double newans = Cal(x), delta = newans - ans;//第二步

if (newans > ans) sub = (ansx = x), ans = newans;//第三步

else if (exp(-delta / t) * RAND_MAX > rand()) sub = x;//否則根據Metropolis準則,以一定概率接受該答案

}

}

signed main(void)

{

cout << "請輸入多項式函數的次數: ";

cin >> n;

cout << "請從大到小次輸入n~0次的系數: ";

for (int i = n; i >= 0; i--) cin >> a[i];

cout << "請輸入定義域范圍L,R,即x∈[L,R] ";

cin >> l >> r;

ans = Cal(ansx = (l + r) / 2);

double st = clock(), t = (l + r) / 2, tans = Cal(t);

for (int i = 1; i <= ATIMES; i++) Anneal(ansx, ans);

double ed = clock();

cout << setprecision(18)

<< " 最大值點x=" << ansx

<< " f(x)=" << ans

<< " 計算用時:" << (ed - st) / CLOCKS_PER_SEC << " 秒 ";

return 0;

}

3 算法輔助教學應用示例

例1 求函數f(x)=-7x6-6x5+5x4-4x3+3x2-2x1+1在區間[-2,4]上的最大值。

程序運行求解:

程序提示“請輸入多項式函數的次數:”,輸入該函數的次數6;

程序提示“請從大到小次輸入n~0次的系數:”,依次輸入

-7 -6 5 -4 3 -2 1

程序提示“請輸入定義域范圍L,R,即x∈[L,R]”,輸入定義域-2 4。

回車執行后,可以得到函數的最大值點為x=-1.31813743706443298,函數的最大值為f(x)=20.263054742178884。計算機計算函數最大值用時為1.05200000000000005s。

程序運行求解:

現在不再求一個多項式函數,所以需要修改程序:

把原來的Cal函數改為題目中的式子:

inline double Cal(double x) {return pow(cos(x/2-7*pi/8),2)-pow(cos(x/2+7*pi/8),2);}

其中pi=acos(-1),即π=arccos(-1)。

去除所有的輸入語句,賦值l=-pi,r=pi,以免手動輸入丟失精度,計算機執行程序,得到函數的最大值點為x=-1.57079627680778944,函數的最大值為f(x)=0.707106781186546796,整個計算用時2.004s。

使用模擬退火算法計算時,要根據實際函數的特征:如含有三角函數、根號、多項式除多項式等形式,需要進行Cal函數的簡單修改來達到目的。模擬退火算法也可以用于其他類型的函數,例如包含開根號、含有對數函數等的函數計算,非常方便。模擬退火算法的短板是不能找出函數所有的最值點,操作中可以通過遍歷定義域取值,通過已經找到的最值去尋找精度較低的其他最值點,用以彌補短板。在許多求最值的應用問題中,當數據量增多時,計算機的高速運算優勢得到充分體現,它能在瞬間找到最大(小)值的結果,說明程序算法在現實應用中會產生不可估量的效果。

4 結語

模擬退火算法作為一個隨機化算法,在計算多峰函數的最優解上表現突出。使用模擬退火算法設計,通過計算機運行減少計算工作量,在經濟、商業、醫學、市場預測、信號估計、社會科學等一系列實際應用領域中具有重要價值。模擬退火算法的核心在于其參數,其參數決定了模擬退火算法計算的速度、精度、正確性。在合適的參數下,可以保證接近100%的正確率,快速計算出高精度的答案。相反,如果參數設置隨意,可能會使正確率、速度、精度大打折扣。因此,參數優化過程對于計算效果的影響很大,如何利用人工智能進行全局最優化,將是進一步研究的方向。

猜你喜歡
程序計算機
計算機操作系統
穿裙子的“計算機”
趣味(數學)(2020年9期)2020-06-09 05:35:08
基于計算機自然語言處理的機器翻譯技術應用與簡介
科技傳播(2019年22期)2020-01-14 03:06:34
計算機多媒體技術應用初探
科技傳播(2019年22期)2020-01-14 03:06:30
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
信息系統審計中計算機審計的應用
消費導刊(2017年20期)2018-01-03 06:26:40
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 久久福利网| 日本不卡在线播放| 欧美在线黄| 四虎综合网| 国产精品福利在线观看无码卡| 亚洲香蕉伊综合在人在线| 国产午夜精品鲁丝片| 久久综合九色综合97婷婷| 久久成人国产精品免费软件| 久久精品电影| 丁香婷婷在线视频| 天天做天天爱夜夜爽毛片毛片| 亚洲国产精品国自产拍A| 中文字幕 91| 中文字幕首页系列人妻| 国产毛片片精品天天看视频| 国产真实乱子伦视频播放| 日韩大乳视频中文字幕| 国产超碰在线观看| 国产在线一区二区视频| 午夜毛片免费观看视频 | 操美女免费网站| 国产jizz| 婷婷五月在线视频| 波多野结衣一区二区三区88| 久久国产精品77777| 久久亚洲国产视频| 成人国产免费| 免费高清毛片| 精品视频一区二区三区在线播| 日本不卡免费高清视频| 国产精品白浆在线播放| 日韩不卡高清视频| 亚洲大尺码专区影院| 免费在线不卡视频| 黄色网页在线播放| 国产一区二区三区在线观看免费| 亚洲欧美日韩成人高清在线一区| 青青操国产视频| 日日拍夜夜操| 久久男人视频| 好吊日免费视频| 国产成人高清亚洲一区久久| 亚洲视频a| 国产伦精品一区二区三区视频优播| 国禁国产you女视频网站| 欧美天堂在线| 日韩最新中文字幕| 国产精品视频猛进猛出| 午夜精品一区二区蜜桃| 国产亚洲精久久久久久久91| 国产在线欧美| 欧美精品亚洲二区| 久久国产精品国产自线拍| 国产00高中生在线播放| 免费aa毛片| 中文字幕佐山爱一区二区免费| 91国语视频| 日本黄网在线观看| 亚洲第一黄色网址| 中文字幕永久在线观看| 欧美另类第一页| 亚洲天堂久久| 久久精品丝袜高跟鞋| 丁香婷婷激情网| 在线观看国产网址你懂的| 免费国产高清精品一区在线| 中文字幕在线日本| 欧美国产综合色视频| 精品国产成人高清在线| 欧美综合区自拍亚洲综合天堂 | 久久国产高清视频| 直接黄91麻豆网站| 99久久亚洲精品影院| 永久免费无码成人网站| 国产97色在线| 一区二区午夜| 亚洲一区二区在线无码| 国产女主播一区| 国产导航在线| 四虎在线高清无码| 亚洲三级a|