Matlab

Hola, en este post presento algunos ejemplos de temas sobre el álgebra, análisis, física, que podés desarrollar con MATLAB. He probado programas como el Maple, Mathematica, graph, calculadora de Microsoft, pero ninguno me satisfizo como este programa.









Matlab

El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets).


Pruebas:





























desarrollo
El entorno
En MATLAB disponemos de varias ventanas que podemos usar si las necesitamos. Los ejemplos de este post solo se requieren del Editor, Comman Window, Command History, Current Folder y Workspace que se encuentran en la opción Desktop del menú de arriba(la cuarta opción luego de File).

Deberíamos tener algo así:
Programacion

analisis
Fijate que en Current Folder guardaremos los programas que iremos haciendo, yo los separé con carpetas.
algebra

fisica
Los primeros programas
Tecnico

Antes que nada a los programas que iremos haciendo lo guardamos con la extensión .m.
Nombre_programa.m, Nombre_programa es el mismo nombre que lleve la función.


Y los programas se corren con el boton play(el verde):



calculo

Si aparece este mensaje:
graficos

dale en Add to Path.
o sino seleccionar todas las carpetas de Current Folder y clickear en Add to Path-Select folders and subfolders.
Funciones:

function [valor/es_Salida]=llamarSuma(valor/es_entrada)

Tipeamos lo siguiente en un nuevo script y luego lo guardaremos como "llamarSuma.m":

function []=llamarSuma()
....fprintf('%dn',suma(9,8));
end

En este programa(el de arriba) que llamamos "llamarsuma" se ilustra el modo en que trabajan las funciones. Fijate que en fprintf invocamos a "suma" que no es más que otro programa/subrutina que realizaremos ahora:

function =suma(a,b)
....n=a+b;
end


Nota: guardar como suma.m
matlab
Que hacen estas dos rutinas?
La primera, llamarSuma invoca a suma, enviándole dos números que son el 9 y 8 que se almacenan en a y b, luego, n=a+b y retorna ese valor mediante la cabecera de la función. Luego fprintf recibe ese valor y lo muestra en pantalla (consola o Command Window).

Otro ejemplo más con funciones, pero ahora invocamos al programa desde Comman Window:
Tipeamos:


function [devuelto]=entradaSalida(entrada)
....devuelto=2*entrada;
end

Guardamos el programa con la extensión .m y luego tipeamos en Comman Window el nombre del programa con el valor que se quiera:

>>entradaSalida(9)

Comman Window muestra:

ans =

..............18

>>
Matlab
FOR/IF

Así es la sintaxis del FOR y del if:

function []=ifor()
i=1;
for x=1:1:5

.....if(i~=4).....................................................% Si no estuviese este if, el programa muestra los numeros desde el 1 al 5.
.........disp(x);
....else
.......break
....end
....i=i+1;
end

~=..............distinto

disp(x);......muestra texto o array

%..............texto libre
desarrollo
Para graficar esta superficie:
Programacion


Es la función:
analisis

Tipea:

function []=funcion1()
.......[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
.......f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
.......mesh(X,Y,f);
.......axis([-10 10 -10 10 -0.3 1])
.......xlabel('{bfx}')
.......ylabel('{bfy}')
.......zlabel('{bfsinc} ({bfR})')
.......hidden off
end
algebra
mesh(X,Y,f);...................................graficar con líneas, ver que sucede si se pone surf.
axis([-10 10 -10 10 -0.3 1])............posición del gráfico.
hidden off.......................................ver lo que hay detrás de la superficie.
fisica
Si estás identificado con los ejes ortogonales; el eje de absisas, de ordenada y de cotas (x,y,z), podemos crear el siguiente script, de modo que se escriba una sola vez y luego invocarlo cada vez que querramos graficar otra cosa:

function []=ejes3d()
....grid on
....view([6,10,4])
....line([-10 10],[0 0],[0 0],'Color','black','LineStyle','-')
....hold on
....line([0 0],[-10 10], [0 0],'Color','black','LineStyle','-')
....hold on
....line([0 0],[0 0],[-10 10],'Color','black','LineStyle','-')
....xlabel('x')
....ylabel('y')
....zlabel('z')

end

Los ejes son:
Tecnico

Nota: Si vas a utilizar esta función en otro programa será mejor que arranques esta función y luego correr el otro.
calculo
grid on............ver grilla.
view................vista desde esas coordenadas.
line.................dibujar linea, un parámetro por cada dimensión. Si se trabaja en 2D, son 2 parámetros.
hold on...........mantener el gráfico previo, si no está o si está en off, la linea anterior desaparece.
xlabel('x')........muestra x en eje de absisas.
ylabel('y')........muestra y en eje de ordenadas.
zlabel('z')........muestra z en eje de cotas.

graficos

Si se agrega ejes3d(); en el gráfico anterior basta con invocarlo desde el principio:

function []=funcion1()
.......ejes3d();
.......[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
.......f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
.......mesh(X,Y,f);
.......axis([-10 10 -10 10 -0.3 1])
.......xlabel('{bfx}')
.......ylabel('{bfy}')
.......zlabel('{bfsinc} ({bfR})')
.......hidden off
end

Al correrlo grafica lo siguiente:
matlab


Ves los ejes ahí detrás? Podés usar Rotate 3d para desplazarte en el sentido que quieras moviendo el mouse.
Matlab

SUPERFICIES

PLANOS

Halle la ecuación del plano que contiene a la recta Programacion y forma un ángulo de 30° con la recta analisis, grafique la recta S y los planos. ¿Cuál es la posición relativa de S y r?.Justifique

Obviamente esto en examen se hace a mano, pero la intención es "ver" desde los ángulos que se quiera, cosa que muchos de los programas que dije en el principio no los cumple.

El producto vectorial, solución de ecuaciones, matrices, funciones, todo lo que se quiera hacer se hace con Matlab. Pero vamos a ignorar esas ecuaciones, hacemos lo que sigue a lapiz:

Luego de hallar la recta S y de calcular las normales y el punto de paso de los planos se traspasa al editor de modo que lo que hicimos esté de acuerdo con lo que se vé en el gráfico y se corre apretando play(boton verde):

function []=rectPlano3()
....ejes3d();
%planos:
....c=linspace(-5,8,25);
....[y,z]=meshgrid(c,c);
....x=y+1;
....hidden
....colormap Winter;...................%color de la superficie, marcar colormap y tipear F1.
....mesh(x,y,z);
....hold on
....x=5-y;
....hidden
....colormap Winter;
....mesh(x,y,z);
%rectas:
....t=-10:.1:10;
....plot3(-t,0*t,t,'r');....................%r
....hold on
....plot3(0*t+3,0*t+2,t,'magenta');.....%s
end

Este es el gráfico:
algebra

Fijate que la recta r que forma un ángulo de 30° con los planos es la roja, esos planos se intersectan en una recta, la de color violeta.
Así es como se ve de arriba(traza xy):
fisica


Este ejercicio pertenece a la Guía Complementaria de Algebra y Geometría Analítica de la Universidad Tecnológica Nacional.
Tecnico
Un ejemplo interactivo

Un haz de planos

Un haz de planos es la union que forman planos con la misma intersección que es una recta en comun, está definido por dos ecuaciónes de plano y un escalar que multiplica a uno de ellos, tomando así, distintos planos para distintos escalares.
calculo

La ecuación del haz de planos es esta: graficos y como
matlab
, reemplazando en la ec. del haz de planos y desarrollando miembro a miembro:
Matlab

Obtuvimos z y la tipeamos en el editor, dentro del programa:


%Muestreo del haz de planos.
function []=hazPlanos()
....ejes3d();
....c=linspace(-10,10,25);
....for t=1:1:25
........[x,y]=meshgrid(c,c);
........z=(-x+y+1+t*x+t*y)/(-t);...............%es el z que se obtuvo de los planos, π_1 y π_2.
........colormap Autumn
........pause(1).....................................%pausa de 1 segundo antes de seguir con la siguiente instrucción.
........surf(z)
........hold on
....end
end

En este video se puede ver como trabaja el código anterior:




















desarrollo
Paraboloide

Hay muchas formas de escribir una ecuación de una superficie. En este ejemplo vamos a considerar dos: la ecuación en función de X e Y y la forma paramétrica.

Programacion


Se observa que si k1=k2 entonces en la traza XY obtenemos circunferencias que crecen desde el origen. Es posible ver estas circunferencias si llevamos la ecuación en forma paramétrica:
analisis

%muestra el gráfico de un paraboloide elíptico con la opción de eligir
%en forma cartesiana (1) o paramétrica (2) usando el argumento de cabecera.

function []=paraboloide(opcion)
.....if opcion==1
........syms x y z;
........ezsurf(x.^2+y.^2);
....else
.......r=linspace(0,2,75);.........................%desde 0 hasta 2 hace 75 elipses.
.......theta=linspace(0,2*pi,50);..............%desde 0 hasta 2pi hace 50 puntos(mayor presición).
.......[r,theta]=meshgrid(r,theta);
.......X=r.*cos(theta);
.......Y=r.*sin(theta);
.......Z=r.^2;
.......surf(X,Y,Z)
.......end
.......colormap hsv;
end

Nota: ingresar opciones desde Comman Window.

Ingresando la opción 1 nos muestra:
algebra

desde arriba, traza XY:
fisica

Ingresando la opción 2 nos muestra:
Tecnico

desde arriba, traza XY:
calculo

graficos

Tiro oblicuo con y sin rozamiento del viento
matlab
















Se dice que cuando las partículas se mueven a través de algo que impida su libre movimiento se dice que se mueven en medios resistivos. Por ejemplo cuando se deja caer una piedra al agua, la piedra posee una velocidad, como el agua es un medio resistivo, la partícula desacelera, a causa de esto pierde velocidad hasta que su aceleración sea cero. Cuando su aceleración se hace cero, la piedra se mueve a velocidad constante y esta velocidad se denomina velocidad terminal y seguirá bajando con esta velocidad hasta que llegue al fondo.

Bueno, un ejemplo "bueno" es el de tiro oblicuo con y sin rozamiento del viento. Si sos como yo, seguro que primero querrás ver como se llega a esas ecuaciones y luego introducirlas al código.


Dejo el link de descarga con el desarrollo de las ecuaciones:

Nota: Estos links son míos, de archivos míos. No estoy violando copyright ni nada por el estilo.
Este archivo es la demostración del porque de las ecuaciones:
http://www mediafire com/?ylxxdr6ypkdsrt6

Ecuaciones para el moviento sin⁡ rozamiento del viento:
http://www mediafire com/?d2rt45zshb0i4w7

Ecuaciones para el moviento con rozamiento del viento:
http://www mediafire com/?wbvlhxohjlkb9uo

Aca se encuentra el desarrollo del ejercicio:
http://www mediafire com/?4uy5tzvcw4qad1e
Matlab
Luego de Plantear las ecuaciones de Newton y desarrollar matemática y algebraicamente se llega a estas expresiones:

Las ecuaciones de movimiento sin rozamiento:
desarrollo

Estas son para el desplazamiento si se considera el rozamiento del viento:
Programacion

Las primeras dos ecuaciones están en función del tiempo y la tercera está en función de x para el moviemiento sin rozamiento, las últimas cuatro están en función del tiempo. Se puede considerar una ecuación para el desplazamiento en función de x para el caso en que la partícula se mueva con rozamiento(como se hizo para el primer caso), pero es mucho trabajo despejar t de x y reemplazar en y. Por lo tanto se puede graficar con x e y en función de t.


El código(En el programa no se pone puntos al principio ):

%Tiro oblicuo con y sin resistencia del viento:
%Se ingresa desde Command Window:
% m: masa
% Vi: velocidad de arranque
% theta: angulo respecto de la horizontal
% k: constante de proporcionalidad. f=kv (fuerza de rozamiento del aire)

function [] = mruv(m,Vi,theta,k)
....clc
....g=9.8;
%Este segmento no considera la resistencia del viento
....tp=2*Vi*sin(theta)/9.8;
....ym=(tp/2)*Vi*sin(theta)-(1/2)*g*(tp/2).^2;
....xm=Vi*cos(theta)*tp;
....fprintf('velocidad inicial: %.2fnn',Vi);
....fprintf('tiempo total en movimiento sin rozamiento: %.2fn',tp);
....fprintf('x maximo sin rozamiento: %.2fn', xm);
....fprintf('y maximo sin rozamiento: %.2fnn',ym);
....axis([0 xm 0 ym])
....for c=0:.3:xm
........x=linspace(c,c+.5,25);
........y=tan(theta)*x-.5*g*(x.^2)/((Vi*cos(theta)).^2);......... ...%y está en función de x.
........if y<0
............break
........end
........hold on
........pause(.01)
........plot(x,y)
....end
%Este segmento considera la resistencia del viento:
....n=(Vi*sin(theta)+m*g/k);
....tm=-(m/k)*log(m*g/(n*k));
....xmax=(m/k)*Vi*cos(theta)*(1-exp(-(k/m)*(2*tm)));
....ymax=((m/k)*g+Vi*sin(theta))*(m/k)*(1-exp(-(k/m)*tm))-(m/k)*g*tm;
....fprintf('tiempo maximo con rozamiento: %.2fn',2*tm);
....fprintf('x maximo con rozamiento: %.2fn',xmax);
....fprintf('y maximo con rozamiento: %.2fn',ymax);
....for c=0:.05:2*tm
........t=linspace(c,c+.3,25);
........x=(m/k)*Vi*cos(theta)*(1-exp(-(k/m)*t));
........y=((m/k)*g+Vi*sin(theta))*(m/k)*(1-exp(-(k/m)*t))-(m/k)*g*t;
........hold on
........pause(.03)
........plot(x,y,'r')..............................%Se grafica con x e y en función de t.
....end
end
analisis
En este video se puede ver como k, que es la constante de proporcionalidad, varía de mayor a menor. Cuanto mayor es el valor de k, mayor es la fuerza de rozamiento porque f=kv y cuanto menor es el valor de k, menor es la fuerza de rozamiento y por lo tanto la trayectoria se acerca a lo que vale si no se considera el roce del aire (la gráfica azul).















algebra

Desafío

Con todo lo aprendido hasta aca podés realizar el siguiente programa:












Dejo pistas:

for h=0:dif:rad
........z=linspace(-sqrt(h),sqrt(h),25);
........t=linspace(0,2*pi,25);
........[z,t]=meshgrid(z,t);
........r=abs(sqrt(h-z.^2));................%r es el radio, por lo tanto, se toma el valor absoluto de r.
........x=r.*cos(t)+a;
........y=r.*sin(t)+b;
........pause(.0001)
........colormap Autumn
........surfl(x,y,z+c)
........shading interp............%Superficie sin líneas
end
fisica
Modificar ejes3d(), agregarles parámetros nuevos.
Tecnico
set(subplot(1,1,1),'color',f);........%cambia el color del fondo del grafico.
calculo
Buscar la función camorbit en la ayuda.
graficos
Bueno, aca finaliza mi post laburioso porque me llevo muchas horas hacerlo, pero como no voy a dedicar tiempo a una comunidad que me ha brindado los programas que ni siquiera podría comprar, este mismo programa cuesta alrededor de 700 dólares.
Esto es a penas nada con lo que hace un estudiante de ingeniería/tecnica de 2 año en adelante. Espero haber ayudado a aquellos que quieran crear sus primeras aplicaciones.


Si me seguís verás que siempre posteo cosas parecidas a lo que se ve en este gráfico:
matlab

Nos encontramos en mi próximo post.
Matlab
Datos archivados del Taringa! original
35puntos
199visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
15visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

r
revanflow🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.