curso para ingenieros

Upload: angeliito-tkm

Post on 13-Oct-2015

31 views

Category:

Documents


0 download

TRANSCRIPT

Facultad de Ingeniera Qumica y Metalurgia

CURSO PARA INGENIEROS:Introduccin a MATLAB y SIMULINK

Por:Ing Jos S. Orbegoso Lpez

CONTENIDOS:

1. Generalidades.2. Manipulacin de matrices.3. Grficas en 2D y 3D.4. Programacin.5. Mtodos numricos.6. Matemticas simblicas.7. Simulink.

Huacho, Noviembre de 2008

1. Generalidades

Desarrollado a finales de los setenta Universidades de New Mexico y Stanford). En la actualidad ampliamente difundido en la Universidad y la Industria. Ncleo bsico del programa: Clculo numrico basado en matrices. Matlab= Matrix Laboratory.Mdulos adicionales. Simulink, MatLab Symbolic Toolbox (ncleo del programa Maple), etc.

Operadores

Tipos de datos: MATLAB es un programa preparado para trabajar con vectores y matrices. Como caso particular tambin trabaja con variables escalares (matrices de dimensin 1). MATLAB trabaja siempre en doble precisin, es decir guardando cada dato en 8 bytes, con unas 15 cifras decimales exactas. Ya se ver ms adelante que tambin puede trabajar con cadenas de caracteres(strings) y, desde la versin 5.0, tambin con otros tipos de datos: Matrices de ms dos dimensiones, matrices dispersas, vectores y matrices de celdas, estructuras y clases y objetos.

Otras formas de definir matrices: Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos particulares. Algunas de estas funciones son las siguientes:

eye (4) forma la matriz unidad de tamao (4x4)

zeros(3,5) forma una matriz de ceros de tamao (3x5)

zeros(4) dem de tamao (4x4)

ones(3)forma una matriz de unos de tamao (3x3)

ones(2,4) dem de tamao (2x4)

linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y x2-

logspace(d1,d2,n) genera un vector con n valores espaciados logartmicamente entre10^d1 y 10^d2. Si d2 es pi6, los puntos se generan entre 10^d1y pi

rand(3)forma una matriz de nmeros aleatorios entre 0 y 1,con distribucin uniforme, de tamao (3x3)

rand(2,5) dem de tamao (2x5)

randn(4)forma una matriz de nmeros aleatorios de tamao(4x4), con distribucin normal, de valor medio 0 y varianza

magic(4)crea una matriz (4x4) con los nmeros 1, 2, ... 4*4, con la propiedad de que todas las filas y columnas suman lo mismo

hilb(5)crea una matriz de Hilbert de tamao (5x5). La matriz de Hilbert es una matriz cuyos elementos (i, j) responden a la expresin (1/(i+j-1)). Esta es una matriz especialmente difcil de manejar por los grandes errores numricos a los que conduce.

Formacin de una matriz a partir de otras

A continuacin se describen algunas de las funciones que crean una nueva matriz a partir de otra o de otras, comenzando por dos funciones auxiliares:

[m,n]=size(A) devuelve el nmero de filas y de columnas de la matriz A.

Si la matriz es cuadrada basta recoger el primer valor de retorno

N=length(x)calcula el nmero de elementos de un vector x

zeros(size(A))forma una matriz de ceros del mismo tamao que una matriz A previamente creada.

ones(size(A))dem con unos.

A=diag(x)forma una matriz diagonal A cuyos elementos diagonales son los elementos de un vector ya existente x

x=diag(A)forma un vector x a partir de los elementos de la diagonal de una matriz ya existente A

diag(diag(A))crea una matriz diagonal a partir de la diagonal de la matriz A.

blkdiag(A,B)crea una matriz diagonal de submatrices a partir de las matrices que se le pasan como argumentos.

triu(A)forma una matriz triangular superior a partir de una matriz A (no tiene por qu ser cuadrada).

tril(A)dem con una matriz triangular inferior

OPERADOR DOS PUNTOS (:)

Defnase un vector x con el siguiente comando:

>> x=1:10

x =1 2 3 4 5 6 7 8 9 10

En cierta forma se podra decir que el operador (:) representa un rango: en este caso, los nmeros enteros entre el 1 y el 10.Por defecto el incremento es 1, pero este operador puede tambin utilizarse con otros valores enteros y reales, positivos o negativos. En este caso el incremento va entre el valor inferior y el superior.

>> x=1:2:10x =1 3 5 7 9

>> x=10:-1:1x =10 9 8 7 6 5 4 3 2 1

OPERADORES RELACIONALES

OPERADORES LOGICOS

FUNCIONES MATEMTICAS ELEMENTALES QUE OPERAN DE MODO ESCALAR

FUNCIONES QUE ACTAN SOBRE LOS VECTORES

FUNCIONES QUE ACTUAN SOBRE MATRICES

Tabla de cdigos ASCII - Formato de caracteres estndaresASCIIHexSmbolo

01234567891011121314150123456789ABCDEFNULSOHSTXETXEOTENQACKBELBSTABLFVTFFCRSOSI

ASCIIHexSmbolo

16171819202122232425262728293031101112131415161718191A1B1C1D1E1FDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS

ASCIIHexSmbolo

32333435363738394041424344454647202122232425262728292A2B2C2D2E2F(espacio)!"#$%&'()*+,-./

ASCIIHexSmbolo

48495051525354555657585960616263303132333435363738393A3B3C3D3E3F0123456789:;?

ASCIIHexSmbolo

64656667686970717273747576777879404142434445464748494A4B4C4D4E4F@ABCDEFGHIJKLMNO

ASCIIHexSmbolo

80818283848586878889909192939495505152535455565758595A5B5C5D5E5FPQRSTUVWXYZ[\]^_

ASCIIHexSmbolo

96979899100101102103104105106107108109110111606162636465666768696A6B6C6D6E6F`abcdefghijklmno

ASCIIHexSmbolo

112113114115116117118119120121122123124125126127707172737475767778797A7B7C7D7E7Fpqrstuvwxyz{|}~

En caso de que el teclado se desconfigurese puede recurrir a sta tabla, digitando: ALT + NUMERO DE LA COLUMNA ASCII, para obtener el carcter necesario.Ejemplo: ALT + 92 va a dar \ALT + 91 va a dar [ALT + 93 va a dar ]ALT + 94 va a dar ^ALT + 58 va a dar :ALT + 59 va a dar ;Etc.

GUIA DE LA CLASE1Ambiente de trabajo de MatLab. Workspace, Windows y Help.

Fig 1: Ventana Inicial de Matlab 7.0En la ventana inicial se sugieren ya algunos comandos para el usuario inexperto que quiere echar un vistazo a la aplicacin. En dicha ventana aparece tambin el prompt caracterstico de MATLAB (). Esto quiere decir que el programa est preparado para recibir instrucciones. Puede hacerse que aparezca un saludo inicial personalizado por medio de un fichero de comandos personal que se ejecuta cada vez que se entra en el programa. Una vez que el programa comienza, se visualiza tres pequeas ventanas, las cuales son: ventana command, wokspace y command History. Estas ventanas son 3 de las ocho diferentes ventanas en Matlab. El listado de las ventanas y sus propsitos se muestran en la tabla 1.

Tabla 1 : Ventanas de MatlabVentanaPropsitos

Command WindowVentana principal, variables enteras, corre programas.

Figure WindowContiene informacin para controles grficos.

Editor WindowCrea y elimina escritos y archivos de funciones.

Help WindowProporciona informacin de ayuda

Launch Pad WindowProvee acceso a herramientas, demostraciones y documentacin.

Command History WindowIntroduce los controles principales en la ventana de control .

Workspace WindowProporciona informacin de las variables que son usadas.

Current Directory WindowMuestra los archivos actuales en el directorio.

Ventana Command: Esta ventana es la ventana principal y se abre cuando comienza Matlab. Es conveniente tener la ventana command como la nica ventana visible y esto puede hacerse cerrando todas las otras ventanas.Ventana Figure: La ventana figure se abre automticamente cuando ejecutamos los comandos grficos y contienen grficos creados por estos comandos. Un ejemplo de la ventana Figure es mostrada en la figura 2. { Puede usted ingresar lo siguiente, utilizando una hoja de editor: >> x = [0:0.1:16]; >> y = x.^ (1.4).*cos(x)>> plot(x,y)>> title(Grfica de la funcin y = x.^(1.4).*cos(x)). }

FIGURA 2 : GRFICO DE LA FUNCIN COSENO(X)Ventana Editor: La ventana editor es usada para escribir y editar, crear y modificar programas, tanto como ejecutarlos paso a paso para ver si contienen errores (proceso de depuracin). El editor muestra con diferentes colores los diferentes tipos o elementos de los comandos (en verde, para los comentarios; en rojo, las cadenas de caracteres, etc.). El editor se preocupa de que las comillas o parntesis que se abren, no se queden sin cerrar. Figura 3

Figura 3: Ventana EditorVentana del HelpMATLAB 7.0 dispone de un excelente Help con el que se puede encontrar la informacin que se desee. La Figura 4 muestra las distintas opciones que aparecen en el men Help.1. Help Window, Se abre la ventana de la Figura 4, en la que se puede buscar ayuda sobre la funcin o el concepto que se desee.2. Help Tips. Ofrece ideas prcticas para utilizar la ayuda.3. Help Desk. Se abre un browser de Internet (Netscape Communicator, en el caso de la Figura 5) que permite acceder a toda la informacin sobre MATLAB en formato HTML. Esta informacin es equivalente a los manuales impresos del programa. Desde la parte inferior de esta pgina, mediante el enlace Online Manuals (in PDF) se puede acceder a la versin *.pdf (PortableDocument Format) de los manuales de MATLAB.

MANUAL DE MATLAB BASICO IMATLAB VER 7.0 ING. JOSE SAUL ORBEGOSO LOPEZ

13

FIGURA 4: VENTANA HELP

Este formato es menos adecuado para consultar que el HTML, pero mucho ms adecuado para imprimir y revisar luego sobre papel. El formato *.pdf requiere del programa gratuito Adobe Acrobat Reader 3.0 o una versin superior.4. Examples and Demos. Se abre una ventana que da acceso a un buen nmero de ejemplos resueltos con MATLAB, cuyos resultados se presentan grficamente de diversas formas. Es bastante interesante recorrer estos ejemplos para hacerse idea de las posibilidades del programa.. Fig 5: Ventana inicial de Help Window. Fig 6 : Ventana inicial de Help Desk

Adems, se puede tambin recurrir al Help desde la lnea de comandos. Se aconseja hacer prcticas al respecto. Por ejemplo, obsrvese la respuesta a los siguientes usos del comando help: help help langEl comando helpwin seguido de un nombre de comando muestra la informacin correspondiente a ese comando en la ventana Help Window (ver Figura 5), incluyendo tambin comandos similares sobre los que se ofrece ayuda.El comando doc seguido de un nombre de comando muestra la informacin correspondiente a ese comando a travs de Netscape Navigator o Internet Explorer, en formato HTML.

El Debugger es un programa enormemente til para detectar y corregir errores, que hay que conocer muy bien. Para ello lo mejor es practicar. De hecho, al realizar operaciones con el Debugger grfico van a apareciendo las correspondientes instrucciones en la lnea de comandos.

El espacio de trabajo consiste en el sistema de variables acumuladas durante una sesin de usar el software de MATLAB y almacenadas en memoria. Usted agrega variables al espacio de trabajo usando las funciones, M-archivos corrientes, y cargando espacios de trabajo ahorrados. Por ejemplo, si usted funciona estas declaraciones,A = magic(4)R = randn(3,4,5)El espacio de trabajo incluye dos variables, A y R.Usted puede realizar workspace y operaciones relacionadas usando el browser del workspace. Cuando estn disponibles, las funciones equivalentes se documentan con cada caracterstica del browser del espacio de trabajo. Si usted tiene una conexin activa del Internet, usted puede mirar el Workspace browser video demo para una descripcin de la funcionalidad principal:WORKSPACE:

Matemticas escalares. Funciones matemticas bsicas.2. Operaciones con Vectores y Matrices

>> A=[1 2 3; 4 5 6; 7 8 9]

La respuesta del programa es la siguiente:

A = 1 2 34 5 67 8 9

Una sencilla operacin con A es hallar su matriz traspuesta.

En MATLAB el apstrofo (') es el smbolo de trasposicin matricial.

Para calcular A' (traspuesta de A) basta teclear lo siguiente:

>> A'

ans =14 72 5 83 6 9

La variable ans puede ser utilizada como operando en la siguiente expresin que se introduzca. Tambin podra haberse asignado el resultado a otra matriz llamada B:

>> B = A'

B =1 4 72 5 83 6 9

Ahora ya estn definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se puede hacer el producto B*A (deber resultar una matriz simtrica):

>> B*Aans =66 78 9078 93 10890 108 126

En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis (por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos ndices entre parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). Las matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con un slo subndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4).

Invertir una matriz es tan fcil como transponerla.

A continuacin se va a definir una nueva matriz A no singular-en la forma:

>> A = [1 4 -3; 2 1 5; -2 5 3]

A = 1 4 -3 2 1 5-2 5 3

Ahora se va a calcular la inversa de A y el resultado se asignar a B. Para ello basta hacer uso de la funcin inv ( )

>> B = inv(A)

B = 0.18030.2213 -0.1885 0.1311 0.0246 0.0902-0.0984 0.1066 0.0574

Para comprobar que este resultado es correcto basta con multiplicar Apor B

>> B*A

ans =1.00000.0000 0.00000.0000 1.0000 0.00000.0000 0.0000 1.0000

De forma anloga a las matrices, es posible definir un vector fila x en la forma siguiente (silos tres nmeros estn separados por blancos o comas, el resultado ser un vector fila):

>> x=[10 20 30] % vector fila

x =10 20 30

MATLAB considera comentarios todo lo que va desde el carcter tanto por ciento (%) hasta el final de la lnea.

Si los nmeros estn separados por intros o puntos y coma (;) se obtendr un vector columna:

>> y=[11; 12; 13] % vector columna

y =111213

MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si se intenta sumar los vectores x e y se obtendr el siguiente mensaje de error:

>> x+y

??? Error using ==> +Matrix dimensions must agree.

Estas dificultades desaparecen si se suma x con el vector transpuesto de y:

>> x + y'ans =21 32 43

PROBLEMAS UTILIZANDO MATLAB1. Transferencia de Calor:Un objeto con una temperatura inicial de T0 es colocado al tiempo t = 0 dentro de una cmara que tiene una temperatura constante de Ts experimentar un cambio de temperatura de acuerdo a la ecuacin:T = Ts + (T0 Ts) e-ktDonde:T = Temperatura del objeto al tiempo.K = constante.Una soda a una temperatura de 120F es ubicada dentro de un refrigerador donde la temperatura es 38F. Determine la temperatura alcanzada despus de 3 horas. Asumir k=0.45. Primero define todas las variables y entonces calcula la temperatura usando un comando Matlab.Solucin>> Ts= 38;T0 = 120;k = 0.45;t = 3;>>T = round (Ts +(T0 Ts) *exp(-k*t)) T = 595.2. Identidad Trigonomtrica:Una identidad trigonomtrica est dado por:

Verificar que la identidad es correcta calculando en cada lado de la ecuacin y sustituyendo x = /5.Solucin>> x = pi/5;>>LHS = cos(x/2)^2LHS =0.9045>>RHS = (tan(x) +sin(x))/(2*tan(x))RHS =0.9045

Ejercicio 1: La presin de vapor de aguaEscribir una funcin en MATLAB, para el clculo de la presin de vapor del agua. Use una funcin es decir, s para calcular la presin de vapor de agua para las temperaturas de 30, 60 y 90C. Resolucin: La presin de vapor de agua, pv [bar] es funcin de la temperatura T [K] y puede ser calculado por la expresin:

Donde:

Los coeficientes a, b, c, d con valores -7,76451, 1,45838, -2,7758 respectivamente -1,23303. En estas relaciones Tc es una temperatura crtica y Pc la presin crtica del agua. Esta tiene los valores de 647,3 y 221,2Kbar. De esta relacin se puede expresar la presin de vapor:

esta ecuacin se utiliza para escribir la funcin MATLAB necesario. Esta funcin llama un argumento que tiene en cuenta el valor de la temperatura y valor de retorno actual correspondiente presin de vapor. La funcin se presenta a continuacin:

function pv = pvapH2O(T);% Funcin para calcular la presin de vapor del agua%%Mod de llamar:% PV = PVAPH2O(T)% donde: PV - presin de vapor, [bar]% T - temperatura, [K]Tc = 647.3; % temperatura critica, [K]Pc = 221.2; % presin critica, [bar]a = -7.76451;b = 1.45838;c = -2.7758;d = -1.23303;Tr = 1 - T./Tc;pv = exp((a*Tr+b*Tr.^(1.5)+c*Tr.^3+d*Tr.^6)./(1-Tr)).*Pc;% end function pvapH2O

Llamado esta funcin puede obtener un escalar.

>> pv = pvaph2o(303.15)

pv =0.0425O a travs de un vector matriz.

>> pv = pvaph2o(273.15+[30 60 90])pv =0.0425 0.1994 0.7015

EJERCICIOS:Polinomios:

Coeficientes del polinomio completo y ordenado decrecientemente: + 3 x + 4>>A=[1 2 3 4]Comandos:roots: nos da las races>>races = roots(A)poly: nos da los coeficientes del polinomio que originan esas races.>>poly (races)>>r=[1 1+j 1-j 2];>>poly(r) 1 -5 10 -10 4 (conv: nos da el product de polinomios>>pp=[1 2 3 4 ];>>qq=[1 0 0 2 3];>>producto=conv(pp, qq)deconv: nos da el cociente y el residuo de una divisin de polinomios>>[co, re]=deconv(qq,pp)co=1 -2re= 0 0 1 4 11polyval: eval el polinomio P(x) en un valor xo, es decir P(xo)>>A=[1 2 3 4];>>p=polyval(A,[1 2 3 ])pl = 26polyder: nos da los coeficientes de la derivada del polinomio>>D=polyder(A)

FUNCIN input>>n = input(teclee el numero de ecuaciones);>>nombre=input(Cmo te llamas?, s)(en este caso, la respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena nombre).FUNCION disp: Siempre imprime en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre>>disp(EL programa ha terminado)>>A=rand(4)>>disp(A)FUNCIONESDefinicin: function[lista de valores de retorno]=name(lista de argumentos)Ejm: Se crear una funcin que evale el numerador, denominador y la divisin de:P(x,y)=Function[num,den,c]=divisin(x,y)Num=x.^y + sin(x.*y) x;Den=x.^2 + y.^3;C=num./den;Guardar el archivo como division.m y lo ejecutamos

GUIA DE CLASE 2:Recuerde: Los parntesis cuadrados [ y ] son empleados para matrices, mientras que los parntesis ( y ) se emplean para funciones. El carcter coma , para separar elementos [1,2,3,4] y el punto y como ; para separar filas en las matrices. [ 1 2; 3 4]. El carcter dos puntos : indica nmeros consecutivos entre dos valores, [2:5] es equivalente a [2 3 4 5].Grficas de funcionesMATLAB tiene un gran potencial de herramientas grficas. Se pueden dibujar los valores de un vector frente a otro (de la misma longitud):>>x=pi*(-1:0.1:1);>>y=x.*sin(x);>>plot(x,y) % Por defecto une los puntos (x(i),y(i)) mediante una poligonal.

Como se ve, con pocos puntos la grfica tiene un aspecto demasiado lineal a trozos. Para "engaar" al ojo, basta tomar ms puntos.>>x=pi*(-1:0.01:1);>>y=x.*sin(x);>>plot(x,y)

>>hold on % Mantiene en la ventana grfica los dibujos anteriores>>plot(x,cos(x)) % Dibuja sobre la grfica anterior la funcin cos(x)

>>hold off % Con esto olvida los dibujos anteriores % y dibuja en una ventana nueva El mismo grfico de la figura superior puede obtenerse con una nica orden, dibujndose cada curva de un color distinto:>>plot(x,cos(x),x,y)

Adems se puede especificar el color de cada curva, el tipo de lnea y el marcador, segn la tabla:

Otros comandos muy tiles a la hora de realizar grficas son:title: le ponemos un ttulo a la grficaxlabel: le ponemos una etiqueta al eje xylabel: le ponemos una etiqueta al eje ylegend: incluimos una legenda en la grficaPor ejemplo>> plot(x,cos(x),'ro-',x,y,'bp:')

>> xlabel('tiempo')>> ylabel('valor')>> legend('coseno','y')>> title('grafico de ejemplo')

Tambin se pueden realizar grficas logartmicas con las instrucciones: semilogx (eje x logartmico), semilogy (eje x logartmico) y loglog (ejes x e y logartmicos). Adems de grficas en 3D con las instrucciones: mesh, surf, plot3...Ejercicio:Representar simultneamente dos funciones sinusoidales de frecuencia 50 Hz desfasadas 90 (/2 rad) de amplitud 10 y 20, respectivamente. Siendo la primera de ellas en color verde a puntos y la segunda en azul continua y con asteriscos. Incorporar adems: nombre eje x: tiempo nombre eje y: seal ttulo grfica: onda seno legenda: onda1 y onda 2Funcin sinusoidal: A: amplitud, k: factor multiplicativo del argumento, que se denomina pulsacin en el caso de que la variable sea independiente del tiempo; el desfasaje >>y = 10*sin(x +pi/2);>> plot(x,y)>> hold on>> y = 20*sin(x +pi/2);>> plot(x,y)>>xlabel('tiempo');ylabel('seal'); title('onda seno'); legend('onda1','onda2');

POLINOMIOS Y ECUACIONESPara resolver un polinomio, se formula el vector de los coeficientes del mismo, en forma completa y ordenado decrecientemente, siendo el objetivo aqu es la determinacin de las races.Ejemplo:

>>A=[1 2 3 4]A = 123 4RAICES: se emplea el comando roots que al digitarlo en la ventana de comando nos da las races del polinomio.>> raices=roots(A)raices = -1.6506 -0.1747 + 1.5469i -0.1747 - 1.5469ipoly: da los coeficientes del polinomio que origina esas races.>> poly(raices)ans = 1.0000 2.0000 3.0000 4.0000>> r=[1 1+j 1-j 2];>> poly(r)ans = 1 -5 10 -10 4Producto de polinomios: conocidos los polinomios, se pueden multiplicar utilizando el comando conv:>> pp=[1 2 3 4];>> qq=[1 0 0 2 3];>> producto=conv(pp,qq)producto = 1 2 3 6 7 12 17 12El Cociente y Residuo de una divisin de polinomios: se obtiene empleando el comando deconv:>> [co,re]=deconv(qq,pp)co = 1 -2re = 0 0 1 4 11Polyval: evala un polinomioP(x) en un valor xo, es decir P(xo)>> A=[1 2 3 4];>> p=polyval(A,2)p = 26>> p1=polyval(A,[1 2 3])p1 = 10 26 58Polyder: nos da los coeficientes de la derivada del polinomio>> D=polyder(A)D = 3 4 3FUNCION INPUTPermite imprimir un mensaje en la lnea de comandos de MatLab y recuperar como valor de retorno un valor numrico o el resultado de una expresin tecleada por el usuario. Despus de imprimir el mensaje, el programa espera que el usuario teclee el valor numrico o la expresin. El usuario puede teclear un vector o una matriz. En cualquier caso, la expresin introducida es evaluada cono los valores actuales de las variables de MATLAB y el resultado se devuelve como valor de retorno.>> n=input('Teclee el numero de ecuaciones')Teclee el numero de ecuaciones 4n = 4Otra forma: obsrvese el parmetro s:>> nombre=input('Cmo te llamas?', 's')Cmo te llamas? Josnombre = JosEn este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena nombre. As, pues, en este caso, si se teclear una frmula, se almacena como texto sin evaluarse.FUNCION DISPPermite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sim imprimir su nombre. En realidad, disp. Siempre imprime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores. >> disp('El programa ha terminado')El programa ha terminado>> A=rand(4)A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057

>> disp(A) 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057

Programacin con MATLABPara escribir un programa o fichero de comandos con MATLAB habr que crear un fichero que tenga extensin .m y contenga las instrucciones. Esto se puede hacer con cualquier editor de textos, pero tiene algunas ventajas usar el editor propio de MATLAB llamndolo desde la barra de herramientas con los mens FILE > NEW > M-FILE. Una vez estamos en el editor de funciones se puede ejecutar el cdigo escrito con el men DEBUG>RUN o pulsando la tecla F5, o bien escribiendo en el Command Windows el nombre de la funcin.MATLAB trabaja con memoria dinmica, por lo que no es necesario declarar las variables que se van a usar. Por esta misma razn, habr que tener especial cuidado y cerciorarse de que entre las variables del espacio de trabajo no hay ninguna que se llame igual que las de nuestro programa (proveniente, por ejemplo, de un programa previamente ejecutado en la misma sesin), porque esto podra provocar conflictos.FICHEROS *.m Los ficheros con extensin (.m) son ficheros de texto sin formato (ficheros ASCII) que constituye el centro de la programacin en MATLAB. Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en ingls) y las funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la lnea de comandos de MATLAB.Las funciones permiten definir funciones enteramente anlogas a las de MATLAB, con su nombre, sus argumentos y sus valores de retorno. Los ficheros *.m que definen funciones que permiten extender las posibilidades de MatLab: de hecho existen bibliotecas de ficheros *.m que se venden (toolkits) o se distribuyen gratuitamente ( a travs de internet). Las funciones definidas en ficheros *.m se caracterizan por que la primera lnea (que no sea comentario) comienza por la palabra funcin, seguida por los valores de retorno (entre corchetes [ ] y separados por comas, si hay ms de uno), el signo igual ( = ) y el nombre de la funcin, seguido de los argumentos (entre parntesis y separados por comas).

DEFINICION DE FUNCIONES:La primera lnea de un fichero llamado name.m que define una funcin tiene la forma:function [lista de valores de retorno] = name (lista de argumentos)donde name es el nombre de la funcin. Entre corchetes y separados por comas van los valores de retorno (siempre que haya ms de uno) y entre parntesis tambin separados por comas los argumentos. Recuerde que los argumentos son los datos de la funcin y los valores de retorno sus resultados. Si no hay valores de retorno se omiten los corchetes y el signo igual ( = ); si solo hay un valor de retorno no hace falta poner corchetes. Tampoco hace falta poner parntesis si hay argumentos.

Ejemplo: Se crear una funcin que nos evale el numerador, denominador y la divisin de:

Observamos que depende de 2 entradas x e y , adems tiene tres salidas: num, den y la divisin num/den.>> [a,b,c]=division(2,3)a = 5.7206b = 31c = 0.1845Ejemplo: Crear una funcin de Newton (fnewton) que resuelva una ecuacin no lineal de una sola variable, abriendo una ventana de programacin y teclear el siguiente contenido:% Funcin que resuelve Ecuaciones No - Lineales de una sola variable% empleando el mtodo de Newton - Raphson% _________________________________________________________________%% [xn]=fnewton(f,xo,to1)% xn es el valor que satisface la ec. no - lineal (respuesta)% f es el nombre de la funcin donde se guard la ecuacin a resolver% xo es un valor inicial% to1 es el error menor a cuanto por ejemplo 0.000001function [xn]=fnewton(f,xo,to1)x=xo;h=0.0001;error=1000;while (error>to1) y=feval(f,x); f_deriv=(feval(f,x+h)-feval(f,x))/h; xn=x-(y/f_deriv); error=abs(xn-x); x=xn;end

Para correr la funcin (fnewton) necesitamos abrir uan ventana de programa y creamos una funcin donde guardaremos la ecuacin a resolver, por ejemplo x=cos(x), y se guarda con el nombre calcular:function y=calcular(x)y=x-cos(x);

Y, desde el command window ejecutamos:>> x=fnewton('calcular',0,0.00001)x = 0.7391Un programa escrito en MATLAB admite la mayora de las estructuras de programacin al uso y su sintaxis es bastante estndar. En los siguientes apartados se muestra la sintaxis de algunas de estas estructuras (if, for, while,...). La condiciones if y switchIFUna de las operaciones ms habituales en programacin es la ejecucin de unos determinados comandos si se cumple una determinada condicin lgica, es lo que se conoce como bifurcaciones. Para ello se emplea la orden if...end de la siguiente forma:if condicincomandosendSi la bifurcacin es mltiple entonces podemos combinar con los comandos else y elseifIf condicioncomandoselseif condicioncomandoselseif condicioncomandoselsecomandosendPor ejemplo, crear el fichero prueba_condicion.m y ejecutar el siguiente cdigo:A = 1; B = 2;if A + B == 3disp('el resultado es 3')elseif A+B > 5disp('el resultado es mayor que 5 ')elsedisp('el resultado ni es 3 ni mayor que 5 ')end(la orden disp se utiliza para visualizar texto en la orden de comandos)Para ejecutar la funcin realizada se pulsa F5 se estamos en el editor de funciones, o se escribe su nombre en la Command Window:>>prueba_condicionel resultado es 3Tambin se puede llamar la funcin recin descrita desde otra funcin sin ms que escribir su nombre.SWITCHLa sentencia switch realiza una funcin anloga a un conjunto de if...elseif concatenados. Su forma general es la siguiente: switch expresioncase case_expr1comandoscase case_expr2comandos...otherwise % opcin por defectocomandosendPor ejemplo si queremos realizar acciones distintas en funcin del valor de una variable entera podemos escribir:A = 1; B = 2;switch A + Bcase 3disp('el resultado es 3')case 5disp('el resultado es 5 ')otherwisedisp('el resultado ni es tres ni cinco')endLos bucles for y whileFOR...ENDCuando queremos ejecutar un conjunto de comandos un nmero predeterminado de veces utilizamos la funcin for...end, cuya forma general es:for contador = [vector de valores]comandosendA modo de ejemplo si queremos sumar los cuadrados de los nmeros enteros impares del 1 al 11 podemos escribir:suma = 0for k = 1:2:11suma = suma + k^2;endsumaAunque producira el mismo resultado la instruccin:>> suma = sum([1:2:11].^2)Ejercicio:Crear un fichero llamado primos.m (FILE>NEW>M-FILE) para calcular la suma de los 100 primeros trminos de la sucesin 1, 2x, 3x2, 4x3, ...

WHILE...ENDA diferencia del comando for, el comando while se utiliza cuando el nmero de veces que se ejecuta un determinado conjunto de sentencias depende de una determinada condicin lgica. Su utilizacin genrica es la que sigue:while condicioncomandosendPor ejemplo si queremos sumar el cuadrado de nmeros pares mientras no se supere un determinado valor, por ejemplo, 500, entonces:suma = 0; num = 2;while suma < 500suma = suma + num^2;num = num + 2;endsumaUna instruccin muy til es el comando break que se utiliza para salir de un bucle. Por ejemplo, si desea salir del bucle en el caso de que alguna suma parcial sea exactamente igual a 100, entonces:suma = 0; num = 2;while suma < 500suma = suma + num^2;num = num + 2;if suma == 100breakendendsumaEjercicio:Dada la funcin y = e-x calcular el valor x que haga que se cumpla la igualdad x = e-x con un error de 10-6. Tomar como valor inicial 0.5. Poner una condicin que limite a 10 el nmero de iteraciones para llegar a la solucin (utilizar break). Adems, probar el programa realizado suponiendo como condicin inicial x=10.Ejercicio:Se desea programar una funcin que calcule, mediante el algoritmo de Euclides, el mximocomn divisor de dos nmeros naturales, basta escribir un fichero euclides.m cuyo contenido sea:function m=euclides(a,b)% Clculo del mximo comn divisor de dos nmeros naturales% mediante el algoritmo de Euclidesif a0c=rem(a,b);a=b;b=c;endm=a;Si, una vez escrito el fichero anterior, en el espacio de trabajo o en un programa se escribe la instruccinmcd=euclides(33,121)en la variable mcd se almacenar el valor 11.Las variables de una funcin son siempre locales. Por tanto, aunque en el seno de la funcin se modifiquen los argumentos de entrada, el valor de las variables correspondientes queda inalterado.Por ejemplo, en la funcin euclides.m se modifica el valor de los argumentos de entrada, pero, sin embargo:>>x=15;>>mcd=euclides(x,3);>>xx =15Si se pretende que las modificaciones de un argumento de entrada afecten a la variable correspondiente, deber situarse dicho argumento, adems, en la lista de argumentos de salida.Ejercicio:Crear una funcin llamada miexp que dado un valor de x devuelva como los dos resultados de las ecuaciones:

Utilizar dicha funcin para resolver la ecuacin no lineal mediante Newton-Raphson con un error de limitando el nmero de iteraciones a 10.

GUIA DE CLASE N 3:GRAFICOS BI Y TRIDIMENSIONALES:Para realizar grficos 2 D hay cuatro funciones bsicas: PLOT( ): permite crear un grfico a partir de vectores y/o columnas de matrices con escalas lineales sobre ambos ejes (x e y). Loglog( ): igual que el anterior, pero con escala logartmica. Semilogx( ): igual que el primero con escala lineal en el eje de las ordenadas y logartmica en el eje de las abscisas. Semilogy( ): igual que el primero con escala lineal en el eje de las abscisas y logartmica en el eje de las ordenadas.Se toma como referencia la primera y las dems, como consecuencia.Para agregar ttulos, nombres a cada eje, cuadrculas, textos, etc., existen otras funciones: title (Grfica P vs T) aade un ttulo al grfico

xlabel(Temp(C)) aade etiqueta al eje x (con xlabel off desaparece).

ylabel(Presin(KPa)) aade etiqueta al eje y (con ylabel off desaparece).

text (x,y,texto) introduce texto en el lugar especificado por las coordenadas x e y Si x e y son vectores, el texto se repite pro cada par de elementos. Si el texto es tambin un vector d cadenas de texto de la misma dimensin, cada elemento se escribe en las coordenadas correspondientes.

gtext(texto) introduce texto con ayuda del ratn: el cursor cambia de forma y se espera un clic para introducir el texto en esa posicin.

legend ( ) define rtulos para las distintas lneas o ejes usados en la figura.

grid on activa la inclusin de una cuadrcula en el dibujo. Con grid off desaparece la cuadrcula.

Ejemplo: Realizar una grfica de un coseno multiplicado por una funcin exponencial Recordar dar espaciamiento entre puntos pequeos (0.01 o 0.00 son suficientes) y que los productos o divisiones se tienen que hacer elemento a elementos (.* ./ ).>> x= -5: 0.01:5;>> y= cos(x).*exp(-0.05* x);>>h=figure(1);>>plot(x,y,r); % grafica x vs y de color rojo.>>xlabel(Eje X); %etiqueta del eje x>>yalbel(Eje Y);% etiqueta del eje y>>title(COSENO EXPONENCIAL); % ttulo>>text(1.5, 0.75,cos(x)*exp(-0,05 * x)); % texto en la posicin x,y,>>grid on; % rejilla>>legend(Coseno Exponencial); %rtulo>>figure (gcf); % para que la figura pase a primer plano.

COMANDOS hold on y hold off:Se usan en las grficas para ciertas condiciones. El primero de ellos hace que los grficos sucesivos respeten los ya dibujados en la figura.Es posible que haya modificacin en la escala de los ejes.El comando hold off deshace el efecto de hold on

GUIA DE CLASE N 4:SISTEMAS DE ECUACIONES Y FUNCIONES TRIDIMENSIONALES.Interpretacin Grfica:Una ecuacin lineal con dos variables, como 2x y =3, define una recta (y=mx+b). Se puede escribir como y=2x -3. Si hay dos ecuaciones, estas pueden ser lineales y cruzarse o no. Si una ecuacin tiene tres variables, x, y, z, representan un plano en un espacio tridimensional. Si hay dos ecuaciones con tres variables, pueden representar dos planos que se cruzan o no, etc.. Hiperplano: es el conjunto de puntos definido por una ecuacin con ms de tres variables. Y en general, un conjunto de M ecuaciones lineales con N incgnitas, donde cada ecuacin define un hiperplano nico que no es idntico a ninguno otro del sistema. Si MN, el sistema est sobre especificado y no existe solucin nica. El conjunto de ecuaciones tambin se denomina sistema de ecuaciones. Un sistema de ecuaciones con una solucin nica es no singular, y uno que no tiene solucin nica se llama singular.Ejemplo:Para el sistema:x+y=2; 2x y = 1; x + 2y = 3;M=3>N=2, de modo que la nica solucin es x =1, y=1. Si M>N el sistema puede no tener solucin, tener solucin nica o infinidad de soluciones.Ejercicio: considere el siguiente sistema de tres ecuaciones con tres incgnitas:3x + 2y z =10x + 3y + 2 z = 5x - y - z = -1Utilizando matrices, se puede escribir:

La forma matricial:A X = BSe puede multiplicar y se obtiene el sistema originalPero, si se tiene ms de tres variables, la notacin se puede hacer torpe, x1, x2, x3, etc. El conjunto de ecuaciones se representa como vectores fila B y X:Ejemplo:

X=[ x1 x2 x3] B=[ 10 5 -1]t

PROGRAMACION BASICA:Limitaciones computacionales. Opciones de exhibicin. Exactitud y precisin. Administracin de archivos. Ficheros M-Files. Errores y depuracin. Rutas de bsqueda y arranque en Matlab. Ejemplos prcticos (visin general) Reaccin de primer orden Raz de una funcin usando un m-file y fzero Usando fzero desde el Command Window Solucin de sistemas de ecuaciones lineales Integracin numrica y simblica Ecuaciones diferenciales de primer y segundo orden Sistemas de ecuaciones diferenciales ordinarias Reacciones mltiples

CLASE N 5:APLICACIONES DE MATLAB A LA RESOLUCIN DE PROBLEMAS DE INGENIERARezolvare: In calculele ingineresti, caldura specifica a unei solutii de NaOH (exprimata n [J/(kgK)]), cp,sol se calculeaza cu relatia aproximativa [7]:cp,sol = 4190 (1 xNaOH) + cp,NaOH xNaOH (10.3)unde cp,NaOH reprezinta caldura specifica a hidroxidului de sodiu anhidru iar xNaOHeste fractia masica a hidroxidului n solutie. Aceasta relatie este valabila pentru cazulsolutiilor concentrate (xNaOH > 0,2). Pentru solutii diluate (xNaOH 6 0,2) se folosesterelatia:cp,sol = 4190 (1 xNaOH) (10.4)Caldura specifica a hidroxidului de sodiu anhidru (exprimata n [J/(kgK)]) nfunctie de temperatura, se calculeaza cu relatia:cp,NaOH = 0,1835 + 3,125 T + 0,347T2 (10.5)Functia MATLAB pentru calcularea caldurii specifice a solutiei de NaOH este:function cp = cpSol(x,T)%Functie pentru calcularea caldurii specifice% a solutiei de NaOH%%Mod de apelare:% CP = CPSOL(X,T)% unde: CP - caldura specifica a solutiei, [J/(kg.K)]% X - fractia masica a NaOH in solutie% T - temperatura, [K]if x> cpSol(0.25,323.15)ans =3.3950e+003Densitatea unui amestec de gazeExercitiul 10.3. Sa se scrie o functie MATLAB pentru determinarea densitatiiunui amestec gazos continand: CO2, H2 si CO.Utilizand aceasta functie sa se determine densitatea unuiamestec avand urmatoarea compozitie exprimata n procentemolare: 25 % CO2, 60%H2 si 15 % CO, la temperatura de150C si presiunea de 20 bar.Rezolvare: Densitatea unui amestec de gaze reale, _am se calculeaza cu expresia:_am = MamPZamRT (10.6)unde: Mam reprezinta masa moleculara a amestecului, Zam este coeficientul de compresibilitateal amestecului, T este temperatura n [K] iar R este constanta universalaa gazelor egala cu 8,3143 [J/(molK)].Masa moleculara a amestecului se calculeaza cu expresia:Mam =Xni=1Mixi(10.7)iar coeficientul de compresibilitate prin relatia:Zam =Xni=1Zixi (10.8)pentru cazul n care amestecul este format din n componente. In aceste relatii Mireprezinta masa moleculara, Zi este coeficientul de compresibilitate iar xi reprezintafractia molara toate acestea considerate pentru componenta i din amestec.Datele necesare efectuarii calculelor sunt prezentate n tabelul 10.1.Tabelul 10.1. Date componente amestec gazosComponenta Masa Coeficientul demoleculara compresibilitateCO2 44,010 0,274H2 2,016 0,303CO 28,010 0,295FunctiaMATLAB este astfel conceputancat sa poata fi apelata prin trei argumente: primul este un vector de trei componente n care se specifica continutul de CO2,H2 si CO n fractii molare, temperatura amestecului n grade Kelvin, presiunea, n bar, la care se gaseste amestecul.Avem urmatoarea functie MATLAB:function ro = densAm(x,T,P)%Functie pentru calcularea densitatii unui% amestec de CO2 H2 si CO%%Mod de apelare:% RO = DENSAM(X,T,P)% unde: RO - densitatea amestecului, [kg/mc]% X - compozitia in fractii masice in ordinea CO2 H2 CO% T - temperatura, [K]% P - presiunea, [bar]R = 8.3143; % const.univ. a gazelor, [J/(mol.K)]% masele moleculare% CO2 H2 COM = [44.01 2.016 28.01];% coeficientul de compresibilitate% CO2 H2 COz = [0.274 0.303 0.295];Zam = sum(x.*z);Mam = sum(M./x);ro = Mam.*P./(Zam.*T.*R);% end function densAmApelam functia cu datele noastre:>> densAm([0.25 0.6 0.15],423,20)ans =7.0688Calculul grosimii peretilor unui vas cilindricExercitiul 10.4. Un vas cilindric vertical este utilizat pentru stocarea unui produslichid necoroziv avand densitatea de 1.200 kg/m3.Vasul, construit din OL42, lucreaza la presiunea maxima admisibila de lucru de 8 bar si temperatura de 60C avandun diametru de 1.100 mm si o naltime de 2.100 mm fiindprevazut cu fund si capac plat.Sa se construiasca un program MATLAB pentru calcularea grosimiide proiectare a peretilor vasului.Rezolvare: Grosimea de proiectare a peretilor unui vas, _p n [mm], se calculeaza curelatia [20]:_p = _0 + cex + cr (10.9)unde _0 este grosimea de rezistenta a elementului, cex este adaosul pentru conditiilede exploatare iar cr reprezinta rotunjirea aplicata pentru aducerea valorii grosimii deproiectare la o grosime standardizata.Grosimea de rezistenta, _0 n [mm] pentru un element cilindric este data de relatia:_0 = pc D2 ' _ta pc(10.10)unde: pc este presiunea de calcul a recipientului n [MPa], D este diametrul recipientuluin [mm], _taeste rezistenta admisibila a materialului de constructie al vasuluila temperatura de calcul exprimata n [MPa] iar ' este coeficientul de rezistenta almbinarilor sudate.Adaosul pentru conditiile de exploatare, cex n [mm] este grosimea suplimentaracare se adauga la grosimea de rezistenta a peretelui vasului ce este susceptibil de a sesubtia datorita coroziunii/eroziunii n asa fel ncat sa asigure functionarea sigura pedurata de functionare a vasului. Acest adaos este dat de relatia:cex = (vce + vci + ve) _ (10.11)unde: vce este viteza de coroziune pe fata exterioara a vasului n [mm/an], vci esteviteza de coroziune pe fata interioara a vasului, n [mm/an], ve este viteza de eroziunen [mm/an] iar _ reprezinta durata de functionare a aparatului exprimata n [ani].Ultima componenta a calculului grosimii de proiectare este rotunjirea cr, care tineseama de valoarea grosimii standardizate imediat superioare sumei _0+cex a tablei dincare se confectioneaza vasul si de abaterea negativa la grosime, cab, care se stabilestedin standarde functie de grosimea standardizata.Calcul de rezistenta prezentat este valabil doar pentru vase cu pereti subtiri,conditia care se cere a fi ndeplinita pentru aceasta fiind:__0D6 0,1 (10.12)unde __0 = _p cex cab este grosimea de rezistenta efectiva.Presiunea de calcul, pc este egala cu presiunea maxima admisibila de lucru avasului, pm la care se adauga presiunea hidrostatica a coloanei de lichid din vas:pc = pm + ph (10.13)Presiunea hidrostatica, ph reprezinta presiunea datorata coloanei de lichid dinrecipient si se calculeaza cu relatia:ph = 9,81 109 hl _ (10.14)unde hl reprezinta naltimea coloanei de lichid iar _ densitatea lichidului.Presiunea de ncercare hidraulica a recipientului pph este data de relatia:pph = 1,25 pm _20a_ta(10.15)unde _20a este rezistenta admisibila a materialului de constructie al vasului la temperaturade 20C.Presiunea de ncercare hidraulica calculata, pphc este data de relatia:pphc = pph + pha (10.16)unde pha este presiunea hidrostatica a lichidului de ncercare care este apa.Rezistenta admisibila a materialului _20a si _tase calculeaza prin relatiile:_20a = min__20c1,5 ; _20r2,4_(10.17)_ta= min_ _tc1,5; _tr2,4_(10.18)unde: _c si _r reprezinta limita de curgere respectiv rezistenta la rupere la tractiunen [MPa].Rezistenta efectiva a peretelui vasului la ncercarea de presiune hidraulica se calculeaza cu relatia:_ef = pphc(D + s_0)2 ' __0(10.19)Verificarea vasului la presiune hidraulica implica respectarea conditiei:_ef 6 0,9 _20c (10.20)Calculul de rezistenta al peretelui unui vas cilindric implica parcurgerea urmatoruluialgoritm:1. se calculeaza grosimea de rezistenta _0 cu relatia 10.10;2. se calculeaza adaosul pentru conditiile de exploatare, cex cu relatia 10.11;3. se identifica valoare rotunjirii cr prin alegerea grosimii standardizate imediatsuperioare valorii calculate _0 + cex;4. se verifica daca vasul este cu pereti subtiri conform conditiei 10.12. Daca acestlucru nu se verifica, algoritmul este abandonat;5. se calculeaza rezistenta efectiva cu relatia 10.19;6. se verifica conditia 10.20. Daca aceasta conditie se verifica grosimea de proiectarea peretelui vasului, _p este corecta si algoritmul furnizeaza aceasta valoare.Daca conditia nu de respecta se incrementeaza cu 1 mm grosimea de rezistentaefectiva a vasului, __0 si se revine la pasul 2 al algoritmului.Caracteristicile materialului de constructie al vasului sunt aratate n tabelul 10.2.Tabelul 10.2. Caracteristici OL42 (conform SR EN 10207/95).Caracteristici Valoare_20c , [MPa] 260_tc, [MPa]la 100C 225la 150C 216la 200C 206la 250C 186_20r , [MPa] 410_tr, [MPa]la 100C 395la 150C 380la 200C 360la 250C 300grosime tabla, [mm] 4, 5 (abatere la grosime: 0,5 mm)6, 7 (abatere la grosime: 0,6 mm)8, 9, 10, 12, 14, 15, 16, 18, 20, 22, 25(abatere la grosime: 0,8 mm)28, 30 (abatere la grosime: 0,9 mm)32, 35, 38, 40 (abatere la grosime: 1,0 mm)Utilizand toate aceste informatii, se scrie urmatorul program MATLAB:%Program de calcul al grosimii de proiectare% pentru un vas cilindric verticalclear all;clcfalse = 0;true = 1;p_m = 0.8; % presiunea maxima admisibila, [MPa]D = 1100; % diametrul vasului, [mm]H = 2100; % inaltimea vasului, [mm]t = 60; % temperatura maxima de lucru, [grd.C]ro = 1200; % densitatea lichid stocat, [kg/mc]an = 10; % durata de exploatare, [ani]v_ex = 0.1; % viteza procesului de coroziune externa, [mm/an]v_in = 0; % viteza procesului de coroziune interna, [mm/an]v_e = 0.01; % viteza procesului de eroziune, [mm/an]fi = 0.9; % coef. suduriro_apa = 1000; % densitate lichid de incercare, [kg/mc]% caracteristici materialsig_c_20 = 260;sig_r_20 = 410;t_date = [100 150 200 250];sig_c = [225 216 206 186];sig_r = [395 380 360 300];% grosime si abatere standard a tableids = [4 5 6 7 8 9 10 12 14 15 16 ...18 20 22 25 28 30 32 35 38 40];ab = -[0.5 0.5 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8 0.8 ...0.8 0.8 0.8 0.8 0.9 0.9 1 1 1 1];% calcul rezistenta materialsig_a_20 = min([sig_c_20/1.5 sig_r_20/2.4]);sig_c_t = interp1([20 t_date],[sig_c_20 sig_c],t);sig_r_t = interp1([20 t_date],[sig_r_20 sig_r],t);sig_a_t = min([sig_c_t/1.5 sig_r_t/2.4]);% presiunea hidrostatica, [MPa]p_h = 9.81e-8*H*ro;% presiunea de calcul, [MPa]p_c = p_m + p_h;% grosimea de rezistenta, [mm]d0 = p_c*D / (2*fi*sig_a_t - p_c);% adaos de exploatare, [mm]c_ex = (v_ex + v_in + v_e)*an;% grosimea de rezistenta calculata, [mm]d0c = d0 + c_ex;test = false;while ~test% grosimea standardizata, [mm]i = 1;while (d0c-ab(i))>ds(i)i = i + 1;endc_r = ds(i) - (d0 + c_ex - ab(i));d_p = d0 + c_ex + c_r - ab(i);% presiunea de incercare hidraulica, [MPa]p_ph = 1.25*p_m*sig_a_20/sig_a_t;% presiunea hidrostatica apa, [MPa]p_ha = 9.81e-8*H*ro_apa;% presiunea de incercare hidraulica calculata, [MPa]p_phc = p_ph + p_ha;if (d0c/D)>0.1error(Vasul este cu pereti grosi!!!);endsig_ef = p_phc*(D + d0c)/(2*fi*d0c);test = sig_ef