{"id":5398,"date":"2024-11-22T14:34:13","date_gmt":"2024-11-22T20:34:13","guid":{"rendered":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/?page_id=5398"},"modified":"2024-11-22T14:34:13","modified_gmt":"2024-11-22T20:34:13","slug":"lecm16","status":"publish","type":"page","link":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/l-m\/lecm16\/","title":{"rendered":"lecm16 Funci\u00f3n de usuario"},"content":{"rendered":"\n<p>En Matlab hay funciones definidas para determinar  la ra\u00edz de un dato, calcular el seno, coseno y tangente de un n\u00famero. Se obtiene el determinante, la inversa y el rango de una matriz a trav\u00e9s de las funciones det(x), inv(x) y rank(x). Todas las funciones que se mencionan son funciones internas de Matlab.<\/p>\n\n\n\n<p>El usuario puede definir la funci\u00f3n que desee con ayuda de un archivo M. <\/p>\n\n\n\n<p>Las funciones definidas por el usuario se almacenan como archivos-m y Matlab puede acceder a ellas si est\u00e1n almacenadas en el directorio actual.<\/p>\n\n\n\n<p>La sintaxis de la declaraci\u00f3n es <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"730\" height=\"126\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-46.png\" alt=\"\" class=\"wp-image-5473\" srcset=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-46.png 730w, https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-46-300x52.png 300w\" sizes=\"(max-width: 730px) 100vw, 730px\" \/><\/figure>\n\n\n\n<p>Ejemplo, con la funci\u00f3n function que debe definirse en un script y llamar al archivo funx.m<\/p>\n\n\n\n<pre id=\"block-e281d9b6-4f12-47a4-9c86-ccb1daebca0a\" class=\"wp-block-preformatted\">function yy = funx(x)<br>  yy=x.^2-25*x-6<br>end<\/pre>\n\n\n\n<p>Para hallar el valor s\u00f3lo se utiliza el comando  xx=funx(3) y el resultado es -72<\/p>\n\n\n\n<p>Otro ejemplo, para calcular el \u00e1rea de un cilindro se debe declarar la funci\u00f3n<\/p>\n\n\n\n<pre>function area_cil = acil(r,h) <br \/>% calcula el \u00e1rea de un cilindro<br \/>% ingresar radio y altura en cm<br \/>% se calcula el \u00e1rea en cm^2<br \/>a1=pi()*r*h<br \/>fprintf ('El \u00e1rea del cilindro es %6.2f \\n', a1)<\/pre>\n\n\n\n<p>Al guardar el archivo se almacena la funci\u00f3n acil y se deben ingresar dos par\u00e1metros<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">acil(2,5)<\/pre>\n\n\n\n<p>El resultado es<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"291\" height=\"39\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-47.png\" alt=\"\" class=\"wp-image-5474\" \/><\/figure>\n\n\n\n<h2>Funciones inline<\/h2>\n\n\n\n<p>Para declarar nuevas funciones se pueden utilizar:<\/p>\n\n\n\n<p>Comando <strong>inline<\/strong><\/p>\n\n\n\n<p>Ejemplo:<\/p>\n\n\n\n<pre id=\"block-e281d9b6-4f12-47a4-9c86-ccb1daebca0a\" class=\"wp-block-preformatted\">x= linspace(4,6;<br>f=inline ('1.\/(20-sqrt(x))');<br>y=f(x);<br>plot(x,y)<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Tambi\u00e9n se puede utilizar funci\u00f3n an\u00f3nima (function handle @)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mifun = @(x) x.^2-3\ndd=mifun(2:4)\n\n<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2>Uso de las funciones externas<\/h2>\n\n\n\n<p>Al evaluar un sistema de ecuaciones diferenciales el empleo de los&nbsp;<strong>archivos<\/strong> <strong>M<\/strong>&nbsp;y la declaraci\u00f3n de funci\u00f3n del usuario ofrecen mayor potencialidad a Matlab. Este tipo de archivo es independiente e inicia con el comando function. A continuaci\u00f3n se da un ejemplo aplic\u00e1ndolo a un sistema de ecuaciones diferenciales ordinarias y resolviendo el sistema por medio del m\u00e9todo de Runge Kutta de cuarto orden.<\/p>\n\n\n\n<p><br><strong>Enunciado del problema<\/strong><br>Se tienen tres tanques de 1000 litros de capacidad. Los tres recipientes est\u00e1n  completamente llenos y perfectamente agitados con una soluci\u00f3n cuya concentraci\u00f3n es 30 g\/l. A partir de cierto momento se alimenta al primer tanque una soluci\u00f3n que contiene 50 g\/l con un gasto de 300 l\/min (hay un arreglo entre los tres recipientes tal que al haber un gasto al primero, la misma cantidad fluye de este al segundo, del segundo al tercero y de este afuera del sistema, con lo cual se mantiene constante el volumen en todos ellos). Determinar las concentraciones en cada tanque<br>despu\u00e9s de los 10 minutos de haber empezado agregar soluci\u00f3n al primero.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"669\" height=\"240\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-48.png\" alt=\"\" class=\"wp-image-5476\" srcset=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-48.png 669w, https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-48-300x108.png 300w\" sizes=\"(max-width: 669px) 100vw, 669px\" \/><\/figure><\/div>\n\n\n<p><strong>Soluci\u00f3n<\/strong>:<br>Balance de soluto en el primer tanque<\/p>\n\n\n\n<p>Acumulaci\u00f3n = Entrada \u2013 Salida<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"334\" height=\"102\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-49.png\" alt=\"\" class=\"wp-image-5477\" srcset=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-49.png 334w, https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-49-300x92.png 300w\" sizes=\"(max-width: 334px) 100vw, 334px\" \/><\/figure><\/div>\n\n\n<p>como V1 = 1000 y permanecen constantes<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"236\" height=\"129\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-50.png\" alt=\"\" class=\"wp-image-5478\" \/><\/figure><\/div>\n\n\n<p>Balance de soluto en el segundo tanque<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"298\" height=\"82\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-51.png\" alt=\"\" class=\"wp-image-5479\" \/><\/figure><\/div>\n\n\n<p>Como V2 = 1000 litros<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"253\" height=\"131\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-52.png\" alt=\"\" class=\"wp-image-5480\" \/><\/figure><\/div>\n\n\n<p>Balance de soluto en el tercer tanque<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"303\" height=\"83\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-53.png\" alt=\"\" class=\"wp-image-5481\" srcset=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-53.png 303w, https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-53-300x82.png 300w\" sizes=\"(max-width: 303px) 100vw, 303px\" \/><\/figure><\/div>\n\n\n<p>Como V3 = 1000 litros<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"250\" height=\"131\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-54.png\" alt=\"\" class=\"wp-image-5482\" \/><\/figure><\/div>\n\n\n<p>El sistema de ecuaciones diferenciales resultante es:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"293\" height=\"268\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-55.png\" alt=\"\" class=\"wp-image-5483\" \/><\/figure><\/div>\n\n\n<p>Una vez que se tienen las ecuaciones para cada uno de los tanques se escriben un archivo-M de la siguiente forma:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">function otra = mezcla (t,x)\notra =[15-0.3*x(1);0.3*x(1)-0.3*x(2);0.3*x(2)-0.3*x(3)];\n<\/pre>\n\n\n\n<p>En la ventana de comando de Matlab escriba las siguientes l\u00edneas y observar\u00e1 la gr\u00e1fica del sistema.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&gt;&gt;t=0:10;\n&gt;&gt;x=[30,30,30];\n&gt;&gt; [t,y]=ode45('mezcla',t,x)\n&gt;&gt; plot(t,y,'o',t,y,'-')<\/pre>\n\n\n\n<p>Matlab da el resultado de las concentraciones de cada tanque de 0 a 10 minutos despu\u00e9s de haber agregado la soluci\u00f3n al primero. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"255\" height=\"217\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-57.png\" alt=\"\" class=\"wp-image-5485\" \/><\/figure><\/div>\n\n\n<p>La gr\u00e1fica resultante se muestra enseguida.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"596\" height=\"475\" src=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-56.png\" alt=\"\" class=\"wp-image-5484\" srcset=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-56.png 596w, https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-content\/uploads\/sites\/89\/2023\/08\/imagen-56-300x239.png 300w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/><\/figure><\/div>\n\n\n<div class=\"is-content-justification-center is-layout-flex wp-container-1 wp-block-buttons\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-dark-gray-color has-bright-blue-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/l-m\/\">Lecciones<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-dark-gray-color has-yellow-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/lecm17\/\">siguiente lecci\u00f3n<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>En Matlab hay funciones definidas para determinar la ra\u00edz de un dato, calcular el seno, coseno y tangente de un n\u00famero. Se obtiene el determinante, la inversa y el rango de una matriz a trav\u00e9s de las funciones det(x), inv(x) y rank(x). Todas las funciones que se mencionan son funciones internas de Matlab. El usuario &hellip; <a href=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/l-m\/lecm16\/\" class=\"more-link\">Contin\u00faa leyendo <span class=\"screen-reader-text\">lecm16 Funci\u00f3n de usuario<\/span><\/a><\/p>\n","protected":false},"author":123458,"featured_media":0,"parent":5258,"menu_order":16,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"_links":{"self":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5398"}],"collection":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/users\/123458"}],"replies":[{"embeddable":true,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/comments?post=5398"}],"version-history":[{"count":5,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5398\/revisions"}],"predecessor-version":[{"id":5591,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5398\/revisions\/5591"}],"up":[{"embeddable":true,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5258"}],"wp:attachment":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/media?parent=5398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}