一个小白白又白 2021-11-19 15:13 采纳率: 57.1%
浏览 27
已结题

请问这个程序为什么不能输出小数呢,改变约束条件,X一直输出为固定的整数

三个变量,我知道Z变量求解不变是因为函数问题,不知为何改变约束 X 也一直输出为一个整数

[X,Y,Z] = meshgrid(5:.01:10,8:.01:15,24:30);
F = X.*Y+Z;
C = true(size(X));
for i = 1:numel(X)
    n = X(i);% x(1)
    y = Y(i);% x(2)
    z = Z(i);
    c = 0;
    for k = 1:0.01:n
        c = c+(4970250*y + 14100*(k -1 )*y^2*z + 10*( k - 1 )^2 * y^3 + 20*(k-1)*y^2*z+10*y*z^2)/ ...
            ((705+(k-1)*y)* (1410*(k-1)* y * z+(k-1)^2 *y^2+2*(k-1)*y*z+z^2));
    end
    C(i) = 31.4+(31213170/(1410*x*y+1410*z+x^2*y^2+2*x*y*z+z^2))-(159*z/(x*y+z))-(161.5*x*y/(x*y+z))-0.1*2*c<=0;
end
minf = min(F(C));
if(isempty(minf))
    fprintf('无解\n')
else
    I = find((minf==F)&C);
    x = X(I);
    y = Y(I);
    z = Z(I);
    fmin = x*y+z;
    fprintf('在x=%d,y=%d,z=%d处目标函数有最小值%d\n',x,y,z,fmin)
end
F(~C)=NaN;
surf(X,Y,Z,F)

得到的不是想要的结果,不知是不是函数的问题,还是程序的问题。
我的解答思路和尝试过的方法 :改变X,Y,X取值范围,以及区间步数没有效果
我想要达到的结果:输出X,Y,Z都可以是小数,或者有没有其他的函数可以求解这种三元约束非线性方程,(一个三元约束方程,一个三元目标函数,三元范围给定)请求解答
  • 写回答

1条回答 默认 最新

  • joel_1993 2021-11-19 16:56
    关注

    画图你的XYZ都是3D的数组,所以建议用scatter3画图

     
    [X,Y,Z] = meshgrid(5:.01:10,8:.01:15,24:30);
    F = X.*Y+Z;
    C = true(size(X));
    for i = 1:numel(X)
        n = X(i);% x(1)
        y = Y(i);% x(2)
        z = Z(i);
        c = 0;
        for k = 1:0.01:n
            c = c+(4970250*y + 14100*(k -1 )*y^2*z + 10*( k - 1 )^2 * y^3 + 20*(k-1)*y^2*z+10*y*z^2)/ ...
                ((705+(k-1)*y)* (1410*(k-1)* y * z+(k-1)^2 *y^2+2*(k-1)*y*z+z^2));
        end
        x = n;
        C(i) = 31.4+(31213170/(1410*x*y+1410*z+x^2*y^2+2*x*y*z+z^2))-(159*z/(x*y+z))-(161.5*x*y/(x*y+z))-0.1*2*c<=0;
    end
    minf = min(F(C));
    if(isempty(minf))
        fprintf('无解\n')
    else
        I = find((minf==F)&C);
        x = X(I);
        y = Y(I);
        z = Z(I);
        fmin = x*y+z;
        fprintf('在x=%d,y=%d,z=%d处目标函数有最小值%d\n',x,y,z,fmin)
    end
    F(~C)=NaN;
    scatter3(X(:),Y(:),Z(:),10,F(:))
    

    结果:

    在x=5.010000e+00,y=1.498000e+01,z=24处目标函数有最小值9.904980e+01
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒