gpt4 book ai didi

matlab - 在 MATLAB 中求解非线性方程组时出错

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:52 24 4
gpt4 key购买 nike

这段代码有什么问题?

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)) -20;
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-100];

这是工作区代码:

x0 = [1; 1; 1; 1];           % Make a starting guess at the solution
options=optimset('Display','iter'); % Option to display output
[x,fval] = fsolve(@Final_Project_2,x0,options) % Call optimizer
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.

Error in ==> Final_Project_2 at 5
F = [(1/x(1)) + (1/x(2))- (2/(7*x(3)));

Error in ==> fsolve at 254
fuser = feval(funfcn{3},x,varargin{:});

Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE cannot
continue.

最佳答案

Matlab 无法连接以下数组:

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)) -20;
((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-100];

问题出现在第三行,其中最后一个 -20 被解释为向量中的单个值,而不是您正在计算的项的一部分。为了演示这一点,您可以将此数组的每一行括起来并查看结果:

x = [1 2 3 4]; % just for demonstration purpuse

[(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)) - 20;]
[ ((0.576*x(2)*x(3)/(x(1)+x(2))*x(3)) - 0.27*x(4)/x(3))-100]

这导致

ans =
1.4048

ans =
23.6426

ans =
0.7843 -20.0000

ans =
-96.9040

请注意第三行中的 1x2 向量。

要解决您的问题,请更加强调在计算中放置空格(即省略所有空格,或者在您的示例中编写 - 20 而不是 -20 ), 或者将属于一个术语的所有内容放在括号中。

关于matlab - 在 MATLAB 中求解非线性方程组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com