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:

 Akzeptierte Antwort

Torsten
Torsten am 2 Apr. 2022
Bearbeitet: Torsten am 2 Apr. 2022

0 Stimmen

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 Kommentare

Ikenna Iwudike
Ikenna Iwudike am 2 Apr. 2022
Bearbeitet: Ikenna Iwudike am 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 am 2 Apr. 2022
Bearbeitet: Torsten am 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.
Ikenna Iwudike
Ikenna Iwudike am 2 Apr. 2022
Oh ok, I didn't add that in. Thanks.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Elementary Math finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by