Help with 'solve' function in MATLAB for numerical solution!

7 visualizaciones (últimos 30 días)
Ian
Ian el 5 de Sept. de 2012
Comentada: Walter Roberson el 16 de Sept. de 2020
For example, lets say I have the expression "x=2^x*b+c" and I use solve function as,
d=solve('x=(2^x)*b+c');
Now if I were to assign 'b' and 'c' values prior to writing the solve statement, the solution in 'd' will still return a SYMBOLIC solution.
If b=2, c=3, for example and I write,
d=solve('x=(2^x)*2+3');
I will get the numerical solution, but INSTEAD
if i type
d=solve('x=(2^x)*b+c');
with the values of 'b' and 'c' declared prior to this statement, I get a symbolic solution.
What do I need to do to get a NUMERICAL answer each time? (This is because the values of 'b' and 'c' are changing within a loop) (Also note this is just an example to illustrate my problem, not the real function I wish to solve)
Thanks Ian

Respuesta aceptada

Matt Fig
Matt Fig el 5 de Sept. de 2012
Editada: Matt Fig el 5 de Sept. de 2012
d = solve('x=(2^x)*b+c');
n = subs(d,{'b','c'},{2,3}) % Put 2 for b, 3 for c
If you are doing the substitutions in a loop, this will probably be faster:
C = matlabFunction(d); % Convert symbolic into a func handle.
C(2,3)
  3 comentarios
Matt Fig
Matt Fig el 6 de Sept. de 2012
Editada: Matt Fig el 6 de Sept. de 2012
Yes, that is a different problem isn't it?!
When symbolics won't work, go numerical...
b = 2;
c = 3;
f = @(x) x - (2.^(1+(b-3)./(3*2.^x))-c);
fzero(f,1)
ans =
-2.4184
Ian
Ian el 12 de Sept. de 2012
thank you!

Iniciar sesión para comentar.

Más respuestas (2)

Babak
Babak el 5 de Sept. de 2012
After you get the symbolic solution "d", you may need to say:
num_sol = vpa(d)
which computes d with numbers provided before. You should look at the list of the functions provided in Symbolic Math Toolbox.

Heidi Miller
Heidi Miller el 16 de Sept. de 2020
%%
%
syms x y g
x=x==6
x=6
g = 3*pi*x.^2
gives the numerical answer too
  1 comentario
Walter Roberson
Walter Roberson el 16 de Sept. de 2020
The original question had x on both sides of the equation.
The code you post here does not have x on both sides of the equation. It also overwrites values in such a way that the code is completely equivalent to just the last two lines, assigning numeric 6 to x and then calculating g purely numerically. No equation solving is performed.

Iniciar sesión para comentar.

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!

Translated by