簡體   English   中英

Matlab查找無限制的最小值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM