Hello Arashdeep,
The vectors ‘q’, ‘x’, and ‘y’ have dimensions of [99,1], while ‘u’ and ‘v’ have dimensions of [1,101]. Subtracting ‘u’ from ‘x’ and ‘v’ from ‘y’ will cause an error because their dimensions do not match. Additionally, since the vector ‘q’ is [99,1], when the value of ‘i’ reaches 100, an index out of bounds error will occur. To fix this, all the vectors need to be adjusted to have the same dimensions.
Assuming all the vectors are adjusted to a dimension of [100,1], the following steps can be followed:
- To find multiple values of function ‘f’, first step is to pre-allocate memory in which those values can be stored in.
f_values = zeros(100, 1);
uMinusx = u-x;
vMinusy = v-y;
for i = 1:100
f_values(i) = sum(q(i) * (uMinusx.^2 + vMinusy.^2));
end
- Utilize the ‘islocalmin’ function to identify all the local minima. For more information on the ‘islocalmin’ function, refer to this documentation: https://www.mathworks.com/help/matlab/ref/islocalmin.html .
localMinima = islocalmin(f_values);
numLocalMinima = sum(localMinima);
- Use ‘min’ function, to find value and index of function ‘f’ at global minima. Refer to this documentation for more information on ‘min’ function: https://www.mathworks.com/help/matlab/ref/min.html .
[minValue, minIndex] = min(f_values);