Is it possible to use "fsolve" function by using matrix inputs in order to solve the system of nonlinear equations ?

2 次查看(过去 30 天)
For example,
function F=myfun(x,A,B,C) {...} end
x0, A, B, C are all matrix inputs
Thank you,
  4 个评论
John D'Errico
John D'Errico 2015-10-13
A multi-dimensional matrix usually IS of type double. However, nothing stops you from creating matrices of type uint8. fsolve cannot work with those type matrices. So you need to cast the result to doubles.
Note that often, working with integer matrices in your computations means that the computations will be quantized internally. This will make your objective function non-differentiable, so fsolve will still fail. Your objective must be differentiable, so a tiny increment in the parameters MUST result in a non-zero increment in the objective. Otherwise, fsolve will terminate immediately, since it will see a zero gradient vector.

请先登录,再进行评论。

回答(2 个)

Star Strider
Star Strider 2015-10-13
What, exactly, do you want to solve?
If you have a nonlinear function of several independent variables, and you want to fit that function to data, the lsqcurvefit function might be most appropriate.
  2 个评论
END
END 2015-10-13
There are 2 nonlinear equations and 2 unknowns, but the parameters used in the equations are all multidimensional matrices. Consider 3D matrices as inputs
Thank you for your help
Star Strider
Star Strider 2015-10-13
I don’t have a clear idea what you want to do, but you would probably have to write a function that used each ‘page’ of your 3D matrices as individual 2D matrices, since matrix operations (to the best of my knowledge) are only defined for 2D matrices.

请先登录,再进行评论。


Rik Hati
Rik Hati 2019-1-31
Hello ! Did you get the solution ? I am stucked in the same probem .

类别

Help CenterFile Exchange 中查找有关 Systems of Nonlinear Equations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by