【发布时间】:2014-03-20 15:27:37
【问题描述】:
我想找到向量p(即p(1),p(2),p(3),...)的值,它可以最大化函数A(p)。
我正在使用 MATLAB 来执行此操作,我发现 fsolve 我认为它可以帮助我。所以我做了函数A:
function A = myfun(p)
R = 0.1;
u1 = 500;
u2 = 400;
u3 = 300;
A = ( (p(1)+p(2)+p(3)) * (1/u1+1/u2+1/u3)) * ...
(1 + R*(p(1)^2+p(2)^2+p(3)^2) * (1/u1+1/u2+1/u3) );
然后我需要求解一个方程组:
diff(A,p(1))==0
diff(A,p(2))==0
diff(A,p(3))==0
生成的p 向量将解决我的问题。
fsolve 如何解决这个方程组 (p0=[1 1 1])?
【问题讨论】:
-
你的符号在哪里?您需要一个符号变量才能使 diff 像那样工作。要么使用数值,创建向量域,然后计算导数的有限差分逼近,要么创建符号变量并执行解析导数。我假设您选择了有趣的(符号)选项。
-
我没有为此使用符号变量,我不知道该怎么做。也许我应该创建一个计算 diff(A) 的函数,或者如果可能的话,在函数 myfun 中计算它。我对函数如何处理输入和输出感到困惑
-
请提供示例输入,我会回答并给你代码。
-
输入哪个函数? p 是我想找到的向量,所以我想这是我的输入吗?谢谢
标签: matlab maximize derivative nonlinear-optimization