如何针对x的正值解决此系统?
我使用fval但它无法找到答案并要求更大的迭代,这是无益的...
a必须为正且小于0.05
b必须大于88
function F = Final_Project_2(x)
F = [(1/x(1)) + (1/x(2))- (2/(7*x(3)));
(x(3)+2*x(4))*(15*x(2))/((x(1)+x(2))*x(3)-0.7/x(3))-14;
(x(3)*((0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)))/(x(3)+(0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)) - a;
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-b];
修改
这个问题是如何“太局部化”的?!!
我通过设计公共发射极放大器得出了这个方程组。第一个等式来自$ / betha / $的独立性。第二个是从Collector到Emitter的kvl。第三个是CE增益。最后一个是R_in
答案 0 :(得分:6)
这非常适合非线性约束优化类别,fmincon在这里很有用。 Fmincon允许您在解决方案向量上放置上限和下限时解决非线性系统。问题是解决方案将取决于您的起点......所以如果您对应该的解决方案有一个很好的猜测,那就有助于 GREATLY 。
这个类比就像要求求解器爬到它前面的山顶,或者要求它从一些随机的起点背包里找到欧洲最高的山峰。当你靠近时,你可以走“向上”。
无论如何,这是你如何做到的。
function test()
a = .05
b = 88
xo = [100 100 100 100 a b]
options = optimset('MaxFunEvals',1E5, ...
'MaxIter', 1E5, ...
'TolFun', 1E-32, ...
'TolX', 1E-32, ...
'TolCon', 1E-32);
x = fmincon(@(X) Ftest(X), xo, [], [], [], [], ...
[-inf -inf -inf -inf a b], [], [], options)
Final_Project_2(x)
function F = Ftest(x)
F = norm(Final_Project_2(x))
end
function F = Final_Project_2(x)
F = [(1/x(1)) + (1/x(2))- (2/(7*x(3)));
(x(3)+2*x(4))*(15*x(2))/((x(1)+x(2))*x(3)-0.7/x(3))-14;
(x(3)*((0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)))/(x(3)+(0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)) - x(5);
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-x(6)];
end
end
x =
258.0438 84.3372 24.9576 34.8035 3.0926 88.0000
ans =
0.0043 -0.0000 0.0001 -0.0000
注意解算器如何撞击b的下限。您可以尝试使用初始猜测,看看是否可以让它找到更好的分钟。无法保证解决方案......
这是有趣的部分 ,您可以做得更好。您的系统不仅仅是一个成本函数,而且是
function test()
a = .05
b = 88
xo = [100 100 100 100 a b]
options = optimset('MaxFunEvals',1E4, ...
'MaxIter', 1E4, ...
'TolFun', 1E-32, ...
'TolX', 1E-32, ...
'TolCon', 1E-32);
x = fmincon(@(X) Ftest(X), xo, [], [], [], [], ...
[-inf -inf -inf -inf a b], [], @(X) xcon(X), options)
Final_Project_2(x)
function F = Ftest(x)
F = norm(Final_Project_2(x))
end
function [c,ceq] = xcon(x)
c = []
ceq = [(1/x(1)) + (1/x(2))- (2/(7*x(3)));
(x(3)+2*x(4))*(15*x(2))/((x(1)+x(2))*x(3)-0.7/x(3))-14;
(x(3)*((0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)))/(x(3)+(0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)) - x(5);
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-x(6);
(x(3)*((0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)))/(x(3)+(0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)) - x(5);
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-x(6)];
end
function F = Final_Project_2(x)
F = [(1/x(1)) + (1/x(2))- (2/(7*x(3)));
(x(3)+2*x(4))*(15*x(2))/((x(1)+x(2))*x(3)-0.7/x(3))-14;
(x(3)*((0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)))/(x(3)+(0.576*x(2)/(x(1)+x(2))*x(3)) - 0.27/x(3)) - x(5);
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-x(6)];
end
end
x =
360.8859 132.2940 27.6590 34.2885 3.6943 117.8688
ans =
1.0e-14 *
-0.0002 0.1776 -0.0444 0
将第二种方法想象给背包客一套可以使用的小径/道路。它引导求解器通过R ^ 6空间。