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:

 Respuesta aceptada

Torsten
Torsten el 2 de Abr. de 2022
Editada: Torsten el 2 de Abr. de 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 comentarios

Ikenna Iwudike
Ikenna Iwudike el 2 de Abr. de 2022
Editada: Ikenna Iwudike el 2 de Abr. de 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 el 2 de Abr. de 2022
Editada: Torsten el 2 de Abr. de 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.
Ikenna Iwudike
Ikenna Iwudike el 2 de Abr. de 2022
Oh ok, I didn't add that in. Thanks.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Productos

Versión

R2021a

Preguntada:

el 2 de Abr. de 2022

Comentada:

el 2 de Abr. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by