導航:首頁 > 源碼編譯 > 建模常用演算法代碼

建模常用演算法代碼

發布時間:2022-12-15 15:12:21

1. 數學建模常用到的matlab函數有哪些

sort (排序)
xlsread ( exl文件導入)
load (txt 文件,mat文件等導入)
實際上,常用的函數也是很有針對性的,我還真不知道 你要問什麼

2. 數學建模需要掌握哪些編程語言和技術

數學建模需要掌握MATLAB、Python、SAS、Lingo等編程語言。

3. 數學建模各種演算法MATLAB的編程代碼,越詳細越好

給你推薦個網站:數學中國http://www.madio.net
不過要簡單注冊一下,發發評論,就有積分了,這樣就可以下載東西,與他人交流,挺權威的數學建模網站,希望能幫到你。
演算法裡面有,給你個網址http://www.madio.net/forum.php?mod=viewthread&tid=198727
這個演算法我下載了,可以傳給你

4. 求數學建模各種演算法MATLAB的編程代碼[email protected]

已發至郵箱,請注意查收

5. 數學建模演算法有哪些

1. 蒙特卡羅演算法。 該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決問題的演算法,同時可以通過模擬來檢驗自己模型的正確性,幾乎是比賽時必用的方法。
2. 數據擬合、參數估計、插值等數據處理演算法。 比賽中通常會遇到大量的數據需要處理,而處理數據的關鍵就在於這些演算法,通常使用MATLAB 作為工具。
3. 線性規劃、整數規劃、多元規劃、二次規劃等規劃類演算法。 建模競賽大多數問題屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通常使用Lindo、Lingo 軟體求解。
4. 圖論演算法。 這類演算法可以分為很多種,包括最短路、網路流、二分圖等演算法,涉及到圖論的問題可以用這些方法解決,需要認真准備。
5. 動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法。 這些演算法是演算法設計中比較常用的方法,競賽中很多場合會用到。
6. 最優化理論的三大非經典演算法:模擬退火演算法、神經網路演算法、遺傳演算法。 這些問題是用來解決一些較困難的最優化問題的,對於有些問題非常有幫助,但是演算法的實現比較困難,需慎重使用。
7. 網格演算法和窮舉法。 兩者都是暴力搜索最優點的演算法,在很多競賽題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種暴力方案,最好使用一些高級語言作為編程工具。
8. 一些連續數據離散化方法。 很多問題都是實際來的,數據可以是連續的,而計算機只能處理離散的數據,因此將其離散化後進行差分代替微分、求和代替積分等思想是非常重要的。
9. 數值分析演算法。 如果在比賽中採用高級語言進行編程的話,那些數值分析中常用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編寫庫函數進行調用。
10. 圖象處理演算法。 賽題中有一類問題與圖形有關,即使問題與圖形無關,論文中也會需要圖片來說明問題,這些圖形如何展示以及如何處理就是需要解決的問題,通常使用MATLAB 進行處理。
以下將結合歷年的競賽題,對這十類演算法進行詳細地說明。
以下將結合歷年的競賽題,對這十類演算法進行詳細地說明。
2 十類演算法的詳細說明
2.1 蒙特卡羅演算法
大多數建模賽題中都離不開計算機模擬,隨機性模擬是非常常見的演算法之一。
舉個例子就是97 年的A 題,每個零件都有自己的標定值,也都有自己的容差等級,而求解最優的組合方案將要面對著的是一個極其復雜的公式和108 種容差選取方案,根本不可能去求解析解,那如何去找到最優的方案呢?隨機性模擬搜索最優方案就是其中的一種方法,在每個零件可行的區間中按照正態分布隨機的選取一個標定值和選取一個容差值作為一種方案,然後通過蒙特卡羅演算法模擬出大量的方案,從中選取一個最佳的。另一個例子就是去年的彩票第二問,要求設計一種更好的方案,首先方案的優劣取決於很多復雜的因素,同樣不可能刻畫出一個模型進行求解,只能靠隨機模擬模擬。
2.2 數據擬合、參數估計、插值等演算法
數據擬合在很多賽題中有應用,與圖形處理有關的問題很多與擬合有關系,一個例子就是98 年美國賽A 題,生物組織切片的三維插值處理,94 年A 題逢山開路,山體海拔高度的插值計算,還有吵的沸沸揚揚可能會考的「非典」問題也要用到數據擬合演算法,觀察數據的走向進行處理。此類問題在MATLAB中有很多現成的函數可以調用,熟悉MATLAB,這些方法都能游刃有餘的用好。
2.3 規劃類問題演算法
競賽中很多問題都和數學規劃有關,可以說不少的模型都可以歸結為一組不等式作為約束條件、幾個函數表達式作為目標函數的問題,遇到這類問題,求解就是關鍵了,比如98年B 題,用很多不等式完全可以把問題刻畫清楚,因此列舉出規劃後用Lindo、Lingo 等軟體來進行解決比較方便,所以還需要熟悉這兩個軟體。
2.4 圖論問題
98 年B 題、00 年B 題、95 年鎖具裝箱等問題體現了圖論問題的重要性,這類問題演算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等問題。每一個演算法都應該實現一遍,否則到比賽時再寫就晚了。
2.5 計算機演算法設計中的問題
計算機演算法設計包括很多內容:動態規劃、回溯搜索、分治演算法、分支定界。比如92 年B 題用分枝定界法,97 年B 題是典型的動態規劃問題,此外98 年B 題體現了分治演算法。這方面問題和ACM 程序設計競賽中的問題類似,推薦看一下《計算機演算法設計與分析》(電子工業出版社)等與計算機演算法有關的書。
2.6 最優化理論的三大非經典演算法
這十幾年來最優化理論有了飛速發展,模擬退火法、神經網路、遺傳演算法這三類演算法發展很快。近幾年的賽題越來越復雜,很多問題沒有什麼很好的模型可以借鑒,於是這三類演算法很多時候可以派上用場,比如:97 年A 題的模擬退火演算法,00 年B 題的神經網路分類演算法,象01 年B 題這種難題也可以使用神經網路,還有美國競賽89 年A 題也和BP 演算法有關系,當時是86 年剛提出BP 演算法,89 年就考了,說明賽題可能是當今前沿科技的抽象體現。03 年B 題伽馬刀問題也是目前研究的課題,目前演算法最佳的是遺傳演算法。
2.7 網格演算法和窮舉演算法
網格演算法和窮舉法一樣,只是網格法是連續問題的窮舉。比如要求在N 個變數情況下的最優化問題,那麼對這些變數可取的空間進行采點,比如在[a; b] 區間內取M +1 個點,就是a; a+(b-a)/M; a+2 (b-a)/M; …… ; b 那麼這樣循環就需要進行(M + 1)N 次運算,所以計算量很大。比如97 年A 題、99 年B 題都可以用網格法搜索,這種方法最好在運算速度較快
的計算機中進行,還有要用高級語言來做,最好不要用MATLAB 做網格,否則會算很久的。窮舉法大家都熟悉,就不說了。
2.8 一些連續數據離散化的方法
大部分物理問題的編程解決,都和這種方法有一定的聯系。物理問題是反映我們生活在一個連續的世界中,計算機只能處理離散的量,所以需要對連續量進行離散處理。這種方法應用很廣,而且和上面的很多演算法有關。事實上,網格演算法、蒙特卡羅演算法、模擬退火都用了這個思想。
2.9 數值分析演算法
這類演算法是針對高級語言而專門設的,如果你用的是MATLAB、Mathematica,大可不必准備,因為象數值分析中有很多函數一般的數學軟體是具備的。
2.10 圖象處理演算法
01 年A 題中需要你會讀BMP 圖象、美國賽98 年A 題需要你知道三維插值計算,03 年B 題要求更高,不但需要編程計算還要進行處理,而數模論文中也有很多圖片需要展示,因此圖象處理就是關鍵。做好這類問題,重要的是把MATLAB 學好,特別是圖象處理的部分。

6. 數學建模中,給出非常多的節點,求這些節點的最短路徑(類似一條線的路徑),應該用什麼演算法好

下面是我自己編寫的一段代碼,用來求過包含兩千多個點的最短路,速度很快,比遺傳、蟻群快而且最短路更短。你可以試試看,有問題再問我。
function [S,len]=short(P)
% 此程序用來求相同類型點間的最短路
% P表示某一類型的點的坐標矩陣
% p是最短路徑
% d是路徑權值和
%建立權值矩陣
n=length(P);%求該類型點的數量
W=zeros(n,n);
for i=1:n %計算權值並填充權值矩陣,由於各點聯通,此權值矩陣就是該圖的最短路矩陣
for j=(i+1):n
W(i,j)=sqrt((P(i,1)-P(j,1))^2+(P(i,2)-P(j,2))^2);
end
end
for i=2:n
for j=1:(i-1)
W(i,j)=W(j,i);
end
end
%求通過所有點的最短路
%先求從i點至j點,必須通過指定其他n-2個點的最短路,選出其中的的最短路
S=zeros(1,n);
S(1)=1; %先插入1,2點,以此為基準,每次插進一個新點
S(2)=2;
d1=2*W(1,2);
for i=3:n %新加入的點的標號
d1i=zeros(1,i); %插入第i個點,有i中可能的距離,其中最小值將為該輪的d1
for j=1:i %新加入點的位置,插入第i個點是有i個空位可供選擇
if j==1 %在第一個空位插入
d1i(j)=d1+W(i,S(1))+W(i,S(i-1))-W(S(1),S(i-1)); %插入點在首端時,距離為原距離與第i點與上一次插入後的第1位置的點之間距離之和
end
if j>1 & j<i %在中間的空位插入
d1i(j)=d1+W(S(j-1),i)+W(i,S(j))-W(S(j-1),S(j));
end
if j==i
d1i(j)=d1+W(S(i-1),i)+W(S(1),i)-W(S(1),S(i-1));
end
end
[d1,I]=min(d1i);
S((I+1):i)=S(I:(i-1)); %將第I位後面的點後移一位
S(I)=i;%將第i點插入在I位置
end
len=d1;

下面這段代碼是我用來把上面的結果保存到txt文件中的代碼,如果你需要,可以用用。代碼是我上次用過的沒有改,你自己按照需要自己改吧。
clear
close all
clc
loaddata
X=[C;E;I;J];
[S,len]=short(X);
DrawPath(S,X);
print(1,'-dpng','cmeiju3.png');
% 將結果保存至txt文件
fid=fopen('cmeijulujin.txt','wt'); %創建alunjin.txt文件
fprintf(fid,'c號刀具\n');
fprintf(fid,'%d %d\n',X(S));
save('cmeijus','S');
save('cmeijulen','len');

7. 需要有關數學建模的各種matlab代碼,急求~~~~

這個可不是一般的多……
附錄一 MATLAB常用函數
1、特殊變數與常數
ans 計算結果的變數名 computer 確定運行的計算機
eps 浮點相對精度 Inf 無窮大
I 虛數單位 inputname 輸入參數名
NaN 非數 nargin 輸入參數個數
nargout 輸出參數的數目 pi 圓周率
nargoutchk 有效的輸出參數數目 realmax 最大正浮點數
realmin 最小正浮點數 varargin 實際輸入 的參量
varargout 實際返回的參量
操作符與特殊字元
+ 加 - 減
* 矩陣乘法 .* 數組乘(對應元素相乘)
^ 矩陣冪 .^ 數組冪(各個元素求冪)
\ 左除或反斜杠 / 右除或斜面杠
./ 數組除(對應元素除) kron Kronecker張量積
: 冒號 () 圓括
[] 方括 . 小數點
.. 父目錄 ... 繼續
, 逗號(分割多條命令) ; 分號(禁止結果顯示)
% 注釋 ! 感嘆號
' 轉置或引用 = 賦值
== 相等 <> 不等於
& 邏輯與 | 邏輯或
~ 邏輯非 xor 邏輯異或
2、基本數學函數
abs 絕對值和復數模長 acos,acodh 反餘弦,反雙曲餘弦
acot,acoth 反餘切,反雙曲餘切 acsc,acsch 反餘割,反雙曲餘割
angle 相角 asec,asech 反正割,反雙曲正割
secant 正切 asin,asinh 反正弦,反雙曲正弦
atan,atanh 反正切,雙曲正切 tangent 正切
atan2 四象限反正切 ceil 向著無窮大舍入
complex 建立一個復數 conj 復數配對
cos,cosh 餘弦,雙曲餘弦 csc,csch 餘切,雙曲餘切
cot,coth 餘切,雙曲餘切 exp 指數
fix 朝0方向取整 floor 朝負無窮取整
gcd 最大公因數 imag 復數值的虛部
lcm 最小公倍數 log 自然對數
log2 以2為底的對數 log10 常用對數
mod 有符號的求余 nchoosek 二項式系數和全部組合數
real 復數的實部 rem 相除後求余
round 取整為最近的整數 sec,sech 正割,雙曲正割
sign 符號數 sin,sinh 正弦,雙曲正弦
sqrt 平方根 tan,tanh 正切,雙曲正切
3、基本矩陣和矩陣操作
blkding 從輸入參量建立塊對角矩陣 eye 單位矩陣
linespace 產生線性間隔的向量 logspace 產生對數間隔的向量
numel 元素個數 ones 產生全為1的數組
rand 均勻頒隨機數和數組 randn 正態分布隨機數和數組
zeros 建立一個全0矩陣 :(colon) 等間隔向量
cat 連接數組 diag 對角矩陣和矩陣對角線
fliplr 從左自右翻轉矩陣 flipud 從上到下翻轉矩陣
repmat 復制一個數組 reshape 改造矩陣
roy90 矩陣翻轉90度 tril 矩陣的下三角
triu 矩陣的上三角 dot 向量點集
cross 向量叉集 ismember 檢測一個集合的元素
intersect 向量的交集 setxor 向量異或集
setdiff 向是的差集 union 向量的並集
數值分析和傅立葉變換
cumprod 累積 cumsum 累加
cumtrapz 累計梯形法計算數值微分 factor 質因子
inpolygon 刪除多邊形區域內的點 max 最大值
mean 數組的均值 mediam 中值
min 最小值 perms 所有可能的轉換
polyarea 多邊形區域 primes 生成質數列表
prod 數組元素的乘積 rectint 矩形交集區域
sort 按升序排列矩陣元素 sortrows 按升序排列行
std 標准偏差 sum 求和
trapz 梯形數值積分 var 方差
del2 離散拉普拉斯 diff 差值和微分估計
gradient 數值梯度 cov 協方差矩陣
corrcoef 相關系數 conv2 二維卷積
conv 卷積和多項式乘法 filter IIR或FIR濾波器
deconv 反卷積和多項式除法 filter2 二維數字濾波器
cplxpair 將復數值分類為共軛對 fft 一維的快速傅立葉變換
fft2 二維快速傅立葉變換 fftshift 將FFT的DC分量移到頻譜中心
ifft 一維快速反傅立葉變換 ifft2 二維傅立葉反變換
ifftn 多維快速傅立葉變換 ifftshift 反FFT偏移
nextpow2 最靠近的2的冪次 unwrap 校正相位角
多項式與插值
conv 卷積和多項式乘法 roots 多項式的根
poly 具有設定根的多項式 polyder 多項式微分
polyeig 多項式的特徵根 polyfit 多項式擬合
polyint 解析多項式積分 polyval 多項式求值
polyvalm 矩陣變數多項式求值 resie 部分分式展開
interp1 一維插值 interp2 二維插值
interp3 三維插值 interpft 使用FFT的一維插值
interpn 多維插值 meshgrid 為3維點生成x和y的網格
ndgrid 生成多維函數和插值的數組 pchip 分段3次Hermite插值多項式
ppval 分段多項式的值 spline 3次樣條數據插值
繪圖函數
bar 豎直條圖 barh 水平條圖
hist 直方圖 histc 直方圖計數
hold 保持當前圖形 loglog x,y對數坐標圖
pie 餅狀圖 plot 繪二維圖
polar 極坐標圖 semilogy y軸對數坐標圖
semilogx x軸對數坐標 subplot 繪制子圖
bar3 數值3D豎條圖 bar3h 水平3D條形圖
comet3 3D慧星圖 cylinder 圓柱體
fill3 填充的3D多邊形 plot3 3維空間繪圖
quiver3 3D震動(速度)圖 slice 體積薄片圖
sphere 球 stem3 繪制離散表面數據
waterfall 繪制瀑布 trisurf 三角表面
clabel 增加輪廓標簽到等高線圖中 datetick 數據格式標記
grid 加網格線 gtext 用滑鼠將文本放在2D圖中
legend 圖注 plotyy 左右邊都繪Y軸
title 標題 xlabel X軸標簽
ylabel Y軸標簽 zlabel Z軸標簽
contour 等高線圖 contourc 等高線計算
contourf 填充的等高線圖 hidden 網格線消影
meshc 連接網格/等高線 mesh 具有參考軸的3D網格
peaks 具有兩個變數的采樣函數 surf 3D陰影表面圖
surface 建立表面低層對象 surfc 海浪和等高線的結合
surfl 具有光照的3D陰影表面 trimesh 三角網格圖

8. 關於數學建模中用到的數學理論和編程演算法

關於程序,我建議你用matlab或者mathmaticas,用這類專用數學軟體比較好,因為我知道絕大多數人對C及C++的掌握還不至於到能夠熟練寫出你上述的各種演算法(當然一些的簡單的可以參考ACM的相關書籍),況且在實際工作中很多科學工作者或是工程師都是用Matlab之類的數學軟體,所以我也建議你用。
至於你是工科的(我也是),所以我也能夠理解你想學習上述各種演算法等的想法,但是我覺得這個真的不太現實,我自己也很愛好數學,在平時我也經常學習各種非自己專業的數學知識,但是實際上你學習了之後也要理解,更何況你要運用它到非常熟練的程度(絕非一般考試可比),所以我認為你就必須要非常有選擇的看,而且強烈建議你先做好規劃(一定要符合自己實際情況,不要貪心),然後抓緊學。
我看你上面列的,其中組合數學非常難,但是你一定要非常踏實地學好(這個會應用在許多連你自己都想不到的地方),另外圖論也是必須的,但這里我建議你先學習《離散數學》中的「圖論」,當你以後在運用中如果遇到更高深的理論再去參考專門的圖論書籍也不遲。另外微分方程我建議你先學習一些基礎的知識即可,因為在建模中大多數情況下我覺得你只要會建立就行了,這塊內容不用涉入太深,不然太費時間。至於你後面列的一些演算法,這個沒辦法迴避的,但也不是說你要一個個看過來,當然你可以考慮先走馬觀花地掃一遍,然後在仔細深入地學習集中重要的,相對出現幾率大的演算法。建議你多多拿題目來練習,在練題的過程中順帶學習相應知識,這樣效率比較高。

其他的我也幫不了什麼,關鍵你自己要抓緊,效率要大大提高。最後祝你好運!

閱讀全文

與建模常用演算法代碼相關的資料

熱點內容
wpsppt怎麼轉pdf格式 瀏覽:86
騰訊文檔在線編輯怎麼添加密碼 瀏覽:868
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954
Linux定位內存泄露 瀏覽:198
工程加密狗視頻 瀏覽:720
不在內網怎麼連接伺服器 瀏覽:664
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137
交易平台小程序源碼下載 瀏覽:148
程序員記筆記用什麼app免費的 瀏覽:646
java與單片機 瀏覽:897
伺服器內網如何通過公網映射 瀏覽:478
程序員穿越到宋代 瀏覽:624
怎麼使用雲伺服器掛游戲 瀏覽:618
真實的幸福pdf 瀏覽:344
d盤php調用c盤的mysql 瀏覽:266
怎麼樣搭建源碼網站 瀏覽:429
新概念四冊pdf 瀏覽:364