Ejercicios de Matlab

UNIVERSIDAD DE GUAYAQUIL FACULTAD DE INGENIERÍA QUÍMICA CARRERA DE INGENIERÍA QUÍMICA SIMULACIÓN DE PROCESOS II ECUACIO

Views 83 Downloads 2 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD DE GUAYAQUIL FACULTAD DE INGENIERÍA QUÍMICA CARRERA DE INGENIERÍA QUÍMICA SIMULACIÓN DE PROCESOS II

ECUACIONES NO LINEALES TALLER #2 ESTUDIANTE: LUIS FERNANDO CACHIMUEL VASQUEZ NOMBRE DEL DOCENTE: ING. GONZALO IVAN VILLA MANOSALVAS.

PARALELO: “7-1”

SEPTIMO SEMESTRE

CICLO 1

FECHA DE ENTREGA:

Fecha y hora límite de entrega 07/16, 9:00:00 AM PERIODO LECTIVO: 2019-2020

Aplicaciones del cálculo simbólico de MATLAB a la resolución de ecuaciones no lineales Cinética de las Reacciones Calcule la composición de la mezcla en equilibrio, en porcentaje molar de la siguiente reacción en fase gaseosa a 475°K y a 1 atm de presión.

La constante de equilibrio correspondiente es Log Kp = 0,227.. asuma una tolerancia de 1.0^-4 Balance de moles

Por otra parte log Kp = 0,0227 con ello calculamos Kp con el antilog no que nos da 1,686,

con este valor se plantea la ley de acción de masas:

La presión total es 1 atm, por tanto: ∆n=3-2, reemplazando términos

Resolución en Matlab

Análisis pasó a paso clear,clc Clear, elimina todas las variables del espacio de trabajo actual, liberándolas de la memoria del sistema. Clc, borra todo el texto de la ventana de comandos, dando por resultado una pantalla clara. syms x Enumera el nombre de la variable ‘x’ en el área de trabajo Num=(x/(1+x))*((2*x)/(1+x))^2 Muestra en la Comand Window el numerador de la funcion Den=((1-2*x)/(1+x))^2 Muestra en la Comand Window el denominador de la función Fraccion=Num/Den Muestra la función algebraica simplificada expresion= 1.686*((2*x-1)^2*(x+1))-4*x^3 ‘expresion’ es el nombre dado a la función algebraica simplificada determinada anteriormente z=collect(expresion) Recoge los coeficientes de las potencias por defecto de ‘expresion’ expresion=vpa(z) Evalua cada digito de ‘z’

expresion_final=z/1.686 Se divide ‘z’ para la constante de equilibrio f_x=vpa(expresion_final) Evalua cada elemento de la expresión establecida fplot('1.62752076*x^3 - 3.0*x + 1.0',[-2.5 2.5 -10 10]) Traza la curva establecida por la función con la que estamos trabajando title('Funcion problema') Da un titulo a la grafica xlabel('X') Etiqueta el eje de las abcisas ylabel('Y') Etiqueta el eje de las ordenadas grid on Muestra las lineas cuadriculadas del grafico Raiz_buscada=fzero('1.62752076*x^3 - 3.0*x + 1.0',0.5) Muestra el resultado o raíz que se estaba buscando como solución al problema. Comand Window

CONCLUSIÓN Los métodos matemáticos estudiados son de gran utilidad para la resolución de ejercicios complicados que implican ecuaciones de más de una variable. Los métodos manuales son de gran apoyo pero gastan tiempo al estudiante, ante esto se propone la herramienta tecnológica, MATLAB y sus diversas funciones y comandos. En este ejercicio de proponen comandos para la resolución de ecuaciones no lineales, que muestran la ecuación, la simplifican, despejan las variables y establecen la o las soluciones más adecuadas, en la parte superior se propone el ejercicio y se explica pasa a paso la resolución el mismo. Al final la raíz o solución encontrada es 0.3583, para complementar la respuesta se adjunta un gráfico que muestra el punto exacto de corte de la solución en el plano cartesiano. NUEVOS COMANDOS Collect Coeficientes de recoger Sintaxis de collect(P) collect(P,expr) Descripción Ejemplo collect(P) Los coeficientes se recogen en Plas potencias de la variable por defecto de P. La variable por defecto se encuentra en symvar . Ejemplo collect(P,expr) Recoge coeficientes en P las potencias de la expresión simbólica expr . Si P es un vector o matriz, entonces actúa de forma elemental. Si es un

vector, entonces encuentra los coeficientes en términos de todas las expresiones en. collect Pexprcollectexpr Ejemplos Recoger los coeficientes de los poderes de la variable por defecto Recoge los coeficientes de una expresión simbólica. syms x coeffs = collect ((exp (x) + x) * (x + 2)) coeffs = x ^ 2 + (exp (x) + 2) * x + 2 * exp (x) Debido a que no especificó la variable, utiliza la variable predeterminada definida por . Para esta expresión, la variable por defecto es . collect symvarx symvar ((exp (x) + x) * (x + 2), 1) ans = X Recoger Coeficientes de las potencias de una Variable Particular Recoge los coeficientes de una variable particular, especificando la variable como el segundo argumento para recoger. Recoge los coeficientes de una expresión en potencias de xy luego en poderesy . syms xy coeffs_x = recopilar (x ^ 2 * y + y * x - x ^ 2 - 2 * x, x) coeffs_y = recopilar (x ^ 2 * y + y * x - x ^ 2 - 2 * x, y) coeffs_x = (y - 1) * x ^ 2 + (y - 2) * x coeffs_y = (x ^ 2 + x) * y - x ^ 2 - 2 * x Coeficientes de recoger en potencias xy yespecificar el segundo argumento como vector de variables. syms ab coeffs_xy = recopilar (a ^ 2 * x * y + a * b * x ^ 2 + a * x * y + x ^ 2, [xy]) coeffs_xy = (a * b + 1) * x ^ 2 + (a ^ 2 + a) * x * y

Recoger Coeficientes en términos de iypi Recoge los coeficientes de una expresión en términos de iy luego en términos depi . syms xy coeffs_i = recopilar (2 * x * i - 3 * i * y, i) coeffs_pi = recopilar (x * pi * (pi - y) + x * (pi + i) + 3 * pi * y, pi) coeffs_i = (2 * x - 3 * y) * 1i coeffs_pi = x * pi ^ 2 + (x + 3 * y - x * y) * pi + x * 1i Recoger Coeficientes de expresiones simbólicas y funciones Recoger los coeficientes de las expresiones y funciones especificando el segundo argumento como una expresión o función. Recoge los coeficientes de múltiples expresiones o funciones mediante el uso de vectores de entrada. Ampliar sin(x + 3*y) y recoger los coeficientes de cos(y)y luego de sin(x)ysin(y) . syms xy f = expand (sin (x + 3 * y)); coeffs_cosy = collect (f, cos (y)) coeffs_cosy = 4 * sin (x) * cos (y) ^ 3 + 4 * cos (x) * sin (y) * cos (y) ^ 2 + (-3 * sin (x)) * cos (y) - cos ( x) * pecado (y) coeffs_sinxsiny = colecciona (f, [sin (x) sin (y)]) coeffs_sinxsiny = (4 * cos (y) ^ 3 - 3 * cos (y)) * sin (x) + (4 * cos (x) * cos (y) ^ 2 - cos (x)) * sin (y) Recoge los coeficientes de la función simbólica y(x)en una expresión simbólica. syms y (x) f = y ^ 2 * x + y * x ^ 2 + y * sin (x) + x * y; coeffs_y = recoger (f, y) coeffs_y (x) = x * y (x) ^ 2 + (x + sin (x) + x ^ 2) * y (x)

Recoger Coeficientes para cada elemento de la matriz Llame a en una una matriz. collectElemento sabio actuará sobre la matriz.collect syms xy collect ([(x + 1) * (y + 1), x ^ 2 + x * (x -y); 2 * x * y - x, x * y + x / y], x) ans = [(y + 1) * x + y + 1, 2 * x ^ 2 - y * x] [(2 * y - 1) * x, (y + 1 / y) * x] Recoger Coeficientes de la función de llamadas Recoge los coeficientes de llamadas a una función determinada, especificando el nombre de la función como segundo argumento. Recoger los coeficientes de las llamadas de función en múltiples funciones, especificando las funciones de múltiples funciones como una matriz celular de los vectores de caracteres. Recoge los coeficientes de llamadas a la función de sinenF, donde Fcontiene varias llamadas a funciones diferentes. syms abcdefx F = a * sin (2 * x) + b * sin (2 * x) + c * cos (x) + d * cos (x) + e * sin (3 * x) + f * sin (3 * x ); Recoger (F, 'pecado') ans = (a + b) * sin (2 * x) + (e + f) * sin (3 * x) + c * cos (x) + d * cos (x) Recoge los coeficientes de llamadas a funciones el siny cosenF . Recolectar (F, {'pecado' 'cos'}) ans = (c + d) * cos (x) + (a + b) * sin (2 * x) + (e + f) * sin (3 * x) vpa Aritmética de precisión variable (aritmética de precisión arbitraria) Colapso en página Sintaxis vpa(x) vpa(x,d) Descripción

Ejemplo vpa(x) utiliza aritmética de punto flotante de precisión variable ( VPA ) para evaluar cada elemento de la entrada simbólica x con d dígitos por lo menos significativos, donde d está el valor de la digits función. El de predeterminado de valor digits es de 32. Ejemplo vpa(x,d) utiliza al menos d dígitos significativos, en lugar del valor de digits. Ejemplos Evaluar entradas simbólicas con aritmética de precisión variable Evaluar entradas simbólicas con aritmética de punto flotante de precisión variable. Por defecto, valores calcula una facturación de 32 dígitos. vpa syms x p = sym (pi); piVpa = vpa (p) piVpa = 3.1415926535897932384626433832795 a = sym (1/3); f = a * pecado (2 * p * x); fVpa = vpa (f) fVpa = 0.333333333333333333333333333333333333 (6.283185307179586476925286766559 * x)

*

sin

Evaluar elementos de vectores matrices de o con aritmética de precisión variable. V = [x / pa ^ 3]; M = [pecado (p) cos (p / 5); exp (p * x) x / log (p)]; vpa (V) vpa (M) ans = [0.31830988618379067153776752674503 0.037037037037037037037037037037037] ans = [0, 0.80901699437494742410229341718282]

*

x,

[exp (3.1415926535897932384626433832795 0.87356852683023186835397746476334 * x]

*

x),

fplot Trazar una expresión o función Contraer todo en la página Sintaxis fplot(f) fplot(f,xinterval) fplot(funx,funy) fplot(funx,funy,tinterval) fplot(___,LineSpec) fplot(___,Name,Value) fplot(ax,___) fp = fplot(___) [x,y] = fplot(___) Descripción ejemplo fplot(f) traza la curva definida por la función y = f(x) sobre el intervalo predeterminado [5 5] para x. Ejemplo fplot(f,xinterval) traza sobre el intervalo especificado. Especifique el intervalo como un vector de dos elementos con la forma [xmin xmax]. Ejemplo fplot(funx,funy) traza la curva definida por x = funx(t) y y = funy(t) sobre el intervalo predeterminado [-5 5] para t. fplot(funx,funy,tinterval) traza sobre el intervalo especificado. Especifique el intervalo como un vector de dos elementos con la forma [tmin tmax]. fplot(___,LineSpec) especifica el estilo de línea, el símbolo de marcador y el color de línea. Por ejemplo, '-r' traza una línea roja. Utilice esta opción después de cualquiera de las combinaciones de argumentos de entrada en las sintaxis anteriores. Ejemplo

fplot(___,Name,Value) especifica las propiedades de la línea mediante uno o varios argumentos de par nombre-valor. Por ejemplo, 'LineWidth',2 especifica un ancho de línea de 2 puntos. fplot(ax,___) traza en los ejes especificados por ax en lugar de en los ejes actuales (gca). Especifique los ejes como el primer argumento de entrada. Ejemplo fp = fplot(___) devuelve un objeto FunctionLine o un objeto ParameterizedFunctionLine, dependiendo de las entradas. Utilice fp para consultar y modificar las propiedades de una línea específica. Para obtener una lista de propiedades, consulte FunctionLine Properties o ParameterizedFunctionLine Properties. [x,y] = fplot(___) devuelve las abscisas y ordenadas de la función sin crear un gráfico. Esta sintaxis se eliminará en una versión futura. Utilice en su lugar las propiedades XData e YData del objeto de línea, fp.

Nota fplot ya no admite argumentos de entrada para especificar la tolerancia de error o el número de puntos de evaluación. Para especificar el número de puntos de evaluación, utilice la propiedad MeshDensity. Ejemplos Trazar una expresión Probar este ejemplo Trace sin(x) en el intervalo x predeterminado [-5 5]. fplot(@(x) sin(x))

xlabel Etiquetar el eje x Sintaxis xlabel(txt) xlabel(target,txt) xlabel(___,Name,Value) t = xlabel(___) Descripción Ejemplo xlabel(txt) etiqueta el eje x de los ejes actuales o el gráfico devuelto por el comando gca. Al reemitir el comando xlabel, se sustituye la etiqueta anterior por la nueva etiqueta. Ejemplo xlabel(target,txt) agrega la etiqueta a los ejes o el gráfico especificado por target. Ejemplo xlabel(___,Name,Value) modifica el aspecto de la etiqueta mediante uno o varios argumentos de par nombre-valor. Por ejemplo, 'FontSize',12 establece el tamaño de fuente en 12 puntos. Especifique los argumentos del par nombre-valor después de todos los demás argumentos de entrada. No se admite la modificación de la apariencia de la etiqueta para todos los tipos de gráficos. Ejemplo t = xlabel(___) devuelve el objeto de texto utilizado como etiqueta del eje x. Utilice t para realizar modificaciones futuras en la etiqueta una vez creada.

Ejemplos Contraer todo Etiquetar el eje x Probar este ejemplo Muestre Population por debajo del eje x. plot((1:10).^2) xlabel('Population')

ylabel Eje y etiqueta Sintaxis de ylabel(txt) ylabel(target,txt) ylabel(___,Name,Value) t = ylabel(___) Descripción Ejemplo ylabel(txt) etiquetas y-eje de los ejes actuales o gráfico devuelto por el comando de ACG . Volver a emitir el comando ylabel causa de la etiqueta nueva para reemplazar la etiqueta antigua. Ylabel(target,txt) agrega la etiqueta a los ejes o tabla especificada por destino .

ejemplo ylabel(___,Name,Value)modifica la apariencia de la etiqueta usando uno o más argumentos de nombre-valor. Por ejemplo’FontSize’, 12Establecer el tamaño de la fuente a 12 puntos. Especificar argumentos para después de todos los demás argumentos de entrada. Modificar el aspecto de la etiqueta no es compatible con todos los tipos de gráficos. t = ylabel(___) Devuelve el objeto de texto usado como y-Eiquiqueta del eje. Use t para hacer futuras modificaciones a la etiqueta después de haber creado. Ejemplos Eje y etiqueta Probar este ejemplo parcela ((1:10). ^ 2) ylabel ( ‘Población’ )

Grid on Mostrar u ocultar ejes líneas de cuadrícula Contraer todo en la página Sintaxis grid on grid off grid grid minor

grid(target,___) Descripción ejemplo grid on muestra las líneas de cuadrícula principales para los ejes o gráficos actuales devueltos por el comando gca . Las líneas de cuadrícula principales se extienden desde cada marca de graduación. Ejemplo grid off quita todas las líneas de cuadrícula de los ejes o gráficos actuales. grid alterna la visibilidad de las líneas de cuadrícula principales. Ejemplo grid minor alterna la visibilidad de las líneas de cuadrícula menores. Las líneas de cuadrícula menores están entre las marcas de las garrapatas. No todos los tipos de gráficos soportan líneas de cuadrícula menores. ejemplo grid(target,___) utiliza los ejes o el gráfico especificados por target en lugar de los ejes o el gráfico actuales. Especifique target como el primer argumento de entrada. Utilice comillas simples alrededor de otros argumentos de entrada, por ejemplo, grid(target,'on'). Ejemplos contraer todo Mostrar líneas de cuadrícula Probar este ejemplo Mostrar las líneas de cuadrícula para una trama sinusoidal. x = linspace(0,10); y = sin(x); plot(x,y) grid on

fzero Raíz de la función no lineal Sintaxis x = fzero(fun,x0) x = fzero(fun,x0,options) x = fzero(problem) [x,fval,exitflag,output] = fzero(___) Descripción Ejemplo x = fzero(fun,x0) intenta encontrar un punto x donde fun(x) = 0. Esta solución es donde fun(x) cambia el signo:fzero no puede encontrar una raíz de una función como x^2. Ejemplo x = fzero(fun,x0,options) utiliza options para modificar el proceso de la solución. Ejemplo x = fzero(problem) resuelve un problema de búsqueda de raíz especificado por problem. Ejemplo [x,fval,exitflag,output] = fzero(___) devuelve fun(x) en la salida fval , exitflag que codifica la razón fzero detenido, y una estructura de salida que contiene información en el proceso de solución.

Ejemplos

Contraer todo Raíz a partir de un punto Probar este ejemplo Calcule

encontrando el cero de la función sine cerca de 3.

fun = @sin; % function x0 = 3; % initial point x = fzero(fun,x0) x = 3.1416 Raíz a partir de un intervalo Probar este ejemplo Encuentre el cero del coseno entre 1 y 2. fun = @cos; % function x0 = [1 2]; % initial interval x = fzero(fun,x0) x = 1.5708 Tenga en cuenta que

y

difieren en signo.

Raíz de una función definida por un archivo Encontrar un cero de la función f(x) = x3 – 2x – 5. En primer lugar, escriba un archivo denominado f.m. function y = f(x) y = x.^3 - 2*x - 5; Guarde f.m en la ruta de acceso MATLAB® . Encuentre el cero de f(x) cerca de 2. fun = @f; % function x0 = 2; % initial point z = fzero(fun,x0) z = 2.0946 Dado que f(x) es un polinomio, se puede encontrar el mismo cero real y un par de ceros conjugado complejo, utilizando el comando roots .

roots([1 0 -2 -5]) ans = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i BIBLIOGRAFIA https://la.mathworks.com/help/symbolic/collect.html