[A, B, C, D] = ndgrid(1:10, 5:5:50, 0.1:0.1:1, 3:3:30);
y = A .* x.^3 + B .* x.^2 + C .* x + D;
[miny, minidx] = min(y(:));
[maxy, maxidx] = max(y(:));
parms_at_min = [A(minidx); B(minidx); C(minidx); D(minidx)];
parms_at_max = [A(maxidx); B(maxidx); C(maxidx); D(maxidx)];
If you have multiple X values then
numx = length(x);
[A, B, C, D, X] = ndgrid(1:10, 5:5:50, 0.1:0.1:1, 3:3:30, x);
y = A .* X.^3 + B .* X.^2 + C .* X + D;
rsy = reshape(y,[], numx);
[miny, minidx] = min(rsy);
[maxy, maxidx] = max(rsy);
parms_at_min = [A(minidx); B(minidx); C(minidx); D(minidx)];
parms_at_max = [A(maxidx), B(maxidx), C(maxidx), D(maxidx)];
I make no claims that this is the most efficient way.
Best Answer