eqnproblem
Crear un problema de ecuación
Descripción
Utilice eqnproblem
para crear un problema de ecuación.
Sugerencia
Para ver el flujo de trabajo completo, consulte Flujo de trabajo basado en problemas para resolver ecuaciones.
especifica opciones adicionales utilizando uno o más argumentos de par nombre-valor. Por ejemplo, puede especificar ecuaciones cuando construye el problema utilizando el nombre prob
= eqnproblem(Name,Value
)Equations
.
Ejemplos
Resolver un sistema de ecuaciones no lineal, basado en problemas
Para resolver el sistema de ecuaciones no lineal
utilizando el enfoque basado en problemas, defina primero x
como una variable de optimización de dos elementos.
x = optimvar('x',2);
Cree la primera ecuación como una expresión de igualdad de optimización.
eq1 = exp(-exp(-(x(1) + x(2)))) == x(2)*(1 + x(1)^2);
De forma similar, cree la segunda ecuación como una expresión de igualdad de optimización.
eq2 = x(1)*cos(x(2)) + x(2)*sin(x(1)) == 1/2;
Cree un problema de ecuación y coloque las ecuaciones en el problema.
prob = eqnproblem; prob.Equations.eq1 = eq1; prob.Equations.eq2 = eq2;
Revise el problema.
show(prob)
EquationProblem : Solve for: x eq1: exp((-exp((-(x(1) + x(2)))))) == (x(2) .* (1 + x(1).^2)) eq2: ((x(1) .* cos(x(2))) + (x(2) .* sin(x(1)))) == 0.5
Resuelva el problema comenzando por el punto [0,0]
. Para el enfoque basado en problemas, especifique el punto inicial como una estructura, con los nombres de variable como campos de la estructura. Para este problema solo existe una variable, x
.
x0.x = [0 0]; [sol,fval,exitflag] = solve(prob,x0)
Solving problem using fsolve. Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
sol = struct with fields:
x: [2x1 double]
fval = struct with fields:
eq1: -2.4070e-07
eq2: -3.8255e-08
exitflag = EquationSolved
Visualice el punto de solución.
disp(sol.x)
0.3532 0.6061
Las funciones no compatibles requieren fcn2optimexpr
Si las funciones de la ecuación no están compuestas por funciones elementales, deberá convertir las funciones en expresiones de optimización utilizando fcn2optimexpr
. Para el presente ejemplo:
ls1 = fcn2optimexpr(@(x)exp(-exp(-(x(1)+x(2)))),x); eq1 = ls1 == x(2)*(1 + x(1)^2); ls2 = fcn2optimexpr(@(x)x(1)*cos(x(2))+x(2)*sin(x(1)),x); eq2 = ls2 == 1/2;
Consulte Operaciones compatibles con variables y expresiones de optimización y Convertir una función no lineal en una expresión de optimización.
Resolver un sistema de polinomios no lineal, basado en problemas
Cuando x
es una matriz de 2 por 2, la ecuación
es un sistema de ecuaciones polinómicas. Aquí, significa utilizando multiplicación de matrices. Puede formular y resolver este sistema fácilmente utilizando el enfoque basado en problemas.
En primer lugar, defina la variable x
como una variable de matriz de 2 por 2.
x = optimvar('x',2,2);
Defina la ecuación que desea resolver en términos de x
.
eqn = x^3 == [1 2;3 4];
Cree un problema de ecuación con esta ecuación.
prob = eqnproblem('Equations',eqn);
Resuelva el problema comenzando por el punto [1 1;1 1]
.
x0.x = ones(2); sol = solve(prob,x0)
Solving problem using fsolve. Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
sol = struct with fields:
x: [2x2 double]
Estudie la solución.
disp(sol.x)
-0.1291 0.8602 1.2903 1.1612
Muestre el cubo de la solución.
sol.x^3
ans = 2×2
1.0000 2.0000
3.0000 4.0000
Argumentos de entrada
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
el valor correspondiente. Los argumentos nombre-valor deben aparecer tras otros argumentos, aunque no importa el orden de los pares.
En versiones anteriores a R2021a, utilice comas para separar cada nombre y valor, y encierre Name
entre comillas.
Ejemplo: prob = eqnproblem('Equations',eqn)
Equations
— Ecuaciones de problema
[]
(predeterminado) | Arreglo OptimizationEquality
| Estructura con arreglos OptimizationEquality
como campos
Ecuaciones de problema, especificadas como un arreglo OptimizationEquality
o una estructura con arreglos OptimizationEquality
como campos.
Ejemplo: sum(x.^2,2) == 4
Description
— Etiqueta de problema
''
(predeterminado) | cadena | vector de caracteres
Etiqueta de problema, especificada como una cadena o vector de caracteres. El software no utiliza Description
para el cálculo. Description
es una etiqueta arbitraria que puede utilizar por cualquier motivo. Por ejemplo, puede compartir, archivar o presentar un modelo o problema, y almacenar información descriptiva sobre el modelo o el problema en Description
.
Ejemplo: "An iterative approach to the Traveling Salesman problem"
Tipos de datos: char
| string
Argumentos de salida
prob
— Problema de ecuación
Objeto EquationProblem
Problema de ecuación, devuelto como un objeto EquationProblem
. Habitualmente, para completar la descripción del problema se especifica prob.Equations
y, para ecuaciones no lineales, una estructura de punto inicial. Resuelva un problema completo llamando a solve
.
Advertencia
El enfoque basado en problemas no es compatible con valores complejos en una función objetivo, igualdades no lineales o desigualdades no lineales. Si el cálculo de una función tiene un valor complejo, incluso como valor intermedio, el resultado final puede ser incorrecto.
Historial de versiones
Introducido en R2019b
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)