Matrix of symbolic functions

后端 未结 3 455
旧巷少年郎
旧巷少年郎 2021-01-27 02:04

I would like to define a matrix of symbolic functions (not variables) in Matlab. In the workspace I would like it to be an element of class symfun of size N-by-M (where N<

3条回答
  •  半阙折子戏
    2021-01-27 02:44

    You can't create a matrix of symfun class elements (possibly for the same reason that one can't create a matrix of function handles), but you can create a symbolic function that returns a matrix of symbolic expressions:

    syms x y z;
    Afun = symfun([x+y y-z;y/x z-1],[x y z])
    B = Afun(sym(pi),cos(y),z^2)
    

    Of course you won't be able to directly access the elements of Afun until you evaluate it, though you can use formula to extract them:

    Amat = formula(Afun);
    Amat(1)
    

    It is possible to concatenate symfuns into a matrix, provided that they all have the same input arguments (the arguments don't need to be used). However, the concatenation still does not form a matrix of symfuns – it just concatenates the formulas themselves so you still end up with one symfun as above.

    Another option is to create a matrix of symbolic expressions, e.g.:

    syms x y z;
    A = [2*x    3*y^2   x+z;
         -y^3+1 sin(x)  sym('pi');
         3.5    exp(-z) 1/x];
    

    which can be evaluated using subs:

    B = subs(A,{x,y,z},{sym(pi),cos(y),z^2})
    

    And normal matrix operations work, e.g.:

    B = subs(A(2,:),{x,y,z},{sym(pi),cos(y),z^2})
    

提交回复
热议问题