[英]matlab find min value without constraint
我是Matlab的新手。
我將找到賦予函數的最小值:x(1)^ 2-2 * x(1)* x(2)+ 6 * x(1)+ x(2)^ 2-6 * x(2 )
我試圖在不使用匿名函數的情況下編寫matlab代碼,但是現在我被困在這里。
這是我的代碼:
function minFun()
res = fminsearch(@f2, [0,0]);
function out = f2([x(1) x(2)])
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
end
end
但是它提到這里是function out = f2([x(1) x(2)])
語法錯誤。 我該如何解決?
如果我對您的理解正確,那么您有2個文件。 在您的f2.m
文件中,您應該使用
function out = f2(x)
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
輸入x
已經是一個向量。
如果只有一個文件,則應為以下語法:
function minFun()
res = fminsearch(@f2, [0,0])
function out = f2(x)
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
注意我沒有留下res
;
這樣您就可以看到fminsearch
的輸出。
嘗試功能out = f2(x(1),x(2))
請注意,matlab匿名函數是使用@
運算符調用的,因此您的問題有點令人困惑,因為您的代碼嘗試使用它。
function out = f2([x(1) x(2)])
這行是不正確的,您應該使用變量作為函數參數x
。
如果您不想使用匿名函數,則應該在工作目錄或matlab路徑中有一個f2.m
文件,如另一個答案所述。
function out = f2(x)
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
然后使用字符串引用該函數:
function minFun()
res = fminsearch('f2', [0,0]);
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.