matlab非线性方程求解器

时间:2017-12-10 18:22:44

标签: matlab solver

我有一组3个非线性方程式,我需要在matlab中使用fsolve来解决它们

  function F = root2d(y)
 syms b1 b2 b3 w21 w31 theta1 theta2 theta3 a1 a2 a3;
 F(1) = (1+exp(-b1*(w21*y(2)+w31*y(3)-theta1)))^(-1) - a1*y(1);
 F(2) = (1/(1+exp(-b2*(y(1)-theta2))))-a2*y(2);
 F(3)=   (1/(1+exp(-b3*(y(1)-theta3))))-a3*y(3);

这是我的函数matlab文件。我在使用matlab文件时调用这个matlab函数

      fun = @root2d;
      x0 = [0,0,0];
      x = fsolve(fun,x0)

但它给了我错误   使用fsolve时出错(第258行) FSOLVE要求用户函数返回的所有值都是数据类型为double。

Untitled5中的错误(第3行) x = fsolve(fun,x0) 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您的函数root2d会返回符号。因此,您不能将fsolve用于符号函数,因为fsolve后面的算法是数字。 solve功能可能会对您有所帮助。

另外,在fsolve文档中提到:

  

表示x,其中F(x)是一个返回矢量值的函数。