0% encontró este documento útil (0 votos)
115 vistas

07 Programacion Matlab

Este documento describe los conceptos básicos de programación en MATLAB. Explica los tipos de operadores, sentencias condicionales e iterativas que se pueden usar en MATLAB, como if, elseif, for, while y switch-case. También cubre temas como funciones, variables y estructuras lógicas de programación.

Cargado por

Amado Malca
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
115 vistas

07 Programacion Matlab

Este documento describe los conceptos básicos de programación en MATLAB. Explica los tipos de operadores, sentencias condicionales e iterativas que se pueden usar en MATLAB, como if, elseif, for, while y switch-case. También cubre temas como funciones, variables y estructuras lógicas de programación.

Cargado por

Amado Malca
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20

07. PROGRAMACION CON MATLAB Lic.

Amado Malca Villalobos

PROGRAMACION CON MatLab Un programa en MatLab, es una secuencia de instrucciones lgicamente ordenadas, que le indica al programa en forma detallada lo que debe hacer. En un programa por lo general hay que tomar algunas decisiones, que la asume el computador, para ello hay que darle la orden adecuada. As vamos a tener diferentes tipos de instrucciones: Operadores relacionales Operadores lgicos Sentencias condicionales Sentencias de iteracin Ficheros de funcin Programa principal Subprogramas OPERADORES RELACIONALES Operador Descripcin relacional: Menor que <

Tecla rpida Alt 60 Alt 62 Alt 60, alt 61 Alt 62, alt 61 Alt 61, alt 61 Alt 126, alt 61

> <= >= == ~=

Mayor que Menor o igual que Mayor o igual que Igual a Diferente de

Notas: 01) El signo =, solo asigna un valor, pero no compara. 02) El resultado de la comparacin ser 1, cuando sea verdadero, y 0 cuando sea falso. >> (4>9)+(6==8-2)+(8+5~=13)+(6<=16) ans = 2 >> (4>9)+(6==8-2)+(8+5~=14)+(6<=16) ans = 3 >> >> (4>9)+(6==8-2)+(8+5~=13)+(6<=16) ans = 2 >> [1 5 8 9 80]>[2 6 7 28 6] ans = 0 0 1 0 1 >> A=[1 2 4;5 6 7;9 8 4] A= 1 2 4 5 6 7 9 8 4 >> A>=2 ans = 0 1 1 1 1 1 1 1 1 >> B=A>=5 B= 0 0 0 1 1 1 1 1 0 >> C=[11 12 44;51 61 71;93 86 44] C = 11 12 44 51 61 71 93 86 44 >> D=C+5 D = 16 17 49 56 66 76 98 91 49

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

>> C=[21 -12 44;55 71 71;83 96 54] C = 21 -12 44 55 71 71 83 96 54 >> B==C, D~=B ans = 0 0 0 0 0 0 0 0 0 ans = 1 1 1 1 1 1 1 1 1 >> X=B==C, Y=D~=B, Z=C<=D X= 0 0 0 0 0 0 0 0 0 Y= 1 1 1 1 1 1 1 1 1 Z= 0 1 1 1 0 1 1 0 0 OPERADORES LGICOS Operador Nombre Descripcin Lgico La conjuncin & y

Tecla rpida Alt Alt 38 124

| ~

o no

La disyuncin inclusiva La negacion

Alt 126

>> 4|-8, 6&0, ~7 ans = 1 ans = 0 ans = 0 >> (4|-8)+(6&0)+(~7) ans = 1 >> (4>8)|(5==-8)+(6<7)&(7>=0)+(~7) ans = 1 >> ((4>8)|(5==-8))+((6<7)&(7>=0))+(~7) ans = 1 >> ((4>8)|(5==-8))+((6<7)&(7>=0))+(~(5>-7)) ans = 1 >> ((4>8)|(5==-8))+((6<7)&(7>=0))+(~(5>7)) ans = 2 >> FUNCIONES LGICAS PREDEFINIDAS Funcin Lgica Equivalencia Descripcin La conjuncin and(a,b) a b

or(a,b) .not(a) xor(a,b) all(A) any(A) find(A) find(A>d)

a b
~a

La disyuncin inclusiva La negacion

La disyuncin exclusiva Cuantificador "A universal Cuantificador $A particular Busca los elementos no nulos Busca los elementos mayores que

aVb

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

el valor d Ejemplo de aplicacin: El vector: T = [25 38 30 33 34 35 36 38 39 39 40 39 37 35 35 35 34 33 32 32 31 30 28 24] Representa la temperatura en grados centgrados, por horas del dia 12 de Enero. a) Indicar cuantas veces la temperatura fue mayor de 30 grados. b) El numero de horas que la temperatura estuvo entre 25 y 35 grados. c) El numero de horas que la temperatura no estuvo entre 20 y 30 grados. Solucin a) Indicar cuantas veces la temperatura fue mayor de 30 grados. >> T = [25 38 30 33 34 35 36 38 39 39 40 39 37 35 35 T = Columns 1 through 14 25 38 30 33 34 35 36 38 39 39 40 39 Columns 15 through 24 35 35 34 33 32 32 31 30 28 24 >> T>30 ans = Columns 1 through 14 0 1 0 1 1 1 1 1 1 1 1 1 1 Columns 15 through 24 1 1 1 1 1 1 1 0 0 0 >> sum(T>30) ans = 19 >> find(T>30) ans = Columns 1 through 14 2 4 5 6 7 8 9 10 11 12 13 14 Columns 15 through 19 17 18 19 20 21 >> Rpta: 30 veces, en las horas: 2 4 5 6 7 8 18 19 20 21 35 34 33 32 32 31 30 28 24] 37 35

15

16

10

11

12

13

14

15

16 17

b) El nmero de horas que la temperatura estuvo entre 25 y 35 grados. >> T>25 & T<35 ans = Columns 1 through 14 0 0 1 1 1 0 0 0 0 0 0 Columns 15 through 24 0 0 1 1 1 1 1 1 1 0 >> sum(T>25 & T<35) ans = 10 >> find(T>25 & T<35) ans = 3 4 5 17 18 19 20 21 22 >> Rpta: 10 veces, en las horas 3 4 5 17

23

18

19

20

21

22

23

c) El nmero de horas que la temperatura no estuvo entre 20 y 30 grados. >> not(T>20 & T<30) ans = Columns 1 through 14 0 1 1 1 1 1 1 Columns 15 through 24 1 1 1 1 1 1 1 >> find(not(T>20 & T<30)) ans = Columns 1 through 14 2 3 4 5 6 7 8 Columns 15 through 21

1 1

1 0

1 0

10

11

12

13

14

15

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

16 17 18 19 20 21 >> sum(not(T>20 & T<30)) ans = 21 >> Rpta: 21 veces en las horas: 17 18 19 20 21 22 2

22

10

11

12

13

14

15

16

PROGRAMACION EN MatLab Para la estructura de programacin en MATLAB se requiere conocer por lo menos los siguientes comandos: END : Determina hasta cual orden llega el efecto de if, for, y while. (Para ejemplos de su uso ver if, while y for) IF: Verifica si se cumple cierta condicin, y de acuerdo a si se cumple o no realiza la accin que se desee. WHILE: Realiza una parte del programa mientras se cumpla alguna condicin. FOR: Muy parecido al While, pero utiliza un contador, es til si se quiere repetir una parte del programa un nmero determinado de veces. CLEAR: Borra todas las variables de la memoria. Es recomendable usarlo al principio de todos los programas. (simplemente escriba clear; al comienzo del programa) PLOT: Sirve para obtener resultados grficos en 2D. DISP: Sirve para escribir texto de salida o vectores. de resultados. INPUT: Se utiliza para que el programa pida valores de variables mientras se ejecuta.

SENTENCIAS CONDICIONALES
Sentencia Condicional: if end Aqu se ejecuta un solo conjunto de instrucciones
Esquema logico Diagrama de flujo Estructura lgica

......
Falso Sentencia if Verdadero Instrucciones

Pr ograma

en MatLab Si exp. condicional

...... Instrucciones ...... MatLab ......


End Pr ograma ...... en MatLab

End

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

Ejemplo: Un trabajador tiene una remuneracin bsica como vendedor de 1 200 nuevos soles, pero si las ventas en el mes son mayores a 50 000, tiene una bonificacin adicional del 1% sobre la diferencia. Indicar el salario para diferentes casos de ventas. sueldo.m % programa que calcula el sueldo de una persona % en base al monto de las ventas % Si las ventas son menor o igual que un monto M, el sueldo es S % si la ventas superan M, el sueldo es S mas % la diferencia de las ventas con M V=input('indique las ventas efectuadas en el mes\n'); M=input('indique el monto base de las ventas\n'); S=input('indique el salario base\n'); if (V>M) S=S+0.01*(V-M); end fprintf('El sueldo de cada trabajador es de: %6.2f nuevos soles\n',S);

Ejecucin en MatLab
>> sueldo indique las ventas efectuadas en el mes 30000 indique el monto base de las ventas 25000 indique el salario base 1200 El sueldo de cada trabajador es de: 1250.00 nuevos soles >> sueldo indique las ventas efectuadas en el mes 50000 indique el monto base de las ventas 60000 indique el salario base 1200 El sueldo de cada trabajador es de: 1200.00 nuevos soles >>

Sentencia Condicional: if else - end


Aqu se ejecutan dos grupos de instrucciones
Esquema logico Diagrama de flujo Estructura lgica

......
Falso

Pr ograma

Sentencia if Verdadero

Grupo 1 de Instrucciones

Grupo 2 de Instrucciones

End

en MatLab Si exp. condicional .... Instrucciones .... 01 MatLab Else .... Instrucciones .... 02 MatLab End Pr ograma ...... en MatLab

Ejemplo: Se necesita calculare el volumen de agua en un tanque, con la forma que se indica en el grafico

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

Un trabajador tiene una remuneracin bsica como vendedor de 1 200 nuevos soles, pero si las ventas en el mes son mayores a 50 000, tiene una bonificacin adicional del 1% sobre la diferencia. Indicar el salario para diferentes casos de ventas.

Diametro 44 m 16 m
rh

29 m

Diametro 20 m
SOLUCION: El volumen es igual

100p h 3 V (h) = 4 3h 4000p p 47 3 3 4

0 h 29 29 < h 45

volumen.m % programa que calcula el volumen de agua % de un deposito cilndrico-conico % la entrada es el nivel del agua en m. % La salida es el volumen de agua en m3. h=input('indique el nivel del agua del tanque\n'); if (h<=29) V=100*pi*h; else V=((4/3)*(((3*h/4)-47)^3))-(4000*pi/3); end fprintf('El volumen de es: %6.2f metros cubicos\n',V);

Ejecucin en MatLab
>> volumen indique el nivel del agua del tanque 20 El volumen de es: 6283.19 metros cubicos >> volumen indique el nivel del agua del tanque 25 El volumen de es: 7853.98 metros cubicos >> Ejemplo: Hallando el valor absoluto de un numero.

SOLUCION: Sabemos que

x 0 x x= - x x< 0

volumen.m function y=valorabs(x) % esta fumncion calcula el valor absoluto % de un numero real x % donde el resultado es x, si es no negativo % y es -x si es negativo if (x>=0) y=x; else y=-x; end

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

Ejecucin en MatLab
>> valorabs(88) ans = 88 >> valorabs(-45) ans = 45 >> valorabs(0) ans = 0 >>

Sentencia Condicional: if elseif else - end


Aqu la ventaja es que se pueden ejecutar tres grupos de instrucciones en forma disyuntiva Esquema lgico Diagrama de flujo

Falso

Sentencia if Verdadero

Falso

Sentencia elseif Verdadero

Grupo 1 de Instrucciones

Grupo 3 de Instrucciones

Grupo 2 de Instrucciones end

Estructura lgica

......Pr ograma en MatLab if exp. condicional ...... Instrucciones ...... 01 MatLab elseif exp. condicional ...... Instrucciones ...... 02 MatLab

else

...... Instrucciones ...... 03 MatLab


end ......Pr ograma en MatLab

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

Sentencia:

switch-case

Es otra estructura para el control de flujo de un programa. Esta sentencia proporciona un mecanismo para escoger y ejecutar un grupo de instrucciones de entre varios grupos posibles. Estructura lgica

......Pr ograma en MatLab switch exp resion case valor 1 ...... Grupo 1 de instrucciones ...... case valor 2 ...... Grupo 2 de instrucciones ...... case valor 3 ...... Grupo 3 de instrucciones ...... otherwise ...... Grupo 4 de instrucciones ......

end ......Pr ograma en MatLab

Cmo funciona la sentencia switch-case?


El valor de la expresin del switch se compara con los valores de cada comando case. Si se encuentra una coincidencia, entonces se ejecutan las instrucciones que siguen a dicho comando case (solo un grupo de instrucciones). Si hay ms de una coincidencia, solo se atender a la primera que se encuentra. Si no se encuentran coincidencias se ejecutan las instrucciones que siguen al comando otherwise, si este ha sido declarado (es opcional). Si no se encuentran coincidencias y no est declarado el comando otherwise, entonces no se ejecutara ninguna instruccin o grupo de instrucciones. Una sentencia case puede tener ms de un valor con el que establecer coincidencias. Para declararlos solo es necesario ponerlos a continuacin, uno detrs del otro, entre llaves y separados por comas, de la forma: {valor1, valor2, valor3, . . . }. En este caso al tener ms de un valor, el grupo de instrucciones correspondientes al case se ejecutara siempre que al menos haya coincidencia con alguno de los valores indicados. Ejemplo de aplicacin: Escribir un programa para convertir una expresin de longitud, que puede estar en m, dm, cm, mm, dam, hm, km, pulgada, pie, yarda. En otro nmero equivalente en otra unidad indicada por el usuario. SOLUCION: cambiounidad.m
Vent=input('Introduzca el valor de la distancia que hay que convertir:\n'); UnitEnt=input('Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km):\n','s'); UnitSal=input('Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km):\n','s'); error=0; switch UnitEnt case 'm' Vi=Vent; case 'cm' Vi=Vent/100; case 'dm'

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

Vi=Vent/10; case 'mm' Vi=Vent/1000; case 'dam' Vi=Vent*10; case 'hm' Vi=Vent*100; case 'km' Vi=Vent*1000; otherwise error=1; end switch UnitSal case 'm' Vf=Vi; case 'cm' Vf=100*Vi; case 'dm' Vf=10*Vi; case 'mm' Vf=1000*Vi; case 'dam' Vf=Vi/10; case 'hm' Vf=Vi/100; case 'km' Vf=Vi/1000; otherwise error=1; end if error==1 disp('Horror, La unidad de entrada o la de conversion se ha tecleado en forma incorrecta\n') else fprintf('V=%g%s\n',Vf,UnitSal) end

Ejecucin en MatLab
>> cambiounidad Introduzca el valor de la distancia que hay que convertir: 3777 Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km): dm Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km): km V=0.3777km >> cambiounidad Introduzca el valor de la distancia que hay que convertir: 6799 Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km): ham Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km): m Horror, La unidad de entrada o la de conversion se ha tecleado en forma incorrecta\n >> cambiounidad Introduzca el valor de la distancia que hay que convertir: 98888888 Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km): mm Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km): km V=98.8889km >>

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

BUCLES
Los bucles o iteraciones se usan para controlar el flujo de un programa. En un bucle, la ejecucin de uno o varios comandos se repite varias veces consecutivamente. Cada una de estas repeticiones se denomina paso o iteracin. En MatLab tenemos definido dos tipos de bucle: - for-end: el numero de iteraciones se define al comienzo del bucle. - while-end: El numero de iteraciones no se conoce al inicio del bucle, depende de que se cumpla o no alguna condicin. En ambos casos se puede salir de estos bucles, antes de que acaben con el comando breack.

Bucles del tipo for-end Aqu se ejecutan dos grupos de instrucciones


Estructura lgica Estructura lgica k: variable ndice del bucle f: valor inicial de k s: incremento del valor k, por defecto 1 t: valor lmite de la variable k

for k = f : s : t .... Comandos .... en MatLab end

Ejemplo: Sumar los 50 primeros nmeros enteros positivos mltiplos de 7. Solucin: SOLUCION: sumnat.m function s=sumnat(n) % esta funcin suma de % los n primeros nmeros naturales % el resultado es la suma de tales nmeros s=0; for k=1:1:n s=s+k end

Ejecucin en MatLab
>> sumnat(3) ans = 6 >> sumnat(0) ans = 0 >> sumnat(-6) ans = 0 >> sumnat(6) ans = 21 >> sumnat(16) ans = 136 >> Ejemplo: Calcular la suma de trminos de la siguiente serie:

(- 1) k
2k

k= 1

SOLUCION: sumserie.m % este programa calcula la suma de terminos % de la serie: % Sum(k=1:n)((-1)^k)*k/(2^k)) % a funcion suma % los n primeros numeros naturales % el resultado es la suma de tales numeros

10

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

n=input('ingrese el numero de terminos de la serie: \n'); s=0; for k=1:1:n s=s+((-1)^k)*k)/(2^k); end fprintf('la suma de los terminos de la serie es: %5.4f \n',s)

Ejecucin en MatLab
>> sumserie ingrese el numero de terminos de la serie: 5 la suma de los terminos de la serie es: -0.2813 >> sumserie ingrese el numero de terminos de la serie: 99 la suma de los terminos de la serie es: -0.2222 >> sumserie ingrese el numero de terminos de la serie: 5 la suma de los terminos de la serie es: 1.7813 >> Ejemplo: La funcin seno se puede aproximar usando la serie de Taylor. Como sigue:

(- 1) x 2 k + 1 sen( x) = k = 1 (2k + 1)!

Donde x esta en radianes SOLUCION: senserie.m


% este programa calcula el seno de x, donde x esta en radianes % mediante la serie de taylor % con n trminos, en la serie % las variables de entrada son x en grados sexagesimales % y n que es el numero de trminos % La salida es el valor aproximado del seno x=input('ingrese el valor del ngulo en grados sexagesimales: \n'); n=input('ingrese el numero de trminos a considerar: \n'); s=0; xr=x*pi/180; for k=0:1:n-1 s=s+((-1)^k)*(xr^(2*k+1))/factorial(2*k+1); end fprintf('El seno aproximado es: %5.4f \n',s)

Ejecucin en MatLab
>> senserie ingrese el valor del ngulo en grados sexagesimales: 190 ingrese el numero de trminos a considerar: 3 El seno aproximado es: 0.5801 >> senserie ingrese el valor del ngulo en grados sexagesimales: 150 ingrese el numero de trminos a considerar: 7 El seno aproximado es: 0.5000 >> Puede comprobar para x = 1, en sexagesimales seria 180/pi.

(- 1) 1 1 1 1 sen(1) = + + ..... + + .... 1! 3! 5! 7! (2k + 1)!


Ejemplo: Ahora vamos a considerar el problema de cambiar los elementos de un vector bajo ciertas condiciones.

11

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

El programa multiplica por tres los elementos del vector que sean positivos, y mltiplos de 3 5; y eleva al cuadrado los negativos mayores que -10. SOLUCION: ANALISIS LOGICO Diagrama de flujo

Falso

x(n)>0&(rem(x(n),3)==0 | rem(x(n),8)==0)

Falso
x(n)<0 & x(n)>-10

Verdadero
x(n) = 3*x(n)

Verdadero
x(n)= (x(n))^2

end

cambiavector.m

% Este programa cambia los elementos de un vector. % multiplica por tres los elementos positivos, y mltiplos de 3 5 % eleva al cuadrado los negativos mayores que -10. x=input('Ingrese un vector con elementos enteros: \n'); n=length(x); for k=1:1:n if x(k)>0 & ( rem(x(k),3)==0 | rem(x(k),8)==0 ) x(k)=3*x(k); elseif x(k)<0 & x(k)>-10 x(k)=x(k)^2; end end x

Ejecucin en MatLab >> cambiavector Ingrese un vector con elementos enteros: [1 5 9 0 -5 -30 64] x = 1 5 27 0 25 -30 192 >> cambiavector Ingrese un vector con elementos enteros: [1 5 7 16 15 -20 -7 9 0 -5 -30 64] x = 1 5 7 48 45 -20 49 27 -30 192 >>

25

12

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

Bucles del tipo while - end Este tipo de bucle se usa cuando hy necesidad de iun proceso iterativo, pero se desconoce cuantos pasos deben hacerse, generalmente est sujeto a condiciones que se hallan al ejecutar la solucin del `problema. A veces aqu es necesario del uso de algn comando que pare el programa en caso de que no se halle la condicin pedida.
Estructura lgica

while exp resion _ condicional .... Instrucciones .... de MatLab

end
Recomendaciones La expresin condicional del comando while debe incluir al menos una variable Respecto a esta variable debe tener un valor asignado cuando se ejecute el comando while por primera vez La o las varibles de la expresin condicional deben cambiar entre la sentencia while y end, de otro modo se tendra un bicle infinito Para evitar un bucle infinito se puede usar el comando break Un bucle infinito tambin se puede terminar con Ctrl + C 0 Ctrl + break Ejemplo: A una variable x se le incrementa su valor inicial en 7, mientras que esta sea menor de 200. SOLUCION: incrementador.m % Este programa incrementa un numero inicial en 7, % mientras este sea menor que 200 x=input('Ingrese un numero: \n'); n=0; while x<200; x=x+7; n=n+1; end fprintf('El nuevo valor es: %-3.2i \n',x) fprintf('Se ha incrementado %-3i veces el siete\n',n)

Ejecucin en MatLab
>> incrementador Ingrese un numero: 45 El nuevo valor es: 206 Se ha incrementado 23 veces el siete >> incrementador Ingrese un numero: 234 El nuevo valor es: 234 Se ha incrementado 0 veces el siete >> incrementador Ingrese un numero: 200 El nuevo valor es: 200 Se ha incrementado 0 veces el siete >> incrementador Ingrese un numero: -200 El nuevo valor es: 206 Se ha incrementado 58 veces el siete

13

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

>> incrementador Ingrese un numero: -20 El nuevo valor es: 204 Se ha incrementado 32 veces el siete >> Ejemplo: Elaborar un programa que divida en tres partes un intervalo, y tome la parte intermedia hasta que la longitud sea menor que 0.001 SOLUCION: trisecaintervalo.m % Este programa divide en tres partes un intervalo % y toma la parte intermedia % hasta que la longitud sea menor que 0.001 a=input('Ingrese el lado izquierdo del intervalo: \n'); b=input('Ingrese el lado derecho del intervalo: \n'); if b-a > 0.001 while b-a>0.001; a=(b+2*a)/3; b=(a+b)/2; end fprintf('El lado izquierdo del nuevo intervalo es: %-3.5f \n',a) fprintf('El lado derecho del nuevo intervalo es: %-3.5f\n',b) else fprintf('Los datos no generan un intervalo valido. &$#### \n') end

Ejecucin en MatLab
>> trisecaintervalo Ingrese el lado izquierdo del intervalo: 1 Ingrese el lado derecho del intervalo: 4 El lado izquierdo del nuevo intervalo es: 2.49977 El lado derecho del nuevo intervalo es: 2.50023 >> trisecaintervalo Ingrese el lado izquierdo del intervalo: 5 Ingrese el lado derecho del intervalo: 2 Los datos no generan un intervalo valido. &$#### >> Ejemplo: La funcin exponencial al ser expresada como una serie de Taylor, queda como sigue:

xn x 2 x3 x 4 x5 = 1 + x + + + + +L 2! 3! 4! 5! n= 0 n ! x Escribir un programa que calcule e usando la serie de Taylor, con los sumandos necesarios hasta ex =
que el ultimo sumando sea menor que 0.000001. Adems la suma no debe pasar de 30 trminos, si fuese el caso hay que indicar que se necesitan ms sumandos. Hallar con este programa: e , e SOLUCION: seriexp.m
% % % %
2 - 4

, e

10

y e

20

Este programa calcula el valor de e^x usando las erie de Taylor hasta que el ultimo termino sea menor que 0.00000l, o haya 30 terminos como maximo

x=input('Ingrese el valor de x: \n'); n=1;sn=1;s=sn; while sn>0.000001 & n<30

14

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos s=s+(x^n)/factorial(n); n=n+1; sn=abs((x^n)/factorial(n)); end if n>=30 fprintf('Se necesitan mas de 30 terminos \n') else fprintf('El valor de exp(%f) es %-3.5f\n',x,s) end

Ejecucin en MatLab
>> seriexp Ingrese el valor de x: 2 El valor de exp(2.000000) es 7.38906 >> seriexp Ingrese el valor de x: 21 Se necesitan mas de 30 terminos >> seriexp Ingrese el valor de x: 0 El valor de exp(0.000000) es 1.00000 >> seriexp Ingrese el valor de x: 8 Se necesitan mas de 30 terminos >> seriexp Ingrese el valor de x: 5 El valor de exp(5.000000) es 148.41316 >> Ejemplo: Crear una matriz de orden m por n, donde el elemento i j este dado por la expresin:

ai j = 3i - 4 j
SOLUCION: creamatriz.m % Creacion de una matriz de orden mxn % Donde el elemento i j esta dado por % a(i,j)=3i-4j m=input('ingrese el numero de filas de la matriz '); n=input('ingrese el numero de columnas de la matriz '); A=zeros(m,n); for k=1:1:m for l=1:1:n A(k,l)=3*k-4*l; end end A

Ejecucin en MatLab
>> creamatriz ingrese el numero de filas de la matriz 4 ingrese el numero de columnas de la matriz 5 A= -1 -5 -9 -13 -17 2 -2 -6 -10 -14 5 1 -3 -7 -11 8 4 0 -4 -8 >> creamatriz ingrese el numero de filas de la matriz 5 ingrese el numero de columnas de la matriz 8 A= -1 -5 -9 -13 -17 -21 -25 -29 2 -2 -6 -10 -14 -18 -22 -26 5 1 -3 -7 -11 -15 -19 -23 8 4 0 -4 -8 -12 -16 -20 11 7 3 -1 -5 -9 -13 -17

15

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

>> creamatriz ingrese el numero de filas de la matriz 0 ingrese el numero de columnas de la matriz 0 A = [] >> Ejemplo: Construya el triangulo de Pascal como una matriz de orden n por n. Donde el elemento a(1,j)=a(i,1)=1; a(i,j)= a(i,j-1)+a(i-1,j) para todo i>1, j>1. Solucin: SOLUCION: matrizpascal.m % Programa que construya el triangulo de Pascal % como una matriz de orden n por n. % Donde el elemento a(1,j)=a(i,1)=1 % a(i,j)= a(i,j-1)+a(i-1,j) % para todo i>1, j>1. n=input('ingrese el orden de la matriz '); A=ones(n,n); for k=2:1:n for l=2:1:n A(k,l)=A(k,l-1)+A(k-1,l); end end A

Ejecucin en MatLab
>> matrizpascal ingrese el orden de la matriz 5 A= 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 >> matrizpascal ingrese el orden de la matriz 6 A= 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 >> Los Comandos break y continue El comando break se usa principalmente para terminar un posible bucle infinito; si esta dentro de un bucle, pero si esta en un programa normal, termina el programa. El comando continue lo que hace es terminar la iteracin de un bucle y pasar a la siguiente iteracin. EJEMPLOS ADICIONALES Ejemplo01. Usando el bucle for - end, hallar la raz cuadrada de los primeros 20 nmeros, y presentarlos en una tabla de 20 por 2. % Calculo de la raiz cuadrada de los n primeros enteros positivos % usando el comando for-end n=input('ingrese la cantidad de terminos: '); u=[1:n]';

16

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

v=ones(n,1); for k=1:1:n; v(k)=sqrt(u(k)); end %R=[u v]; %disp(R) disp('') disp('numero raiz cuadrada') for k=1:n; fprintf('%5.0i %5.4f\n',u(k),v(k)) end Ejemplo02: Hallar el factorial de un nmero entero no negativo % Calculo de el factorial de un numero entero no negativo n=input('El valor de n, es: ') p=1; if n<0 disp('Error, ingreso un valor inadecuado ') break elseif n==0 fact=p; else for k=1:n p=p*k; end fact=p; end fprintf('El factorial de %5i es %5i\n',n,fact)

Ejemplo03:METODO DE BISECCION Considrese la ecuacin

f (x)= 0 , Donde la funcin f cumple las condiciones para aplicar el

mtodo de las tangentes en cierto intervalo. La solucin se da por un proceso iterativo:

x1 f ( xk ) x = x , k = 1, 2,3, L k + 1 k f '( x ) k x Segn ello resolver: e + x = 0, x [ - 1,0]


% Solucion de una ecuacion f(x) = 0, por el metodo de Newton % clear f=0; df=0; x(1)=input('ingrese el valor inicial'); tol=input('Ingrese la tolerancia'); miter=input('ingrese el nuemro maximo de iteraciones'); k=1; d=1; while abs(d)>=tol & k<miter [f df]=fun(x(k)); x(k+1)=x(k)-(f/df); d=x(k+1)-x(k); k=k+1; end

17

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

if abs(d)>tol sol=[] disp('El numero de iteraciones no es suficiente o el proceso diverge') else sol=x' disp('El numero de iteraciones es:') k end

Ejemplo04: Mtodo del Punto Fijo Considrese la ecuacin

x = g (x), Donde la funcin g cumple las condiciones para aplicar el

mtodo del punto fijo. La solucin se da por un proceso iterativo:

x1 xk + 1 = g ( xk ), k = 1, 2,3,L x0 = 2
Segn ello resolver:

- 4 + 4x -

1 2 x = x 2

% % % % % % %

Solucion de una ecuacion por el metodo del Punto Fijo Calculo de los terminos de la sucesion de Fibonacci: con la funcion recursiva: F(1)=1 F(2)=1 F(n+2)=F(n+1)+F(n), para todo n entero positivo

x1=input('Ingrese la aproximacion inicial: '); tol=input('Ingrese la tolerancia de error: '); miter=input('Ingrese el numero maximo de iteraciones: x(1)=x1; k=1; d=1; while d>=tol & k<miter x(k+1)=-exp(x(k)); d=abs(x(k+1)-x(k)); k=k+1; end disp(x') fprintf('El numero de iteraciones es: %5.0f',k)

');

Ejemplo05: Elabore un programa que pida la edad de una persona, y visualice lo siguiente Si 0 edad < 6 , mostrar: infante

6 edad < 12 , mostrar: nio 12 edad < 18 , mostrar: adolescente Si 18 edad < 25 , mostrar: joven Si 25 edad < 60 , mostrar: adulto Si 60 edad , mostrar: anciano
Si Si %Etapas de un ser humano %Uso del comando menu Edad=menu('Indique su edad:','0<=E<6','6<=E<12','12<=E<18','18<=E<25','25<=E<60','60<=E' );

18

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

switch Edad case 1 disp('Infante') case 2 disp('Nio') case 3 disp('Adolescente') case 4 disp('Joven') case 5 disp('Adulto') case 6 disp('Anciano') end Ejemplo06: Elabore un programa que pida la edad de una persona, y visualice lo siguiente Si 0 edad < 6 , mostrar: infante

6 edad < 12 , mostrar: nio 12 edad < 18 , mostrar: adolescente Si 18 edad < 25 , mostrar: joven Si 25 edad < 60 , mostrar: adulto Si 60 edad ,
Si Si Ejemplo07: Crear una matriz de orden m por n, donde el elemento i j este dado por la expresin:

ai j = 3i - 4 j
% Creacin de una matriz de orden mxn % Donde el elemento i j esta dado por % a(i,j)=3i-4j clear m=input('ingrese el numero de filas de la matriz '); n=input('ingrese el numero de columnas de la matriz '); MZ=zeros(m,n); for k=1:1:m for t=1:1:n MZ(k,t)=3*k-4*t; end end MZ Ejemplo08: Construya el triangulo de Pascal como una matriz de orden n por n. Donde el elemento a(1,j)=a(i,1)=1; a(i,j)= a(i,j-1)+a(i-1,j) para todo i>1, j>1. % % % % % Programa que construya el triangulo de Pascal como una matriz de orden n por n. Donde el elemento a(1,j)=a(i,1)=1 a(i,j)= a(i,j-1)+a(i-1,j) para todo i>1, j>1. ');

n=input('ingrese el orden de la matriz A=ones(n,n); for k=2:1:n for l=2:1:n A(k,l)=A(k,l-1)+A(k-1,l); end end A

Ejemplo09: Hallar los trminos de la sucesin de Fibonacci hasta el trmino n

19

07. PROGRAMACION CON MATLAB Lic. Amado Malca Villalobos

% % % % % % %

Suceion de Fibonacci Calculo de los terminos de la sucesion de Fibonacci: con la funcion recursiva: F(1)=1 F(2)=1 F(n+2)=F(n+1)+F(n), para todo n entero positivo ');

n=input('Ingrese la cantidad de terminos a mostrar: F=zeros(n,1); F(1)=1; F(2)=1; if n==1 | n==2 disp(F) elseif n>2 for k=1:n-2 F(k+2)=F(k+1)+F(k); end disp(F) else disp('El valor de n, no es el adecuado') end

Ejemplo10: En los meses de Enero a Diciembre del 2012, se registro un promedio de lluvia mensual : 286 253 254 305 274 203 165 190 161 228 224 280 Hallar el valor promedio en el ao El numero de meses en que la temperatura estuvo debajo de la media, y en qu meses se dio.
clear lluvia=[286 253 228 224 280]; 254 305 274 203 165 190 161

n=length(lluvia); prom=sum(lluvia)/n; D=zeros(1,n); for k=1:n D(k)=lluvia(k)>prom; end D

20

También podría gustarte