24小时热门版块排行榜    

查看: 926  |  回复: 0

亲吻指尖

新虫 (初入文坛)

[求助] Matlab求解模型的一段代码,结果并不理想,求指正

目标是求一组能够满足条件:
1、不同削减率下的负荷(也就是y轴),与x轴数据:指标数据 之间的基尼系数;
2、求解的每组基尼系数必须小于初始值;
3、y轴数据必须满足y1<y2<y3…<y10。

“  Sample Text     ”
重要的事情说三遍
-。-。-。-。-。-
  模型是要求解一组满足上述条件的a(i)值,或者是一组y值
  模型是要求解一组满足上述条件的a(i)值,或者是一组y值
  模型是要求解一组满足上述条件的a(i)值,或者是一组y值

这段代码在Matlab中运行得出来的结果不理想:只算出一组明显不合适的数据,求各位大神指正  orz...)
-。-。-。-。-。-。-。-

x1=[0,0.16,0.16,0.70,0.30,0.16,0.16,0.18,0.22,0.35];%x1为单位国土面积水资源量数据输入
x2=[0,0.13,0.13,0.06,0.06,0.13,0.06,0.06,0.13,0.06];%x2为较差水质断面
x3=[0,6.13,5.25,6.04,4.77,4.52,4.52,4.52,5.44,4.39];%x3为人均GDP
x4=[0,62.16,108.30,10.25,29.69,26.96,56.92,54.42,138.17,38.95];%人均污染物产生强度
x5=[0,15.12,28.75,1585.09,373.30,609.63,191.31,172.63,235.38,380.80];%污染物处理量
x6=[0,0.02,0.03,0.48 0.29 0.48 0.21 0.30 0.18 0.53];%重点行业产业占比

y=[0,126.23,181.01,190.69,418.35,888.03,1063.26,1463.17,2027.39,2175.27 ];%y轴数据输入
%a=perms([0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1]);%将数组排列组合
a=nchoosek(0:0.01:0.1,10);%排列组合
b=size(a,1);%矩阵a的行数
G=ones(b,1);
for i=1:b
    y1=y.*a(i);
    if y1(1)<y1(2)<y1(3)<y1(4)<y1(5)<y1(6)<y1(7)<y1(8)<y1(9)<y1(10)
        x12=cumsum(x1)./sum(x1)*100;%x累积百分比
        y12=cumsum(y1)./sum(y1)*100;%y轴累计百分比
        c=polyfit(x12',y12',7);%数据拟合
        x13=linspace(0,100);%精细化处理
        d=polyval(c,x13);%数据求值
        B=trapz(x13,d);
        A=trapz(x13,x13-d);
        G(1)=A/(A+B)%吉尼系数
x22=cumsum(x2)./sum(x2)*100;
        y22=cumsum(y1)./sum(y1)*100;
        c=polyfit(x22',y22',7);%数据拟合
        x23=linspace(0,100);%精细化处理
        d=polyval(c,x23);%数据求值
        B=trapz(x23,d);
        A=trapz(x23,x23-d);
        G(2)=A/(A+B)%吉尼系数
x32=cumsum(x3)./sum(x3)*100;%x累积百分比
        y32=cumsum(y1)./sum(y1)*100;%y轴累计百分比
        c=polyfit(x32',y32',7);%数据拟合
        x33=linspace(0,100);%精细化处理
        d=polyval(c,x33);%数据求值
        B=trapz(x33,d);
        A=trapz(x33,x33-d);
        G(3)=A/(A+B)%吉尼系数
x42=cumsum(x4)./sum(x4)*100;%x累积百分比
        y42=cumsum(y1)./sum(y1)*100;%y轴累计百分比
        c=polyfit(x42',y42',7);%数据拟合
        x43=linspace(0,100);%精细化处理
        d=polyval(c,x43);%数据求值
        B=trapz(x43,d);
        A=trapz(x43,x43-d);
        G(4)=A/(A+B)%吉尼系数
x52=cumsum(x5)./sum(x5)*100;%x累积百分比
        y52=cumsum(y1)./sum(y1)*100;%y轴累计百分比
        c=polyfit(x52',y52',7);%数据拟合
        x53=linspace(0,100);%精细化处理
        d=polyval(c,x53);%数据求值
        B=trapz(x53,d);
        A=trapz(x53,x53-d);
        G(5)=A/(A+B)%吉尼系数
x62=cumsum(x6)./sum(x6)*100;%x累积百分比
        y62=cumsum(y1)./sum(y1)*100;%y轴累计百分比
        c=polyfit(x62',y62',7);%数据拟合
        x63=linspace(0,100);%精细化处理
        d=polyval(c,x63);%数据求值
        B=trapz(x63,d);
        A=trapz(x63,x63-d);
        G(6)=A/(A+B)%吉尼系数
        if G(1)<0.32&G(2)<0.35&G(3)<0.23&G(4)<0.36&G(5)<0.6&G(6)<0.14
G=G(1)+G(2)+G(3)+G(4)+G(5)+G(6)
        end
    end
end
[Gmini,n]=min(G)%得出G的最小值,位置序号
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 亲吻指尖 的主题更新
信息提示
请填处理意见