Finding global minimum with rand

I'm supposed to use the MATLAB function "rand" to generate a large number of random vectors in 3-space, with coordinates between −6 and 6. Then I have to evaluate f at those points to find the minimum. But I don't know if I'm doing it correctly. My function is f(x, y,z) = x^4 + y^4 + z^4 − 3*x^2 − 8*y^2 − 6*x*z − 4*x*y − 10*z^2 + 6*y. Here's what I have so far:

 Risposta accettata

Torsten
Torsten il 2 Apr 2022
Modificato: Torsten il 2 Apr 2022
fumin = Inf;
for i = 1:100000
u = -6 + 12*rand(3,1);
fu = f(u);
if fu < fumin
umin = u;
fumin = fu;
end
end

3 Commenti

Ikenna Iwudike
Ikenna Iwudike il 2 Apr 2022
Modificato: Ikenna Iwudike il 2 Apr 2022
I'm getting these errors when I use that code:
Array indices must be positive integers or logical values.
Error in sym/subsref (line 909)
R_tilde = builtin('subsref',L_tilde,Idx);
Torsten
Torsten il 2 Apr 2022
Modificato: Torsten il 2 Apr 2022
This error message cannot stem from my code above.
At least if f is defined as you showed us:
f = @(u) u(1)^4 ... etc.
Oh ok, I didn't add that in. Thanks.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Centro assistenza e File Exchange

Prodotti

Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by