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 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Ash Ash
am 8 Dez. 2020
Kommentiert: Ash Ash
am 25 Dez. 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.
Akzeptierte Antwort
Walter Roberson
am 10 Dez. 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 Kommentare
Walter Roberson
am 25 Dez. 2020
F = sym('F', [1 N]);
would still have been needed in your release.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!