【发布时间】:2013-07-30 15:34:26
【问题描述】:
我希望最小化(使用 fmincon 或类似功能)以下函数:
function Difference= myfun3(wk,omega,lambda,Passetcovar,tau,PMat,i,Pi,Q)
wcalc=inv(lambda* Passetcovar)*inv(inv(tau * Passetcovar)+ PMat(i,:)'*inv(omega)*PMat(i,:))*(inv(tau * Passetcovar)*Pi+ PMat(i,:)'*inv(omega)*Q(i,:));
Difference=sum((wk-wcalc).^2);
end
wk 和 wcalc 是 列向量,其中 wk 已知且 wcalc 由上述等式给出。
如何通过将Omega 更改为Omega >0 来最小化Difference
- lambda- 标量
- Passetcovar-
- tau - 标量
- PMat-
- Omega- 标量
- Q-
- Pi-
【问题讨论】:
-
您通常需要对函数进行一些处理,以确保局部最小值实际上是全局最小值(例如,函数是凸函数)。是这样吗?
-
“最小化 f”是什么意思,它不是标量吗?
-
抱歉,是的,它是一个标量 @Dennis Jaheruddin。
-
调用变量 diff 是一个非常糟糕的主意,因为这会与 matlab 中非常有用的工具 - diff 发生冲突。大写的 D 将防止直接的名称冲突,但它仍然是一种糟糕的风格,因为这可能会在以后的某个时候让您感到困惑。
-
另外,你应该告诉我们这些数组的形状,因为我敢打赌(有信心)最小化可以使用线性代数而不是最小化器来完成。但是,除非我确切地知道你在做什么,否则我不会努力写出来。
标签: matlab function optimization