『壹』 求一個簡單的matlab程序代碼,只要符合要求即可
1、題目:
把1-10的者兄整數,先判斷首虧襲是否為偶數,並計算它們的和,最後做空擾一下驗證
2、程序:
clc;clear;
sum0=0;
for
i=1:10
%循環
if(mod(i,2)==0)%分支
sum0=sum0+i;
end
end
%檢測
test_data=[2:2:10];%順序
test=sum(test_data);
[sum0
test]
3、運行結果:
ans
=
30
30
『貳』 求Matlab編程大神幫忙編程計算。
MATLAB代碼如下:
c=ones(1,7);
A=[0000112;
0123010;
6420411];
A=-A;
b=-100*ones(3,1);
lb=zeros(1,7);
[x,fval,exitflag]=linprog(c,A,b,[],[],lb)
優化結果譽塌者:
Optimization terminated.
x =
0.0000
0.0000
0.0000
33.3333
14.2857
0.0000
42.8571
fval =
90.4762
exitflag =
1
結果收斂。
1stopt代碼:
Parameterx(1:7)[0,];
MinFunctionx1+x2+x3+x4+x5+x6+x7;
x5+x6+2*x7>=100;
x2+2*x3+3*x4+x6>=100;
6*x1+4*x2+2*x3+4*x5+x6+x7>=100;
優化結果:
迭代數: 94
計算用時(時:分:秒:毫秒): 00:00:01:312
計算中止原因: 達到收斂判定標准
優化演算法: 准牛頓法(BFGS) + 通用全局優化法
函數表達式: x1+x2+x3+x4+x5+x6+x7
目標函數值(最小): 90.4789793976423
x1: 6.56531036168569E-22
x2: 0.0290946768006313
x3: 4.66048571470512E-16
x4: 33.3235799630505
x5: 14.252439546946
x6: 0.00016543404783297
x7: 42.8736997767972
約束函數衫碧
1: x5+x6+2*x7-(100) = 4.534588371E-6
2: x2+2*x3+3*x4+x6-(100) = 0
3: 6*x1+4*x2+2*x3+4*x5+x6+x7-(100) = 2.105831783E-6
====== 計慶薯算結束 ======
兩種方式下計算一致,解可信。
『叄』 基-2fft演算法的軟體實現 matlab代碼
% 基於Matlab的時間抽取基2FFT演算法
function y=myditfft(x)
%本程序對輸入序列實現DIT-FFT基2演算法,點數取大於等於長度的2的冪次
%------------------------------------
% Leo's fft program(改編網上的一個程序)
%------------------------------------
m=log2(2^nextpow2(length(x))); %求的x長度對應的2的最低冪次m
N=2^m;
if length(x)<N
x=[x,zeros(1,N-length(x))]; %若長度不是2的冪,補0到2的整數冪
end
x;
%--------------------------------------------------------------------------
%對輸入序列進行倒序
%如果輸入序列的自然順序號I用二進制數(例如n2n1n0)表示
%則其倒位序J對應的二進制數就是(n0n1n2),這樣,在原來自然順序時應該放x(I)的
%單元,現在倒位序後應放x(J)。
%--------------------------------------------------------------------------
%以下程序相當於以下程序:
%nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1; %求1:2^m數列的倒序
%y=x(nxd); %將倒序排列作為初始值
%--------------------------------------------------------------------------
NV2=N/2;
NM1=N-1;
I=0;
J=0;
while I<NM1
if I<J
T=x(J+1);
x(J+1)=x(I+1);
x(I+1)=T;
end
K=NV2;
while K<=J
J=J-K;
K=K/2;
end
J=J+K;
I=I+1;
end
x;
%--------------------------------------------------------------------------
%以下程序解釋:
%第一級從x(0)開始,跨接一階蝶形,再取每條對稱
%第二級從x(0)開始,跨接兩階蝶形,再取每條對稱
%第m級從x(0)開始,跨接2^(m-1)階蝶形,再取每條對稱....
%--------------------------------------------------------------------------
for mm=1:m %將DFT做m次基2分解,從左到右,對每次分解作DFT運算
Nmr=2^mm;
u=1; %旋轉因子u初始化
WN=exp(-j*2*pi/Nmr); %本次分解的基本DFT因子WN=exp(-i*2*pi/Nmr)
for n=1:Nmr/2 %本次跨越間隔內的各次碟形運算
for k=n:Nmr:N %本次碟形運算的跨越間隔為Nmr=2^mm
kp=k+Nmr/2; %確定碟形運算的對應單元下標(對稱性)
t=x(kp)*u; %碟形運算的乘積項
x(kp)=x(k)-t; %碟形運算的加法項
x(k)=x(k)+t;
end
u=u*WN; %修改旋轉因子,多乘一個基本DFT因子WN
end
end
y=x; %輸出
『肆』 急求一份多目標遺傳演算法matlab代碼!
我給你一個標准遺傳演算法程序供你參考:
該程序是遺傳演算法優化BP神經網路函數極值尋優:
%% 該代碼為基於神經網路遺傳演算法的系統極值尋優
%% 清空環境變數
clc
clear
%% 初始化遺傳演算法參數
%初始化參數
maxgen=100; %進化代數,即迭代次數
sizepop=20; %種群規模
pcross=[0.4]; %交叉概率選擇,0和1之間
pmutation=[0.2]; %變異概率選擇,0和1之間
lenchrom=[1 1]; %每個變數的字串長度,如果是浮點變數,則長度都為1
bound=[-5 5;-5 5]; %數據范圍
indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %將種群信息定義為一個結構體
avgfitness=[]; %每一代種群的平均適應度
bestfitness=[]; %每一代種群的最佳適應度
bestchrom=[]; %適應度最好的染色體
%% 初始化種群計算適應度值
% 初始化種群
for i=1:sizepop
%隨機產生一個種群
indivials.chrom(i,:)=Code(lenchrom,bound);
x=indivials.chrom(i,:);
%計算適應度
indivials.fitness(i)=fun(x); %染色體的適應度
end
%找最好的染色體
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色體
avgfitness=sum(indivials.fitness)/sizepop; %染色體的平均適應度
% 記錄每一代進化中最好的適應度和平均適應度
trace=[avgfitness bestfitness];
%% 迭代尋優
% 進化開始
for i=1:maxgen
i
% 選擇
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
%交叉
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 變異
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);
% 計算適應度
for j=1:sizepop
x=indivials.chrom(j,:); %解碼
indivials.fitness(j)=fun(x);
end
%找到最小和最大適應度的染色體及它們在種群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次進化中最好的染色體
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;
avgfitness=sum(indivials.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %記錄每一代進化中最好的適應度和平均適應度
end
%進化結束
%% 結果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('適應度曲線','fontsize',12);
xlabel('進化代數','fontsize',12);ylabel('適應度','fontsize',12);
axis([0,100,0,1])
disp('適應度 變數');
x=bestchrom;
% 窗口顯示
disp([bestfitness x]);
提問者評價
謝謝!
『伍』 用MATLAB+計算1-1000立方和的程序
以下是一個使用MATLAB編寫的程序,可以計算1-1000的立方和:
n = 1000; % 設置上限
% 計算立方和
sum = 0;
for i = 1:n
sum = sum + i^3;
end
% 輸出結果
disp(sum);
首先定義了上限值n為1000,然後使用for循環辯畢亂來計算1到n的立方和。具體地,在每次循環中,將當前數字的立方加入到 sum 變數中。
最後,使用disp()函數將計算結果輸出到命令窗口中。
在計算大量數據攜檔時,程序可能需要較長的運行時間和大量的內存空間。如果需要對更大范圍的數進行求和,可能需數梁要對代碼進行優化或採用更高效的演算法。
『陸』 數學建模各種演算法MATLAB的編程代碼,越詳細越好
給你推薦個網站:數學中國http://www.madio.net
不過要簡單注冊一下,發發評論,就有積分了,這樣就可以下載東西,與他人交流,挺權威的數學建模網站,希望能幫到你。
演算法裡面有,給你個網址http://www.madio.net/forum.php?mod=viewthread&tid=198727
這個演算法我下載了,可以傳給你
『柒』 用matlab編寫拉格朗日插值演算法的程序
做了一個測試,希望有所幫助。代碼:% 用matlab編寫拉格朗日插值演算法的程序,並以下面給出的函數表為數據基礎,
% 在整個插值區間上採用拉格朗日插值法計算f(0.6),寫出程序源代碼,輸出計算結果
% x -2.15 -1.00 0.01 1.02 2.03 3.25
% y 17.03 7.24 1.05 2.03 17.06 23.05
function main()
clc;
x = [-2.15 -1.00 0.01 1.02 2.03 3.25];
y = [17.03 7.24 1.05 2.03 17.06 23.05 ];
x0 = 0.6;
f = Language(x,y,x0)function f = Language(x,y,x0)
%求已知數據點的拉格朗日插值多項式
%已知數據點的x坐標向量: x
%已知數據點的y坐標向量: y
%插值點的x坐標: x0
%求得的拉格朗日插值多項式或在x0處的插值: fsyms t l;
if(length(x) == length(y))
n = length(x);
else
disp('x和y的維數不相等!');
return; %檢錯
endh=sym(0);
for (i=1:n)
l=sym(y(i));
for(j=1:i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for(j=i+1:n)
l=l*(t-x(j))/(x(i)-x(j));
end;
h=h+l;
end
simplify(h);if(nargin == 3)
f = subs (h,'t',x0); %計算插值點的函數值
else
f=collect(h);
f = vpa(f,6); %將插值多項式的系數化成6位精度的小數
end結果:
f = 0.0201>>