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:

 採用された回答

Torsten
Torsten 2022 年 4 月 2 日
編集済み: Torsten 2022 年 4 月 2 日

0 投票

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 件のコメント

Ikenna Iwudike
Ikenna Iwudike 2022 年 4 月 2 日
編集済み: Ikenna Iwudike 2022 年 4 月 2 日
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 2022 年 4 月 2 日
編集済み: Torsten 2022 年 4 月 2 日
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 2022 年 4 月 2 日
Oh ok, I didn't add that in. Thanks.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

製品

リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by