求matlab大佬指点

这个题目要求用拟牛顿法(DFP算法)来算最优化值,但是不管怎么写的代码都无法用, 在谷歌查了好几天,也用了好几个模版的编码,一直都不可以,有大神可以指点一下吗

牛顿方法需要导数(梯度),估计你是这一步出问题了,把你求导的公式和code贴出来看看。

这是什末级别的问题,本科?高中?完全看不懂呀?

fun = @(x)1/2*x’Ax + b’*x;
A = [1,2,-1,1;2,5,0,2;-1,0,6,0;1,2,0,3];
b = [0;-2;1;-1];
x0 = [1;0;0;0];
options = optimoptions(‘fminunc’,‘Algorithm’,‘quasi-newton’,‘HessUpdate’,‘dfp’,‘ObjectiveLimit’,10e-6);
[x,fval,exitflag,output,grad,hessian] = fminunc(fun,x0,options);

试试这个

感觉楼主需要自己写原始算法的code,不是用现成的routine那么简单吧。 {:5_142:}

算法还用写?直接打开那个fminunc复制粘贴就是了
他这肯定就是用matlab解题吧

LZ 要exact line search,貌似你这行不通撒

有偿可以考虑下

好奇,x’是41,A是44,两个相乘结果是4*4吗?

x’ (1x4) A (4x4) x(4x1)

原帖x是14,那x’不是41?可能是我对逗号的理解不同。如果f(x)是一个数值,那x’确实应该是1*4。

修改的帖子发不出,可能我对逗号的理解不同。如果f(x)是一个数值,那x’确实应该是1*4。

原贴的问题表述是有点不严格。

4x1 和 4x4怎么乘。。。里面的两个数字要一样才能做矩阵相乘。

matlab用逗号是1x4,但是楼主的公式就错了,所以我只好改成分号才行

这个板块的讨论内容真科幻:lol

正常数学degree的话
也就是个大一的级别

这个是很经典的二次型优化问题,可以用于资产最优配置。楼主花点时间慢慢搞吧,不要去网上搜代码了。
原题是无约束的,最优解可以直接求解的。对f(x)微分,然后最优解就是求Ax+b=0

具体什么问题,是不是无法收敛?

我觉得也不能用现成的 但是可以有个大概 可以看看源代码的