Resolver ecuaciones simbólicas
Este ejemplo muestra los conceptos básicos para resolver ecuaciones simbólicas.
Resolver una ecuación cuadrática
Resuelva la ecuación cuadrática utilizando la función solve
.
Resuelva la ecuación cuadrática sin especificar una variable que resolver. La función solve
elige x
para devolver la solución.
disp('Solve a quadratic equation without specifying which variable to solve for. The solve function chooses x to return a solution.') disp('>> syms a b c x') disp('>> eqn = a*x^2 + b*x + c == 0') disp('>> S = solve(eqn)') syms a b c x eqn = a*x^2 + b*x + c == 0 S = solve(eqn)
Solve a quadratic equation without specifying which variable to solve for. The solve function chooses x to return a solution. >> syms a b c x >> eqn = a*x^2 + b*x + c == 0 >> S = solve(eqn) eqn = a*x^2 + b*x + c == 0 S = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
Especifique la variable que desea resolver y resuelva la ecuación cuadrática para a
.
disp('Solve for the variable a') disp('Sa = solve(eqn,a)') Sa = solve(eqn,a)
Solve for the variable a Sa = solve(eqn,a) Sa = -(c + b*x)/x^2
Resolver ecuaciones multivariante y asignar salidas a una estructura
Cuando se resuelven variables múltiples, puede que sea más conveniente guardar las salidas en un arreglo de estructura que en variables separadas. La función solve
devuelve una estructura cuando especifica un único argumento de salida y existen múltiples salidas.
Resuelva un sistema de ecuaciones para devolver las soluciones en un arreglo de estructura.
disp('Solve a system of equations to return solutions in a structure array') disp('>> eqns = [2*u + v == 0, u - v == 1];') disp('>> S = solve(eqns,[u v])') syms u v eqns = [2*u + v == 0, u - v == 1]; S = solve(eqns,[u v])
Solve a system of equations to return solutions in a structure array >> eqns = [2*u + v == 0, u - v == 1]; >> S = solve(eqns,[u v]) S = struct with fields: u: 1/3 v: -2/3
Acceda a las soluciones refiriéndose a los elementos de la estructura.
disp('Access the solutions within the structure') disp('>> S.u') S.u disp('>> S.v') S.v
Access the solutions within the structure >> S.u ans = 1/3 >> S.v ans = -2/3
Utilizar un arreglo de estructura permite sustituir soluciones convenientemente por otras expresiones. Utilice la función subs
para sustituir las soluciones S
por otras expresiones.
disp('Use the subs function to substitute the solutions into other expressions') disp('>> e1 = subs(u^2, S)') e1 = subs(u^2,S) disp('>> e2 = subs(3*v + u, S)') e2 = subs(3*v + u,S)
Use the subs function to substitute the solutions into other expressions >> e1 = subs(u^2, S) e1 = 1/9 >> e2 = subs(3*v + u, S) e2 = -5/3
Si la función solve
devuelve un objeto vacío, no existe una solución.
disp('The solve function returns an empty object if no solutions exist') disp('>> solve([3*u+2, 3*u+1],u)') S = solve([3*u+2, 3*u+1],u)
The solve function returns an empty object if no solutions exist >> solve([3*u+2, 3*u+1],u) S = Empty sym: 0-by-1
Resolver ecuaciones numéricas
Cuando la función solve
no puede resolver una ecuación simbólicamente, esta intenta encontrar una solución numérica utilizando la función vpasolve
. La función vpasolve
devuelve la primera solución que encuentra.
Intente resolver la siguiente ecuación. La función solve
devuelve una solución numérica porque no puede encontrar una solución simbólica.
disp('The following equation returns a numeric solution because the solve function cannot find a symbolic solution') syms x disp('>> eqn = sin(x) == x^2 - 1;') eqn = sin(x) == x^2 - 1; disp('>> solve(eqn,x)') S = solve(eqn,x)
The following equation returns a numeric solution because the solve function cannot find a symbolic solution >> eqn = sin(x) == x^2 - 1; >> solve(eqn,x) Warning: Unable to solve symbolically. Returning a numeric solution using <a href="matlab:web(fullfile(docroot, 'symbolic/vpasolve.html'))">vpasolve</a>. S = -0.63673265080528201088799090383828
Represente los lados izquierdo y derecho de la ecuación. Observe que la ecuación también tiene una solución positiva.
disp('Plot the left and right sides of the equation to see that the equation also has a positive solution') disp('>> fplot([lhs(eqn) rhs(eqn)], [-2 2])') fplot([lhs(eqn) rhs(eqn)], [-2 2])
Plot the left and right sides of the equation to see that the equation also has a positive solution >> fplot([lhs(eqn) rhs(eqn)], [-2 2])
Encuentre la otra solución llamando directamente al solver numérico vpasolve
y especificando el intervalo.
disp('Find the other solution by calling the numeric solver vpasolve') disp('>> V = vpasolve (eqn,x,[0,2])') V = vpasolve(eqn,x,[0 2])
Find the other solution by calling the numeric solver vpasolve >> V = vpasolve (eqn,x,[0,2]) V = 1.4096240040025962492355939705895