在matlab中画出了自变量与因变量的三维图,能否利用编程或者拟合求出最佳的一组值呢(最优解)?

问题描述:

在matlab中画出了自变量与因变量的三维图,能否利用编程或者拟合求出最佳的一组值呢(最优解)?
数据:
供油提前角/CA  16°    17.5°    19°    21°    22°    23.7°  

负荷:3kg          0.08    0.09    0.09    0.1    0.11    0.11    

        6kg          0.04    0.05    0.06    0.08    0.1    0.15    

        9kg          0.02    0.05    0.12    0.19    0.27    0.44    

       10kg         0.03    0.06    0.2      0.35    0.46    0.62    

       12kg         0.32    0.45    0.84    0.88    0.94    1.17    
 其中自变量是负荷、供油提前角,因变量是                                                                                                                生物柴油混合比例为30%即B30 燃烧后的                                                                                                                     CO排放(单位:10的负二次方)
程序:
x=[16 17.5 19 21 22 23.7];
y=[3 6 9 10 12];
z=[ 0.08    0.09    0.09    0.1    0.11    0.11;    
0.04    0.05    0.06    0.08    0.1    0.15;    
0.02    0.05    0.12    0.19    0.27    0.44;   
0.03    0.06    0.2      0.35    0.46    0.62;   
0.32    0.45    0.84    0.88    0.94    1.17];
xx=linspace(16,23.7,30);%x是16到23.7的数列,长度为30
yy=linspace(3,12,30);%y是3到12的数列,长度为30
%数列长度可以根据改变,点数越多,数据点越密
zz=griddata(x,y,z,xx,yy','cubic');%插值计算
mesh(xx,yy,zz);
xlabel('提前角(°)');
ylabel('负荷(kg)');
zlabel('CO排放量(10^{-2})');

就是怎样确定一个负荷对应的最佳的提前角,使得CO的排放最小. 

有点长,请耐心看完, 昨天请教的大神,不能继续追问了.
1个回答 分类:综合 2014-10-28

问题解答:

我来补答
插值我觉得就可以了,强行拟合不见得有很好的效果.
其实你现在是已知一个z = f(x,y)函数,现在要求给定 y0,最小化 z = f(x,y0).
这没有什么困难啊,首先得到函数 z = g(x) = f(x,y0); 然后找最小值即可.
这个思路没什么问题吧?
再问: 思路可以,能不能具体解答下呢,本人是matlab盲。。。。。。现在急需,万分感谢
再答: 简单来说,就是取出zz中的一列(行),求最小值。 语法: [min_co, idx] = min(zz(10, :)); % 取第10行 min_xx = xx(idx); 你需要做的是: 搞清楚zz矩阵的行和列到底分别对应哪个自变量。其实也简单,看看行数\列数和xx\yy的长度是否匹配就知道了。
再问: 谢谢啊。你能具体解出来不,我看的糊涂了。谢谢啊。。。。 因为没有学好类似的矩阵和数列,一片茫然。等着急用,直接能呢够用就好了。麻烦了。。。。。一直在等回复,请大神现身
再答: 昨天的回答里有点小错误,第二行的 [~, idx_y] = min(yy-y0); 应该改成 [~, idx_y] = min(abs(yy-y0));
 
 
展开全文阅读
剩余:2000