Matlab 函数编辑,求档β值为0.5 ,1.4时Xi的分布情况~ r 是0.062

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 23:48:35
Matlab 函数编辑,求档β值为0.5 ,1.4时Xi的分布情况~ r 是0.062

Matlab 函数编辑,求档β值为0.5 ,1.4时Xi的分布情况~ r 是0.062
Matlab 函数编辑,
求档β值为0.5 ,1.4时Xi的分布情况~ r 是0.062

Matlab 函数编辑,求档β值为0.5 ,1.4时Xi的分布情况~ r 是0.062

这个问题的模型本身并不复杂,属于一个非线性约束优化问题.但由于优化变量比较多,而且目标函数和约束条件的形式比较特殊,使用常规的优化方法很容易失败(我试着用fmincon求解,在构造初始可行解上也花了不少时间,但结果不理想).

 

这里使用遗传算法求解,代码如下:

function zd
r=0.062;
L=1000;
e = 2;
n = 7;
objfun = @(x) sum(x.*((1+r).^(1:n)-1));
B = 0.5:0.5:4;
X = zeros(length(B),10);
for ii=1:length(B)
    b = B(ii);
    opt = gaoptimset('Generations',1e5,'display','iter','Tolcon',1e-3);
    for jj=1:20
        [x,fval,flag] = ga(objfun,n,[],[],[],[],[],[],@nlcon,opt)
        if flag == 1, break, end
    end
    X(ii,:) = [x fval flag jj];
end
 
plot(B,X(:,1:n),'.-')
xlabel('\beta')
ylabel('x_i')
legend(arrayfun(@(i){sprintf('x_%i',i)},1:n),0)
figure
plot(B,X(:,n+1),'.-')
xlabel('\beta')
ylabel('optimal solution')
figure
plot(1:n,X(:,1:n),'d:')
xlabel('i')
ylabel('x_i')
legend(arrayfun(@(b){sprintf('\\beta = %.1f',b)},B))
set(gca,'xticklabel',arrayfun(@(i){sprintf('x%i',i)},1:n))
num2str([B' X(:,1:n)],' %.5g')
 
    function [c,ce] = nlcon(x)
        c = [];
        ce(1) = sum(x)-L;
        ce(2) = sum( (e-log(1:n)).*x/L) - b;
    end
end

 

有几点需要说明的:

1、约束条件中涉及到几个常数在主程序中也可能用到,为方便起见,将其写成嵌套函数的形式.

2、遗传算法本质上带有随机性,求出的结果未必是全局最优的.

3、仍然因为遗传算法本质上是随机的,单次求解的结果有一定的偶然性,有些时候仍然会失败.程序中对此做了一个简单的处理——如果求解失败(根据ExitFlag判断),则重新进行尝试.目前设定的重试次数是20次,根据我实际计算的情况看,对于某些β值,可能需要5-6次甚至十几次才能成功.

4、计算需要的时间可能比较长,希望做好思想准备.

 

下面是一些结果:

Matlab 函数编辑,求档β值为0.5 ,1.4时Xi的分布情况~ Matlab 函数编辑,求档β值为0.5 ,1.4时Xi的分布情况~ r 是0.062 matlab求解微分方程时,m文件函数如何编辑在网上找到一篇博文,内容是这样的二阶非线性系统的微分方程:x″ + 0.5*x′+ 2*x + x^2 = 0求系统在初始条件为x(0)=1,x′(0)=0的数值解. 建立M函数:function matlab求正态分布函数. 求matlab数学函数? matlab 已知函数图像 如何求 函数值 为什么matlab画不出来这个函数的图形啊?我想画函数的图形,我编辑的y=(2*exp(-x))/(1+exp(-x)).^2; 将这个函数保存为dao,文件名也是dao;然后想画图,我是这么编辑的: x=-10:0.01:10;y=dao(x);plot(x,y),可是 用matlab求函数极值. 求MATLAB工具箱函数汇总 用matlab求函数最值点 MATLAB求最值比如函数方程f(x,y)=100,怎么利用MATLAB程序求得当x为多少时y取得最值.小弟刚学MATLAB不久求大神指点. matlab 求函数值最小时的自变量取值 在matlab中求函数值,为什么会求得复数 matlab小白贵跪求高手 ,求高手用matlab计算如下函数值 感激不尽 对数函数求解a、b、c、d都为常数,求ia、b、c、d都为常数,求i(S下面没有i,重新编辑) 函数式:argmin[trace(A)]是什么意思?(A是一个矩阵)用matlab怎么编辑这个公式? matlab求曲线线性拟合问题x:1 2 3 4 5y:4 4.5 6 8 10权函数值均为1求线性拟合函数,这个要怎么用MATLAB来解哦? MATLAB 中绝对值符号如何编辑