我有一个与基础数学相关的问题,但是使用Matlab求解方法。这是一个问题:
y = 5;
for x=0.01:100
F = 3*x + y - 2*x^2;
end
从上面的迭代方程中我想找到max [F]值及其相对[x]。是否有可能通过matlab求解器来解决它。你能帮我解决这个问题吗?
答案 0 :(得分:2)
对于无约束的非线性优化(根据您的上一次编辑),使用fminsearch
来解决您的问题。它会是这样的:
F = @(x) 3*x + y - 2*x^2;
xini = 5; %initial value to the solver
[xsolu Fsolu] = fminsearch(@F,xini)
要控制选项,解算器的参数请参阅optimset
opts = optimset('MaxFunEvals',10e4, 'MaxIter', 10e4)
[xsolu Fsolu] = fminsearch(@F,xini, opts)
根据您原始配方的解决方案是:
x=0.01:100;
F = zeros(length(x),1);
for ii = 1:length(x)
F(i) = 3*x(i) + y - 2*x(i)^2;
end
xsolu = max(F);
Fsolu = F(x == xsolu);
这是一种效率很低的方法,仅此而已。