目前疑问
syms x y
eq1=5.348*x+3.515*y-10.8*x*x*x+5.244*x*y-0.2036*y*y+3.608*x*x*x-1.113*x*x*y-0.2199*x*y*y=22.209
eq2=9.081*x+7.411*y-12.48*x*x+3.925*x*y-1.648*y*y+3.723*x*x*x-0.6574*x*x*y-0.2647*x*y*y+0.1309*y*y*y=16.844
[x,y]=solve(eq1,eq2,x,y)
x=subs(x),y=subs(y)
你在2和3等式后面用两个等于号
syms x y
eq1 = 5.348*x + 3.515*y - 10.8*x*x*x + 5.244*x*y - 0.2036*y*y + 3.608*x*x*x - 1.113*x*x*y - 0.2199*x*y*y == 22.209;
eq2 = 9.081*x + 7.411*y - 12.48*x*x + 3.925*x*y - 1.648*y*y + 3.723*x*x*x - 0.6574*x*x*y - 0.2647*x*y*y + 0.1309*y*y*y == 16.844;
fslove求解·
% 定义一个函数,输入为一个向量 [x, y],输出为一个向量 [eq1, eq2]
eqns = @(z) [5.348*z(1)+3.515*z(2)-10.8*z(1)^3+5.244*z(1)*z(2)-0.2036*z(2)^2+3.608*z(1)^3-1.113*z(1)^2*z(2)-0.2199*z(1)*z(2)^2-22.209;
9.081*z(1)+7.411*z(2)-12.48*z(1)^2+3.925*z(1)*z(2)-1.648*z(2)^2+3.723*z(1)^3-0.6574*z(1)^2*z(2)-0.2647*z(1)*z(2)^2+0.1309*z(2)^3-16.844];
% 使用 fsolve 求解非线性方程组,初始值为 [1, 1]
[x, fval, exitflag] = fsolve(eqns, [1, 1]);
该回答引用ChatGPT
对于使用solve函数求解时输出结果都是"root(方程)"的形式,这是因为方程可能没有解析解或者解析解十分复杂,无法用有限的符号表达式表示。在这种情况下,MATLAB会返回方程的数值解或者用符号表示方程的根。
而fsolve函数用于求解非线性方程组,它要求将方程组转化为形式f(x) = 0。在这个函数中,变量x是一个向量,其中每个元素是方程组中的一个未知数。因此,在使用fsolve函数时,需要将方程组的每个方程写成形式f(x) = 0,其中x是包含方程组未知数的向量。
对于你提供的方程组,你可以将它们转化为形式f(x) = 0,其中x是一个2维向量,包含未知数x和y。具体地,可以这样写:
syms x y
f = [
5.348*x+3.515*y-10.8*x^3+5.244*x*y-0.2036*y^2+3.608*x^3-1.113*x^2*y-0.2199*x*y^2-22.209;
9.081*x+7.411*y-12.48*x^2+3.925*x*y-1.648*y^2+3.723*x^3-0.6574*x^2*y-0.2647*x*y^2+0.1309*y^3-16.844
];
[x, y] = fsolve(f, [0, 0]);
在这个例子中,f是一个包含两个方程的向量,它们表示方程组的形式f(x) = 0。在fsolve函数的第一个参数中,我们传入这个向量。在第二个参数中,我们传入一个包含初始值的向量,它用于启动迭代算法的搜索过程。在这个例子中,我们将x和y的初始值都设为0。最终,fsolve函数返回了方程组的解,它们被存储在变量x和y中。最后,你可以使用subs函数将这些解代入原始方程中,求得数值解。
注意,对于非线性方程组,有可能存在多个解或者不存在解。因此,在使用fsolve函数时,应该检查求得的解是否符合实际情况。