English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Solución de ecuaciones diferencialesdiffcomando utilizado para calcular la derivada simbólica. En su forma más simple, se pasa la función que se va a diferenciar como parámetro al comando diff.
por ejemplo, calculemos la derivada de la función f(t) = 3t 2 + 2t -2
Crea un archivo de script y escribe el siguiente código-
syms t f = 3*t^2 + 2*t^(-2); diff(f)
Después de compilar y ejecutar el código anterior, se producirán los siguientes resultados-
ans = 6*t - 4/t^3
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols t = sym("t"); f = 3*t^2 + 2*t^(-2); differentiate(f,t)
Octave ejecuta el código y devuelve el siguiente resultado-
ans = -(4.0)*t^(-3.0)+(6.0)*t
Vamos a explicar brevemente varios tipos de ecuaciones o reglas utilizadas para la diferenciación y verificar estas reglas. Para esto, escribiremos f'(x) para el primer orden de derivada y f“(x) para el segundo orden de derivada.
A continuación se presentan las reglas de distinción-
para cualquier función f y g y cualquier número real a y b es la derivada de esta función-
h(x) = af(x) + bg(x) en términos de x por-
h'(x) = af'(x) + bg'(x)
sumaenrestaLa regla indica que si f y g son dos funciones, f’ y g’ son respectivamente sus derivadas, entonces
(f + g)' = f' + g'
(f - g)' = f' - g'
productoLa regla indica que si f y g son dos funciones, entonces f' y g' son respectivamente sus derivadas, entonces
(f.g)' = f'.g + g'.f
cotaLa regla indica que si f y g son dos funciones, entonces f' y g' son respectivamente sus derivadas, entonces
(f/g)' = (f'.g - g'.f)/g2
polinómicoo la regla básica de los poderes especifica que si, entoncesy = f(x) = xnf' = n. x(n-1)
El resultado directo de esta regla es que la derivada de cualquier constante es cero, es decir, siy = k, cualquier constante, entonces
f' = 0
cadenaLa regla indica que la derivada de una función de una función en términos de x es:h(x) = f(g(x))
h'(x) = f'(g(x)).g'(x)
Crea un archivo de script y escribe el siguiente código-
syms x syms t f = (x + 2)*(x^2 + 3) der1 = diff(f) f = (t^2 + 3)*(sqrt(t) + t^3) der2 = diff(f) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = diff(f) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = diff(f) f = (x^2 + 1))17 der5 = diff(f) f = (t^3 + 3* t^2 + 5*t -9))^(-6) der6 = diff(f)
Al ejecutar el archivo, MATLAB muestra el siguiente resultado-
f = (x^2 + 3)*(x + 2) der1 = 2*x*(x + 2) + x^2 + 3 f = (t^(1/2) + t^3)*(t^2 + 3) der2 = (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2)) + 2*t*(t^(1/2) + t^3) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1))2 f = (x^2 + 1))17 der5 = 34*x*(x^2 + 1))16 f = 1/(t^3 + 3*t^2 + 5*t - 9))6 der6 = -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9))7
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols x = sym("x"); t = sym("t"); f = (x + 2)*(x^2 + 3) der1 = differentiate(f,x) f = (t^2 + 3)*(t^(1/2) + t^3) der2 = differentiate(f,t) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = differentiate(f,x) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = differentiate(f,x) f = (x^2 + 1))17 der5 = differentiate(f,x) f = (t^3 + 3* t^2 + 5*t -9))^(-6) der6 = differentiate(f,t)
Octave ejecuta el código y devuelve el siguiente resultado-
f = (2.0+x)*(3.0+x^(2.0)) der1 = 3.0+x^(2.0)+(2.0)*(2.0+x)*x f = (t^(3.0)+sqrt(t))*(3.0+t^(2.0)) der2 = (2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0)) f = (1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0)) der3 = (-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x) f = (1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x) der4 = (1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x) f = (1.0+x^(2.0))^(17.0) der5 = (34.0)*(1.0+x^(2.0))^(16.0)*x f = (-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0) der6 = -(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)
La siguiente tabla proporciona las derivadas comunes de las funciones exponenciales, logarítmicas y trigonométricas-
función | derivada |
---|---|
ca.x | ca.x.lnc.a(ln es el logaritmo natural) |
ex | ex |
ln x | 1/x |
lncx | 1/x.ln c |
xx | xx.(1 + ln x) |
sin(x) | cos(x) |
cos(x) | -sin(x) |
tan(x) | sec2(x), or 1/cos2(x), o 1 + tan2(x) |
cot(x) | -csc2(x), or -1/sin2(x), o -(1 + cot2(x)) |
sec(x) | sec(x).tan(x) |
csc(x) | -csc(x).cot(x) |
Crea un archivo de script y escribe el siguiente código-
syms x y = exp(x) diff(y) y = x^9 diff(y) y = sin(x) diff(y) y = tan(x) diff(y) y = cos(x) diff(y) y = log(x) diff(y) y = log10(x) diff(y) y = sin(x)^2 diff(y) y = cos(3*x^2 + 2*x + 1) diff(y) y = exp(x)/sin(x) diff(y)
Al ejecutar el archivo, MATLAB muestra el siguiente resultado-
y = exp(x) ans = exp(x) y = x^9 ans = 9*x^8 y = sin(x) ans = cos(x) y = tan(x) ans = tan(x)^2 + 1 y = cos(x) ans = -sin(x) y = log(x) ans = 1/x y = log(x)/log(10) ans = 1/(x*log(10)) y = sin(x)^2 ans = 2*cos(x)*sin(x) y = cos(3*x^2 + 2*x + 1) ans = -sin(3*x^2 + 2*x + 1)*(6*x + 2) y = exp(x)/sin(x) ans = exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols x = sym("x"); y = Exp(x) differentiate(y, x) y = x^9 differentiate(y, x) y = Sin(x) differentiate(y, x) y = Tan(x) differentiate(y, x) y = Cos(x) differentiate(y, x) y = Log(x) differentiate(y, x) % el paquete symbolic no admite esta función %y = Log10(x) %differentiate(y, x) y = Sin(x)^2 differentiate(y, x) y = Cos(3*x^2 + 2*x + 1) differentiate(y, x) y = Exp(x)/Sin(x) differentiate(y, x)
Octave ejecuta el código y devuelve el siguiente resultado-
y = exp(x) ans = exp(x) y = x^(9.0) ans = (9.0)*x^(8.0) y = sin(x) ans = cos(x) y = tan(x) ans = 1+tan(x)^2 y = cos(x) ans = -sin(x) y = log(x) ans = x^(-1) y = sin(x)^(2.0) ans = (2.0)*sin(x)*cos(x) y = cos(1.0+(2.0)*x+(3.0)*x^(2.0)) ans = -(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0)) y = sin(x)^(-1)*exp(x) ans = sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)
Para calcular los derivados de orden superior de la función f, usamos la sintaxisdiff(f, n)。
Calculemos el segundo derivado de la función y = f(x) = x. e -3x
f = x*exp(-3*x); diff(f, 2)
MATLAB ejecuta el código y devuelve el siguiente resultado-
ans = 9*x*exp(-3*x) - 6*exp(-3*x)
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols x = sym("x"); f = x*Exp(-3*x); differentiate(f, x, 2)
Octave ejecuta el código y devuelve el siguiente resultado-
ans = (9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)
En este ejemplo, resolvamos un problema. Se nos da una función. Tendremos que encontrar si la ecuación se cumple.y = f(x) = 3 sin(x) + 7 cos(5x)f" + f = -5cos(2x)
Crea un archivo de script y escribe el siguiente código-
syms x y = 3*sin(x)+7*cos(5*x); % definiendo la función lhs = diff(y,2)+y; % evaluando el lhs de la ecuación rhs = -5*cos(2*x); % rhs de la ecuación if(isequal(lhs, rhs)) disp('Sí, la ecuación es verdadera'); else disp('No, la ecuación no es verdadera'); end disp('El valor del LHS es: '), disp(lhs);
Al ejecutar el archivo, muestra el siguiente resultado-
No, la ecuación no es verdadera El valor del LHS es: -168*cos(5*x)
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols x = sym("x"); y = 3*Sin(x)+7*Cos(5*x); % definición de la función lhs = differentiate(y, x, 2) + y; % cálculo de la ecuación lhs rhs = -5*Cos(2*x); % ecuación rhs if(lhs == rhs) disp('Sí, la ecuación es verdadera'); else disp('No, la ecuación no es verdadera'); end disp('El valor del LHS es: '), disp(lhs);
Octave ejecuta el código y devuelve el siguiente resultado-
No, la ecuación no es verdadera El valor del LHS es: -(168.0)*cos((5.0)*x)
Si se desea buscar máximos y mínimos locales en el gráfico, básicamente es buscar los puntos más altos o más bajos en un rango específico de valores de variables simbólicas en la gráfica de la función.
Para la función y = f(x), los puntos en el gráfico con una pendiente cero se denominanpuntos estacionarios(puntos estacionarios/Puntos críticos). En otras palabras, los puntos fijos son f'(x) = 0.
Para encontrar los puntos estacionarios de la función que estamos diferenciando, necesitamos establecer la derivada en cero y resolver la ecuación.
Vamos a encontrar el punto fijo de la función f(x) = 2x 3 + 3x 2 − 12x + 17
Siguiendo estos pasos-
Primero, vamos a entrar en la función y dibujar su gráfico.
syms x y = 2*x^3 + 3*x^2 - 12*x + 17; % definición de la función ezplot(y)
MATLAB ejecuta el código y devuelve el siguiente gráfico-
Este es el código equivalente de Octave para el ejemplo anterior-
pkg load symbolic symbols x = sym('x'); y = inline("2*x^3 + 3*x^2 - 12*x + 17]); ezplot(y) print -deps graph.eps
Nuestro objetivo es encontrar algunos valores locales máximos y mínimos en el gráfico, por lo que encontremos el intervalo [-2,2] para encontrar los valores locales máximos y mínimos.
syms x y = 2*x^3 + 3*x^2 - 12*x + 17; % definición de la función ezplot(y, [-2, 2])
MATLAB ejecuta el código y devuelve el siguiente gráfico-
Este es el código equivalente de Octave para el ejemplo anterior-
pkg load symbolic symbols x = sym('x'); y = inline("2*x^3 + 3*x^2 - 12*x + 17]); ezplot(y, [-2, 2]) print -deps graph.eps
A continuación, vamos a calcular la derivada.
g = diff(y)
MATLAB ejecuta el código y devuelve el siguiente resultado-
g = 6*x^2 + 6*x - 12
Esto es el octavo cálculo anterior-
pkg load symbolic symbols x = sym("x"); y = 2*x^3 + 3*x^2 - 12*x + 17; g = differentiate(y, x)
Octave ejecuta el código y devuelve el siguiente resultado-
g = -12.0+(6.0)*x+(6.0)*x^(2.0)
Vamos a resolver la función derivada g, obteniendo los valores en los que se convierte en cero.
s = solve(g)
MATLAB ejecuta el código y devuelve el siguiente resultado-
s = 1 -2
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols x = sym("x"); y = 2*x^3 + 3*x^2 - 12*x + 17; g = differentiate(y, x) roots([6, 6, -12])
Octave ejecuta el código y devuelve el siguiente resultado-
g = -12.0+(6.0)*x^(2.0)+(6.0)*x ans = -2 1
Esto coincide con nuestro gráfico, por lo que en el punto crítico x = 1,-2para calcular la función f.
subs(y, 1), subs(y, -2)
MATLAB ejecuta el código y devuelve el siguiente resultado-
ans = 10 ans = 37
A continuación, se muestra el equivalente de Octave para el cálculo anterior-
pkg load symbolic symbols x = sym("x"); y = 2*x^3 + 3*x^2 - 12*x + 17; g = differentiate(y, x) roots([6, 6, -12]) subs(y, x, 1), subs(y, x, -2)
ans = 10.0 ans = 37.0-4.6734207789940138748E-18*I
Por lo tanto, el valor mínimo y máximo de la función f(x) es = 2x 3 + 3x 2 − 12x + 17en-2,2intervalo de10en37。
Solución de ecuaciones diferencialesEs el comando utilizado para resolver ecuaciones diferenciales simbólicas.MATLAB proporciona
Es el comando utilizado para resolver ecuaciones diferenciales simbólicas.dsolve
La forma más básica del comando para buscar la solución de una única ecuación es
dsolve('eqn')dondeEs una cadena de texto utilizada para ingresar ecuaciones. eqn
Devuelve una solución simbólica con un conjunto de constantes arbitrarias, que MATLAB marca como C1,C2等。
También puede especificar las condiciones iniciales y las condiciones de borde del problema como una lista separada por comas después de la ecuación-
dsolve('eqn','cond1', 'cond2',…)
Para el propósito de usar el comando dsolve, los derivados se representan por D. Por ejemplo, como f'(t)= -2 * f +Las ecuaciones como cost(t) se introducen como-
'Df = -2*f + cos(t)'
Los derivados de orden superior se representan por el orden de los derivados detrás de D. Por ejemplo,
Por ejemplo, la ecuación f“(x)+ 2f'(x)= 5sin3x debe introducirse como-
'D2y + 2Dy = 5*sin(3*x)'
Vamos a dar un ejemplo simple de una ecuación diferencial de primer orden: y'= 5y。
s = dsolve('Dy = 5*y')
MATLAB ejecuta el código y devuelve el siguiente resultado-
s = C2*exp(5*t)
Vamos a tomar otro ejemplo de una ecuación diferencial de segundo orden: y“-y = 0,y= -1,y'= 2。
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2)
MATLAB ejecuta el código y devuelve el siguiente resultado-
ans = exp(t)/2 - (3*exp(-t))/2