约束条件为x*y=88,目标函数为求和函数,请改写以下两个代码并注明每行意思!

原代码的约束是求和函数,目标函数是x*y最小值,现在我想让这个求和函数


∑(1849000*y + 8600*(k -1 )*y^2 + 10*( k - 1 )^2 * y^3)/ ...
            ((400+(k-1)*y)* (24900+860*(k-1)* y+(k-1)^2 *y^2));有最大
,x*y=88为约束条件

请改写以下两个代码(由Joel解答)

[X,Y] = meshgrid(6:12,8:16);
F = X.*Y;
C = true(size(X));
for i = 1:numel(X)
    n = X(i);% x(1)
    y = Y(i);% x(2)
    c = 0;
    for k = 1:1:n
        c = c+(1849000*y + 8600*(k -1 )*y^2 + 10*( k - 1 )^2 * y^3)/ ...
            ((400+(k-1)*y)* (24900+860*(k-1)* y+(k-1)^2 *y^2));
    end
    C(i) = 6-c<=0;
end
minf = min(F(C));
if(isempty(minf))
    fprintf('无解\n')
else
    I = find((minf==F)&C);
    x = X(I);
    y = Y(I);
    fmin = x*y;
    fprintf('在x=%d,y=%d处目标函数有最大值%d\n',x,y,fmin)
end
F(~C)=NaN;
surf(X,Y,F)



clear; clc;
fun = @( x ) x( 1 ) * x( 2 );
A = [];   
Aeq = [];
b = [];
beq = [];
lb = [ 6, 7];
ub = [ 10, 16 ];
x0 = [1,1];
exitflag = -1;
options = optimoptions('fmincon','Algorithm','sqp');
while(exitflag<=0)
    x0 = lb + ( ub - lb ) .* rand( 1, 2 );
[ x, fval, exitflag ] = fmincon( fun, x0, A, b, Aeq, beq, lb, ub, @MyNonCon ,options)
end
MyNonCon(x0)
function [ c, ceq ] = MyNonCon( x )
f = @( m ) (1849000.*x(2) + 8600 .*( m - 1 ).* x( 2 )^2 + 10.*( m - 1 ).^2 .* x( 2 ).^3) ./ ...
    ((400+(m-1).*x(2)).* (24900+860.*(m - 1).* x( 2 ) + ( m - 1 ).^2 .* x( 2 ).^2 ));
eq = sum( f( [ 1 : 1 : x( 1 ) ] ) );
c =6 -double( eq );
ceq = [];
end

你好,类似这样就行

[X,Y] = meshgrid(6:12,8:16);
F = X.*Y;
C = zeros(size(X));
for i = 1:numel(X)
    n = X(i);% x(1)
    y = Y(i);% x(2)
    c = 0;
    for k = 1:1:n
        c = c+(1849000*y + 8600*(k -1 )*y^2 + 10*( k - 1 )^2 * y^3)/ ...
            ((400+(k-1)*y)* (24900+860*(k-1)* y+(k-1)^2 *y^2));
    end
    C(i) = c;
end

minf = min(C(X.*Y==88));
if(isempty(minf))
    fprintf('无解\n')
else
    I = find((minf==C)&X.*Y==88);
    x = X(I);
    y = Y(I);
    fmin = C(I);
    fprintf('在x=%d,y=%d处目标函数有最小值%d\n',x,y,fmin)
end