If it's not possible to do so and I need to use a list of conditional statements please do let me know. Thank you
Solve non-linear system of equations with variable number of unknowns
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Ash Ash
el 8 de Dic. de 2020
Comentada: Ash Ash
el 25 de Dic. de 2020
Hi everyone, I need some help. I have written a script to form system of nonlinear equations using the symbolic toolbox (because the equation forms are not fixed and dependant on certain parameters) and I need to solve them. I know how to solve a system of nonlinear equations with multiple unknowns, by parameterising the function as follows:
matfun=matlabFunction( symbolic_eqn );
funMiddleMan = @(f) matfun(f(1),f(2),f(3),f(4),f(5),f(6),f(7),f(8),f(9),f(10),...
f(11),f(12)); % the function has 12 unknowns
x0=zeros(1,12);
[soln_fs,fval_fs]=fsolve(funMiddleMan,x0);
However, for the case where I wish to vary the number of unknowns in "symbolic_eqn", what should I do do make this work? For now, the only idea I can think of is by writing an inelegant list of conditional statements of the form:
switch num_unknowns
case N
funMiddleMan = @(f) matfun(f(1),f(2),...,f(N)); %for N number of variables
[...]
end
Would you please guide me on how I can solve this problem?
Thank you for your help and time.
Respuesta aceptada
Walter Roberson
el 10 de Dic. de 2020
%{
matfun = matlabFunction( symbolic_eqn, 'vars', [list variables here]);
%}
for example
N = 5;
syms F [1 N]
expr = sum(randn(1,N) .* F);
f1 = matlabFunction( expr, 'vars', F)
But most of the time it is easier to instead
f2 = matlabFunction( expr, 'vars', {F} )
That second use of matlabFunction expects to be passed a row vector of N values, rather than N individual values.
6 comentarios
Walter Roberson
el 25 de Dic. de 2020
F = sym('F', [1 N]);
would still have been needed in your release.
Más respuestas (0)
Ver también
Categorías
Más información sobre Symbolic Math Toolbox 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!