Creating symbolic function with array for argument
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Benoit Cabot
el 8 de Mzo. de 2024
Comentada: Benoit Cabot
el 8 de Mzo. de 2024
Hi,
I am trying to understand how to use mutli dimension array with symbolic function. I am not sure why I get an error for the symolic function when the input argument is two dimension.
x = sym ('x', [2 1]);
y = sym( 'y', [1 2]);
z = sym( 'z', [2 5]);
f(x,y,z)=(x(1,1)+y(1,1)+z(1,1));
if I change the variable to
x = sym ('x', [1 1]);
y = sym( 'y', [1 2]);
z = sym( 'z', [1 5]);
f(x,y,z)=(x(1,1)+y(1,1)+z(1,1));
it works fine, I am not sure I understand why
6 comentarios
VBBV
el 8 de Mzo. de 2024
symfun operates using scalars more efficiently. The function f has three independent variables, x y and z . So, the function needs inputs to three variables
x = sym ('x');
y = sym( 'y');
z = sym( 'z');
f(x,y,z)=symfun(x+y+z,[x,y,z])
X=[1 ; 1];
Y=[1 1];
Z=[1 2 3 4 5; 6 7 8 9 0];
f(X(1,1),Y(1,1),Z(1,1)) + f(X(2,1),Y(1,1),Z(1,1)) + f(X(1,1),Y(1,1),Z(1,1)) + f(X(1,1),Y(1,2),Z(1,1)) + ...
f(X(1,1),Y(1,1),Z(1,1)) + f(X(1,1),Y(1,1),Z(2,5))
Respuesta aceptada
Walter Roberson
el 8 de Mzo. de 2024
You cannot create symfun that expect non-scalars as parameters.
symfun takes all of the provided parameters, horzcat()'s them together, and creates individual parameters for the results.
x = sym ('x', [1 2]);
y = sym ('y', [1 2]);
f(x, y) = x(1) + x(2) + y(1) + y(2)
Notice that it has become a function of four parameters.
x = sym ('x', [2 1]);
y = sym ('y', [2 1]);
f(x, y) = x(1) + x(2) + y(1) + y(2)
Notice the only difference here is the orientation of x and y, but it just fails.
Más respuestas (0)
Ver también
Categorías
Más información sobre Symbolic Variables, Expressions, Functions, and Preferences en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!