日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB在数学建模中的应用(三)

發(fā)布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB在数学建模中的应用(三) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

optimset函數(shù)

功能:創(chuàng)建或編輯優(yōu)化選項參數(shù)結(jié)構(gòu)。
語法:

1 options = optimset(‘param1’,value1,’param2’,value2,…) 2 options = optimset 3 options = optimset(oldopts,’param1’,value1,…)

?



描述:
options = optimset(‘param1’,value1,’param2’,value2,…) 創(chuàng)建一個稱為options的優(yōu)化選項參數(shù),其中指定的參數(shù)具有指定值。所有未指定的參數(shù)都設置為空矩陣[](將參數(shù)設置為[]表示當options傳遞給優(yōu)化函數(shù)時給參數(shù)賦缺省值)。賦值時只要輸入?yún)?shù)前面的字母就行了。

optimset函數(shù)沒有輸入輸出變量時,將顯示一張完整的帶有有效值的參數(shù)列表。

options = optimset (with no input arguments) 創(chuàng)建一個選項結(jié)構(gòu)options,其中所有的元素被設置為[]。

eg 2.7

1 function f= fun1(x) 2 f=x(1)^2+x(2)^2+8; 3 end 4 function [g,h]=fun2(x) 5 g=-x(1)^2-x(2)^2; 6 h=-x(1)-x(2)^2+2; 7 end 8 9 %命令以及函數(shù)調(diào)用 10 options=optimset; 11 [x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],... 12 'fun2',options) 13 x = 14 15 0.5000 16 1.2247 17 18 19 y = 20 21 9.7500

?

eg 2.8

1 function f= fun1(x) 2 f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4))); 3 end 4 function [g,h]=fun2(x) 5 g(1)=x(1)-400; 6 g(2)=1.1*x(1)+x(2)-440; 7 g(3)=1.21*x(1)+1.1*x(2)+x(3)-484; 8 g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4; 9 h=0; 10 end 11 12 x0=[1;1;1;1]; 13 %options=optimset; 14 [x,y]=fmincon('fun1',x0,[],[],[],[],zeros(4,1),[],... 15 'fun2') 16 x = 17 18 1.0e+02 * 19 20 0.861883268508773 21 1.042878554277346 22 1.261883183737369 23 1.526878812873891 24 25 26 y = 27 28 -43.085960574428569

?

罰函數(shù)法:
eg 2.10
1)普通方法

1 function f= fun1(x) 2 f=x(1)^2+x(2)^2+8; 3 end 4 function [g,h]=fun2(x) 5 g=-x(1)^2+x(2); 6 h=-x(1)-x(2)^2+2; 7 end 8 9 [x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],... 10 'fun2 11 x = 12 13 1.000001999995532 14 0.999999000001734 15 16 17 y = 18 19 10.000001999999531

?

2)罰函數(shù)

1 function g= fun1(x) 2 M=50000; 3 f=x(1)^2+x(2)^2+8;%產(chǎn)生的中間函數(shù) 4 g=f-M*min(x(1),0)-M*min(x(2),0)-M*min(x(1)^2-x(2),0)+... 5 M*abs(-x(1)-x(2)^2+2); 6 end 7 [x,y]=fminunc('fun1',rand(2,1)) 8 x = 9 10 0.508134596752331 11 1.221419421512379 12 13 14 y = 15 16 4.817068272095967e+04

?

rand(‘state’,sum(clock))
作用是定義一個隨時間變化的初值x_0。

tic和toc
用來記錄matlab命令執(zhí)行的時間。
tic用來保存當前時間,而后使用toc來記錄程序完成時間。
兩者往往結(jié)合使用,用法如下:
tic
operations
toc
顯示時間單位:秒。

y = floor(x)
函數(shù)將x中元素取整,值y為不大于本身的最小整數(shù)。

ceil
是向離它最近的大整數(shù)取整

云模型

1 N=1500; 2 Y=[9.5 10.3 10.1 8.1 3 10.3 9.7 10.4 10.1 4 10.6 8.6 9.2 10 5 10.5 10.4 10.1 10.1 6 10.9 9.8 10 10.1 7 10.6 9.8 9.7 10 8 10.4 10.5 10.6 10.3 9 10.1 10.2 10.8 8.4 10 9.3 10.2 9.6 10 11 10.5 10 10.7 9.9]'; 12 13 for i=1:size(Y,1) 14 subplot(size(Y,1)/2,2,i); 15 [x,y,Ex,En,He]=cloud_transform(Y(i,:),N); 16 plot(x,y,'r.'); 17 xlabel('射擊成績分布/環(huán)'); 18 ylabel('確定度'); 19 title(strcat('',num2str(i),'人射擊云模型還原圖')); 20 axis([8,12,0,1]); 21 end 22 function [x,y,Ex,En,He]= cloud_transform(y,n) 23 Ex=mean(y);%y是一個向量,代表每一個人的射擊數(shù)據(jù) 24 En=mean(abs(y-Ex)).*sqrt(pi/2);%向量 25 He=sqrt(var(y)-En.^2);%向量 26 for q=1:n 27 Enn=randn(1).*He+En; 28 %randn(1)產(chǎn)生一個隨數(shù),但He為向量 29 x(q)=randn(1).*Enn+Ex; 30 y(q)=exp(-(x(q)-Ex).^2./(2.*Enn.^2)); 31 end 32 x; 33 y;

?

logistic模型

1 syms a b; 2 c=[a b]'; 3 A=[174 179 183 189 207 234 220.5 256 270 285]; 4 B=cumsum(A); 5 n=length(A); 6 for i=1:(n-1) 7 C(i)=(B(i)+B(i+1))/2; 8 end 9 D=A; 10 D(1)=[]; 11 D=D'; 12 E=[-C;ones(1,n-1)]; 13 c=inv(E*E')*E*D; 14 c=c'; 15 a=c(1);b=c(2); 16 %計算待定參數(shù)a,b的值 17 F=[];F(1)=A(1); 18 for i=2:(n+10) 19 F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a; 20 end 21 G=[];G(1)=A(1); 22 for i=2:(n+10) 23 G(i)=F(i)-F(i-1);%為預測出來的20組數(shù)據(jù) 24 end 25 t1=1995:2004; 26 t2=1995:2014; 27 G;a,b 28 plot(t1,A,'o',t2,G)

?

歸一化函數(shù)mapminmax
[pn,ps]=mapminmax(P)或=mapstd(P) %P是輸入向量,pn,ps是什么?
pn表示你歸一化后的返回數(shù)據(jù)
ps是進行歸一化時所用的參數(shù)。
下面的實例更能幫助理解:

1 x=[100,200,300,400]; 2 [pn,px]=mapminmax(x); 3 pn = 4 -1.0000 -0.3333 0.3333 1.0000 5 px = 6 name: ‘mapminmax’ 7 xrows: 1 8 xmax: 400 9 xmin: 100 10 xrange: 300 11 yrows: 1 12 ymax: 1 13 ymin: -1 14 yrange: 2 15 no_change: 0 16 gain: 0.0067 17 xoffset: 100

?

figure
是建立圖形的意思,系統(tǒng)自動從1,2,3,4…來建立圖形,數(shù)字代表第幾幅圖形,figure(1),figure(2)就是第一第二副圖的意思,在建立圖形的時候,您注意一下它的標題就是figure1或figure2等等,對應到程序中就是您的例子語句
一般建立新圖只需要一個figure就行,系統(tǒng)自動建立新圖,可以簡單一點,當然要加上也可以。

subplot(m,n,k)
多子圖,就是一張圖中有好多小圖,也是有標號的
subplot(‘Position’,[left bottom width height])
m表示畫幾行
n表示畫幾列
k表示現(xiàn)在畫的是第幾幅圖

基于MATLAB工具箱公路運量預測 P137 源代碼

1 clc; 2 p=[sqrs;sqjdcs;sqglmj]; 3 t=[glkyl;glhyl]; 4 [pn,input_str]=mapminmax(p); 5 [tn,output_str]=mapminmax(t); 6 net=newff(pn,tn,[3,7,2],{'purelin','logsig','purelin'}); %建立模型,并用梯度下降法訓練. 7 net.trainParam.show=10; 8 net.trainParam.Lr=0.05; %學習速度為0.05 9 net.trainParam.epochs=5000; %最大訓練輪回為50000次 10 net.trainParam.goal=0.65*10^(-3); 11 net.divideFcn=''; 12 net=train(net,pn,tn); %開始訓練,其中pn,tn分別為輸入輸出樣本 13 %利用原始數(shù)據(jù)對BP網(wǎng)絡仿真 14 an=sim(net,pn); %用訓練好的模型進行仿真 15 a=mapminmax('reverse',an,output_str); % 把仿真得到的數(shù)據(jù)還原為原始的數(shù)量級 16 x=1990:2009; 17 newk=a(1,:); 18 newh=a(2,:); 19 figure(2); 20 subplot(2,1,1); 21 plot(x,newk,'r-o',x,glkyl,'b--+'); 22 legend('網(wǎng)絡輸出客運量','實際客運量'); 23 xlabel('年份'); 24 ylabel('客運量/萬人'); 25 title('運用工具箱客運量學習和測試對比圖'); 26 subplot(2,1,2); 27 plot(x,newh,'r-o',x,glhyl,'b--+'); 28 legend('網(wǎng)絡輸出貨運量','實際貨運量'); 29 xlabel('年份'); 30 ylabel('貨運量/萬人'); 31 title('運用工具箱貨運量學習和測試對比圖'); 32 33 pnew=[73.39 75.55 34 3.9635 4.0975 35 0.9880 1.0268]; 36 pnewn=mapminmax('apply',pnew,input_str); 37 anewn=sim(set,pnewn); 38 anew=mapminmax('reverse',anewn,output_str);

?

但是不造為毛,出錯 haha (line 21)

1 plot(x,newk,’r-o’,x,glkyl,’b–+’);

?

轉(zhuǎn)載于:https://www.cnblogs.com/twomeng/p/9476366.html

總結(jié)

以上是生活随笔為你收集整理的MATLAB在数学建模中的应用(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。