使用Matlab fsolve()通过2个变量找到2个函数的零点

问题描述 投票:1回答:1

我使用Matlab试图用2个变量求解2个方程。

我定义了两个函数,f2(n_1,n_2),f3(n_1,n_2),它们都依赖于f1(n_1,n_2),然后我定义了包含它们的向量化函数G(n_1,n_2)。

后来我定义了一个理想的说明点,并尝试解决。但是在运行代码时会引发一个我不完全理解的错误。

上面提到的代码显示在下面的代码中:

代码:

clear, close all; clc
%Const
N0=25;
G1=1;G2=1;
a1=6;a2=3;
k1=1;k2=4;
%main
syms n_1 n_2
X_0=[-5;5];
f1=N0-a1.*n_1-a2.*n_2;
f2=f1.*G1.*n_1-k1.*n_1;
f3=f1.*G2.*n_2-k2.*n_2;
G=@(n_1,n_2) [f2;f3];
s = fsolve(G,X_0);

错误:

Error using fsolve (line 269)
FSOLVE requires all values returned by functions to be of data type     double.

Error in Ex1_Q3_DavidS (line 37)
s = fsolve(G,X_0);

谢谢

matlab
1个回答
2
投票

fsolve是一个使用数值方法查找数值函数根的函数。

数值函数是例如f=@(x)x^2=2;。在MATLAB中,您可以在任何数字上评估f(),它将返回一个数字,但没有更高阶的数学抽象。然而,这是在计算机中进行数学运算的最快方法,因为它不是一个更高的智能,只是一个美化的计算器。

然而,有些人想要给计算机提供更高的智能,并编码非常复杂的符号工具箱,这些工具箱通过一系列规则试图教会计算机思考半人类并解决符号方程,正如你在纸上所做的那样。为了解决这些方程,在MATLAB中引入了一个名为solve的函数。

你正在做符号数学,但使用数字解算器。它不起作用,只需使用符号解算器进行符号数学运算。

© www.soinside.com 2019 - 2024. All rights reserved.