im使用Matlab尝试求解2个具有2个变量的方程。
我定义了两个函数,f2(n_1,n2(,f3(n_1、n2(,这两个函数都依赖于f1(n_1和n2(然后我定义了向量化函数G(n_1与n2(后来我定义了一个想要的陈述点,并试图解决。但当运行代码时,它会引发一个我不完全理解的错误。
上面提到的显示在下面的代码中:
代码:
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);
感谢
fsolve
是一个使用数值方法来查找数值函数根的函数。
数值函数是例如f=@(x)x^2=2;
。在MATLAB中,你可以在任何数字上计算f()
,它会返回一个数字,但它没有更高阶的数学抽象。然而,这是在计算机中进行数学运算的最快方法,因为它不是一个更高的智能,只是一个荣耀的计算器。
然而,有些人希望赋予计算机更高的智能,并编码非常复杂的符号工具箱,这些工具箱通过一组规则试图教会计算机半像人类一样思考,并解决符号方程,就像你在论文中所做的那样。为了求解这些方程,在MATLAB中引入了一个称为solve
的函数。
您正在进行符号数学运算,但使用的是数值解算器。它不起作用,只是使用符号求解器进行符号数学运算。