<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manuel+Riesgo</id>
		<title>MateWiki - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manuel+Riesgo"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Manuel_Riesgo"/>
		<updated>2026-04-25T08:09:47Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98148</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98148"/>
				<updated>2025-12-04T10:16:39Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Campo de Fuerzas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones distribuidas en el volumen del material. Su cálculo se define mediante la divergencia del tensor de tensiones:&lt;br /&gt;
&lt;br /&gt;
F = -∇ · σ&lt;br /&gt;
Al obtener valores numéricos del orden de 10⁻¹⁶ (un cero computacional), se confirma la ausencia de fuerzas de cuerpo físicas. Por tanto, la placa está en equilibrio estático, sometida únicamente a las acciones externas de contorno y sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98137</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98137"/>
				<updated>2025-12-04T10:14:17Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: Se ha deshecho la revisión 98113 de Manuel Riesgo (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas, calculadas como la divergencia del tensor de tensiones ($\mathbf{f} = -\nabla \cdot \boldsymbol{\sigma}$), representan las acciones distribuidas en el volumen del material. Dado que los resultados obtenidos son del orden de $10^{-16}$, lo cual constituye un cero computacional, se confirma la ausencia de fuerzas de cuerpo físicas. Por tanto, la placa se encuentra en estricto equilibrio estático, respondiendo únicamente a las cargas externas de contorno sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98133</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98133"/>
				<updated>2025-12-04T10:13:42Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: Se ha deshecho la revisión 98124 de Manuel Riesgo (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas, calculadas mediante la divergencia del tensor de tensiones ($\vec{F} = -\nabla \cdot \sigma$), representan las acciones distribuidas en la totalidad del volumen del material.En el análisis numérico, los valores resultantes del orden de $10^{-16}$ constituyen un cero computacional, lo que confirma la ausencia de fuerzas de cuerpo físicas reales. Por consiguiente, se verifica que la placa se encuentra en equilibrio estático, sometida únicamente a las acciones externas de contorno y sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98124</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98124"/>
				<updated>2025-12-04T10:11:42Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Campo de Fuerzas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones distribuidas en la totalidad del volumen del material. Se calculan mediante la divergencia del tensor de tensiones:&lt;br /&gt;
&lt;br /&gt;
F = -∇ · σ&lt;br /&gt;
&lt;br /&gt;
En el análisis numérico, los valores resultantes del orden de 10⁻¹⁶ constituyen un cero computacional, lo que confirma la ausencia de fuerzas de cuerpo físicas reales. Por consiguiente, se verifica que la placa se encuentra en equilibrio estático, sometida únicamente a las acciones externas de contorno y sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98113</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98113"/>
				<updated>2025-12-04T10:10:29Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Campo de Fuerzas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas, calculadas mediante la divergencia del tensor de tensiones ($\vec{F} = -\nabla \cdot \sigma$), representan las acciones distribuidas en la totalidad del volumen del material.En el análisis numérico, los valores resultantes del orden de $10^{-16}$ constituyen un cero computacional, lo que confirma la ausencia de fuerzas de cuerpo físicas reales. Por consiguiente, se verifica que la placa se encuentra en equilibrio estático, sometida únicamente a las acciones externas de contorno y sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98103</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98103"/>
				<updated>2025-12-04T10:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: Se ha deshecho la revisión 98086 de Manuel Riesgo (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas, calculadas como la divergencia del tensor de tensiones ($\mathbf{f} = -\nabla \cdot \boldsymbol{\sigma}$), representan las acciones distribuidas en el volumen del material. Dado que los resultados obtenidos son del orden de $10^{-16}$, lo cual constituye un cero computacional, se confirma la ausencia de fuerzas de cuerpo físicas. Por tanto, la placa se encuentra en estricto equilibrio estático, respondiendo únicamente a las cargas externas de contorno sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98086</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98086"/>
				<updated>2025-12-04T10:05:45Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Campo de Fuerzas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas, calculadas como la divergencia del tensor de tensiones (\mathbf{f} = -\nabla \cdot \boldsymbol{\sigma}), representan las acciones distribuidas en el volumen del material. Dado que los resultados obtenidos son del orden de 10^{-16}, lo cual constituye un cero computacional, se confirma la ausencia de fuerzas de cuerpo físicas. Por tanto, la placa se encuentra en estricto equilibrio estático, respondiendo únicamente a las cargas externas de contorno sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98082</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98082"/>
				<updated>2025-12-04T10:05:22Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Campo de Fuerzas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas, calculadas como la divergencia del tensor de tensiones ($\mathbf{f} = -\nabla \cdot \boldsymbol{\sigma}$), representan las acciones distribuidas en el volumen del material. Dado que los resultados obtenidos son del orden de $10^{-16}$, lo cual constituye un cero computacional, se confirma la ausencia de fuerzas de cuerpo físicas. Por tanto, la placa se encuentra en estricto equilibrio estático, respondiendo únicamente a las cargas externas de contorno sin presentar desequilibrios internos.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97983</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97983"/>
				<updated>2025-12-04T09:38:23Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Masa Total */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones externas que actúan sobre el interior del material. Se calculan  mediante la divergencia del tensor de tensiones &amp;lt;math&amp;gt;F = -\nabla \cdot \sigma&amp;lt;/math&amp;gt;. Al ser numéricamente nulo (matlab representa los puntos a pesar de tener magnitudes muy pequeñas de &amp;lt;math&amp;gt;10^{-16}&amp;lt;/math&amp;gt;), la placa se encuentra en equilibrio estático bajo la acción exclusiva de la fuerza externa descrita en apartados anteriores, y no presenta fuerzas internas significativas.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total M de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad d(x,y)=(4-x)|y| sobre el dominio de la placa \mathcal{R}. Físicamente, como la densidad depende de (4-x), la masa se concentra más cerca del empotramiento (x=0) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * (y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97978</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97978"/>
				<updated>2025-12-04T09:36:57Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Masa Total */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones externas que actúan sobre el interior del material. Se calculan  mediante la divergencia del tensor de tensiones &amp;lt;math&amp;gt;F = -\nabla \cdot \sigma&amp;lt;/math&amp;gt;. Al ser numéricamente nulo (matlab representa los puntos a pesar de tener magnitudes muy pequeñas de &amp;lt;math&amp;gt;10^{-16}&amp;lt;/math&amp;gt;), la placa se encuentra en equilibrio estático bajo la acción exclusiva de la fuerza externa descrita en apartados anteriores, y no presenta fuerzas internas significativas.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
La masa total $M$ de la placa representa la cantidad de materia acumulada en el sólido y se obtiene integrando la función de densidad $d(x,y)=(4-x)|y|$ sobre el dominio de la placa $\mathcal{R}$. Físicamente, como la densidad depende de $(4-x)$, la masa se concentra más cerca del empotramiento ($x=0$) y disminuye hacia el extremo libre.&lt;br /&gt;
&lt;br /&gt;
La operación exacta a resolver es la siguiente integral doble:&lt;br /&gt;
:&amp;lt;math&amp;gt;M = \iint_{\mathcal{R}} d(x,y) \, dA = \int_{0}^{4} \int_{x/8}^{2-x/2} (4-x)y \, dy \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado analítico exacto de esta integral es &amp;lt;math&amp;gt;M = \frac{48}{5} = \mathbf{9.6}&amp;lt;/math&amp;gt; unidades de masa. A continuación, el código realiza la aproximación numérica de este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * |y|&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)|y|');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97960</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97960"/>
				<updated>2025-12-04T09:31:31Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Masa Total */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones externas que actúan sobre el interior del material. Se calculan  mediante la divergencia del tensor de tensiones &amp;lt;math&amp;gt;F = -\nabla \cdot \sigma&amp;lt;/math&amp;gt;. Al ser numéricamente nulo (matlab representa los puntos a pesar de tener magnitudes muy pequeñas de &amp;lt;math&amp;gt;10^{-16}&amp;lt;/math&amp;gt;), la placa se encuentra en equilibrio estático bajo la acción exclusiva de la fuerza externa descrita en apartados anteriores, y no presenta fuerzas internas significativas.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * |y|&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)|y|');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97959</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97959"/>
				<updated>2025-12-04T09:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: Se ha deshecho la revisión 97949 de Manuel Riesgo (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones externas que actúan sobre el interior del material. Se calculan  mediante la divergencia del tensor de tensiones &amp;lt;math&amp;gt;F = -\nabla \cdot \sigma&amp;lt;/math&amp;gt;. Al ser numéricamente nulo (matlab representa los puntos a pesar de tener magnitudes muy pequeñas de &amp;lt;math&amp;gt;10^{-16}&amp;lt;/math&amp;gt;), la placa se encuentra en equilibrio estático bajo la acción exclusiva de la fuerza externa descrita en apartados anteriores, y no presenta fuerzas internas significativas.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada d(x, y) = (4 - x)*(y)&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)(y)');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97949</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97949"/>
				<updated>2025-12-04T09:29:09Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Masa Total */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones externas que actúan sobre el interior del material. Se calculan  mediante la divergencia del tensor de tensiones &amp;lt;math&amp;gt;F = -\nabla \cdot \sigma&amp;lt;/math&amp;gt;. Al ser numéricamente nulo (matlab representa los puntos a pesar de tener magnitudes muy pequeñas de &amp;lt;math&amp;gt;10^{-16}&amp;lt;/math&amp;gt;), la placa se encuentra en equilibrio estático bajo la acción exclusiva de la fuerza externa descrita en apartados anteriores, y no presenta fuerzas internas significativas.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
%% Apartado 13: Calculo de la Masa Total y Visualizacion de Densidad&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definicion de la Region y Mallado Fino&lt;br /&gt;
h = 0.01; % Paso para la aproximacion numerica&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definicion de la Placa (Region R)&lt;br /&gt;
% g(x) = 2 - x/2 (GEOMETRIA CORREGIDA)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definicion de la Densidad d(x,y) = (4 - x) * |y|&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0; &lt;br /&gt;
&lt;br /&gt;
% 4. Calculo de la Masa (Integral Numerica)&lt;br /&gt;
dA = h * h; % Area de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('Masa Total Calculada (Aprox. Num.): M = %.4f\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teorico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Visualizacion de la Densidad (Mapa 3D)&lt;br /&gt;
figure;&lt;br /&gt;
step_plot = 10; % Reducir resolucion para grafica 3D&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
     Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
     Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad d(x,y)');&lt;br /&gt;
title('Distribucion de Densidad d(x,y) = (4-x)|y|');&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=96255</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=96255"/>
				<updated>2025-12-03T12:31:37Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Masa Total */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
Una '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|600px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
El '''rotacional''' es un operador que indica la rotación local de cada punto de la placa. Este es igual a &amp;lt;math&amp;gt;|\nabla \times u|&amp;lt;/math&amp;gt;. Realizando los cálculos, queda que es &amp;lt;math&amp;gt;|\nabla \times u| = 0.15x&amp;lt;/math&amp;gt;. Esto indica que el '''rotacional''' crece '''linealmente'''a lo largo de la coordenada x, siendo '''máximo''' en el punto 4 y '''nulo''' en 0.&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); &lt;br /&gt;
axis tight; &lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
El tensor deformaciones describe las deformaciones de la placa. Su diagonal mide las deformaciones a tracción o a compresión, mientras que las que están fuera de la diagonal miden las deformaciones de cizalladura. &lt;br /&gt;
[[Archivo:Manu_rot.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
Las tensiones tangenciales son fuerzas internas paralelas a las caras del material que provocan la cizalladura. A diferencia de las tensiones normales que estiran el material, estas tensiones provocan el deslizamiento entre capas adyacentes. En esta placa plana, la tensión tangencial es nula en el empotramiento (lado izquierdo) y máxima en el extremo derecho y ocurre solo en el plano &amp;lt;math&amp;gt;\sigma_{xy} = -\frac{x}{20} \quad (\text{para } \mu = 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechas azules&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); &lt;br /&gt;
axis equal; &lt;br /&gt;
grid on; &lt;br /&gt;
&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
La tensión de Von Mises es una magnitud escalar que indica el estado tensional de cada punto de un sólido. En nuestro caso, muestra las tensiones en el área de la placa plana. Su utilidad reside en su capacidad de determinar si la pieza que estudiamos va a romperse, y dónde lo va ha hacer. Para esto, comparamos el valor de la tensión de Von Mises con el del límite elástico del material.&lt;br /&gt;
La interpretación física de esta tensión se basa en la Teoría de la Energía de Distorsión, la cual afirma que los materiales dúctiles fallan cuando se distorsionan (cambian de forma). Para calcular la tensión, hemos usado la siguiente fórmula: &amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\frac{(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2}{2}}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Las zonas con mayor tensión son las que se encuentran en el extremo superior derecho de la placa. Esto es debido a que las tensiones normales y tangenciales tienen sus valores más altos en esos puntos. La consecuencia es que la Energía de Distorsión Máxima en dicha esquina es muy elevada. Según el criterio de Von Mises, si la placa fallara, empezarçia a hacerlo desde ese extremo.&lt;br /&gt;
[[Archivo:Von_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises &lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
Las fuerzas volumétricas representan las acciones externas que actúan sobre el interior del material. Se calculan  mediante la divergencia del tensor de tensiones &amp;lt;math&amp;gt;F = -\nabla \cdot \sigma&amp;lt;/math&amp;gt;. Al ser numéricamente nulo (matlab representa los puntos a pesar de tener magnitudes muy pequeñas de &amp;lt;math&amp;gt;10^{-16}&amp;lt;/math&amp;gt;), la placa se encuentra en equilibrio estático bajo la acción exclusiva de la fuerza externa descrita en apartados anteriores, y no presenta fuerzas internas significativas.&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|700px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones &lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Masa Total==&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|400px|thumb]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./2);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * |y|&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 9.6000)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)|y|');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;br /&gt;
Las vigas en voladizo son un tipo de estructura que cuentan con un extremo, sujeto, anclado o empotrado en una pared y el otro libre. En dicho tipo de estructuras se encuentran:&lt;br /&gt;
* Cubiertas &lt;br /&gt;
* Techos salientes&lt;br /&gt;
* Puentes&lt;br /&gt;
* Marquesinas&lt;br /&gt;
Por lo general se usan en aquellas estructuras que requieren un espacio libre sin soportes intermedios.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EstadioVicenteCalderon.jpg|miniaturadeimagen|Cubierta del estadio Vicente Calderón]]&lt;br /&gt;
[[Archivo:Marquesina.jpg|miniaturadeimagen|Cubierta de un aparcamiento]]&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=88635</id>
		<title>Placa Plana (Grupo 20)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=88635"/>
				<updated>2025-11-27T09:04:25Z</updated>
		
		<summary type="html">&lt;p&gt;Manuel Riesgo: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Placa Plana. Grupo 20 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez }}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC25/26]]&lt;br /&gt;
==Introducción==&lt;br /&gt;
ALEX ES UN PUTOOOOOO ALEX ES PUTO ALEXESPUTOALEXESPUTOELEXESPUTOALEXESPUTOALEXESPUTOALEXESPUTOELEXESPUTOALEXESPUTOALEXESPUTOALEXESPUTOELEXESPUTOALEXESPUTOALEXESPUTOALEXESPUTOELEXESPUTOALEXESPUTOUna '''placa plana''' es una superficie en '''dos dimensiones''', que en este caso representa la '''sección longitudinal''' de una '''viga rectangular''' que está en una '''situación de voladizo apoyada sobre la pared izquierda''', y ocupa la región &amp;lt;math&amp;gt;(x, y) \in [0, 4] \times [f(g), g(x)]&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt; Las '''funciones''' &amp;lt;math&amp;gt;f(x) g(x)&amp;lt;/math&amp;gt; vienen definidas como &amp;lt;math&amp;gt;f(x) = \frac{x}{8}, \quad g(x) = 2 - \frac{x}{8}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Esta placa esta sometida a una '''temperatura''' que viene definida por la '''función''' &amp;lt;math&amp;gt;T(x, y) = (1 + (y - 1)^2)(4 - x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Además, los puntos de la placa sufren un '''desplazamiento''' causado por una '''fuerza de magnitud desconocida'''. Este desplazamiento es tal, que partiendo de un '''vector posición genérico''' para cualquier punto de la placa (&amp;lt;math&amp;gt;\vec{r}_0(x, y) = x\vec{i} + y\vec{j}&amp;lt;/math&amp;gt;), al final del mismo el vector que nos sirve para determinar la posición de cualquier punto en la gráfica cambia a este:&amp;lt;math&amp;gt;\vec{r}_d(x, y) = \vec{r}_0(x, y) + \vec{u}(x, y)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para realizar los diferentes cálculos, vamos a suponer que esta '''fuerza''' ha '''desplazado''' los puntos siguiendo el '''campo''': &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Para empezar, vamos a realizar un '''mallado''' de la '''sección longitudinal''' que represente los''' puntos interiores''' del '''sólido'''. Hemos utilizado un '''paso de muestreo''' h=1/10, y establecido los ejes en el '''rectángulo''' acotado por: &amp;lt;math&amp;gt;(x, y) \in [-1; 5] \times [-1; 3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|thumb|700px|]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración&lt;br /&gt;
h = 1/10;&lt;br /&gt;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro&lt;br /&gt;
&lt;br /&gt;
% 2. Generar Coordenadas Paramétricas (usamos estas en vez de x e y para que quede mejor ajustado a la figura)&lt;br /&gt;
u = 0 : h : 4;&lt;br /&gt;
v = 0 : h : 2;&lt;br /&gt;
[U, V] = meshgrid(u, v);&lt;br /&gt;
&lt;br /&gt;
% 3. Transformación Matemática&lt;br /&gt;
% Calculamos los bordes superior e inferior para cada punto X&lt;br /&gt;
y_abajo = U ./ 8;&lt;br /&gt;
y_arriba = 2 - (U ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Interpolamos: calculamos la Y real basada en la altura V&lt;br /&gt;
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)&lt;br /&gt;
&lt;br /&gt;
X = U;&lt;br /&gt;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);&lt;br /&gt;
&lt;br /&gt;
% 4. Visualización&lt;br /&gt;
figure('Color', 'w'); hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar las líneas VERTICALES&lt;br /&gt;
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar las líneas HORIZONTALES&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno &lt;br /&gt;
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo&lt;br /&gt;
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho&lt;br /&gt;
&lt;br /&gt;
% 5. Configuración final&lt;br /&gt;
axis([-1 5 -1 3]); % Zoom/Encuadre exacto&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title('Mallado de la placa plana');&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
Las '''curvas de nivel''', en este caso las '''isotermas''', representan curvas en los cuales el '''valor''' (en este caso temperatura) es '''constante'''. Están representadas por colores según su '''temperatura'''. Las flechas negras representan la '''dirección de máximo crecimiento''' de la temperatura, es decir, el '''gradiente'''. (nota:(falta poner el punto con T max)) i&lt;br /&gt;
[[Archivo:Curvasdemanuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Dominio y Mallado&lt;br /&gt;
h = 0.2; % Paso de muestreo&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Creamos la máscara (1 dentro, 0 fuera)&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la TEMPERATURA T(x,y)&lt;br /&gt;
% T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
&lt;br /&gt;
% Calculamos la temperatura en toda la malla&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Aplicar la Máscara &lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
X_plot = X; Y_plot = Y;&lt;br /&gt;
X_plot(~dentro) = NaN;&lt;br /&gt;
Y_plot(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 5. Cálculo del Gradiente (Nabla T)&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Position', [100 100 800 600]);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) Pintar Curvas de Nivel (Isotermas)&lt;br /&gt;
% Usamos contour para ver las líneas de temperatura constante&lt;br /&gt;
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);&lt;br /&gt;
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');&lt;br /&gt;
colormap('jet');&lt;br /&gt;
&lt;br /&gt;
% B) Pintar Campo Vectorial (Gradiente)&lt;br /&gt;
% quiver dibuja las flechas sobre la superficie&lt;br /&gt;
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el contorno de la placa&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal; &lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('x'); ylabel('y');&lt;br /&gt;
title({'Isotermas y Gradiente \nablaT', ...&lt;br /&gt;
'T(x,y) = (1 + (y-1)^2)(4-x)'});&lt;br /&gt;
colorbar;&lt;br /&gt;
&lt;br /&gt;
%  CÁLCULO DEL MÁXIMO &lt;br /&gt;
[max_temp, indice] = max(T(:));&lt;br /&gt;
[fil, col] = ind2sub(size(T), indice);&lt;br /&gt;
x_max = X(fil, col);&lt;br /&gt;
y_max = Y(fil, col);&lt;br /&gt;
&lt;br /&gt;
fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...&lt;br /&gt;
max_temp, x_max, y_max);&lt;br /&gt;
% Marcamos el punto máximo con una estrella roja&lt;br /&gt;
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
La Ley de Fourier enuncia que el '''calor''' fluye desde el punto más '''caliente''' hacia el más '''frío''', siguiendo el '''sentido opuesto''' del '''gradiente térmico''' y siendo '''proporcional''' a este, como hemos representado en la siguiente gráfica.&lt;br /&gt;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
h = 0.2;&lt;br /&gt;
x = 0 : h : 4;&lt;br /&gt;
y = 0 : h : 2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definir la Geometría &lt;br /&gt;
y_abajo = X ./ 8;&lt;br /&gt;
y_arriba = 2 - (X ./ 8);&lt;br /&gt;
&lt;br /&gt;
% Máscara lógica: determina qué puntos están dentro de la placa&lt;br /&gt;
dentro = (Y &amp;gt;= y_abajo) &amp;amp; (Y &amp;lt;= y_arriba);&lt;br /&gt;
&lt;br /&gt;
% 3. Definir la Temperatura T(x,y)&lt;br /&gt;
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);&lt;br /&gt;
T = T_func(X, Y);&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculos Físicos (Ley de Fourier)&lt;br /&gt;
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas&lt;br /&gt;
[dTdx, dTdy] = gradient(T, h, h);&lt;br /&gt;
&lt;br /&gt;
% B) Calculamos el Flujo de Calor Q&lt;br /&gt;
% Q = -k * nabla T. (Suponiendo k=1) -&amp;gt; Q apunta al frío&lt;br /&gt;
Qx = -dTdx;&lt;br /&gt;
Qy = -dTdy;&lt;br /&gt;
&lt;br /&gt;
% 5. Limpieza de datos (Recortar la figura)&lt;br /&gt;
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.&lt;br /&gt;
% Esto hace que MATLAB no dibuje nada en esas zonas.&lt;br /&gt;
Qx(~dentro) = NaN;&lt;br /&gt;
Qy(~dentro) = NaN;&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 6. Visualización&lt;br /&gt;
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% A) FONDO: Mapa de Calor (contourf)&lt;br /&gt;
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.&lt;br /&gt;
contourf(X, Y, T, 20, 'LineStyle', 'none');&lt;br /&gt;
colormap('jet'); % Paleta de colores: Azul (frío) -&amp;gt; Rojo (caliente)&lt;br /&gt;
&lt;br /&gt;
% Barra de color explicativa&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Temperatura T(x,y)';&lt;br /&gt;
c.Label.FontSize = 10;&lt;br /&gt;
&lt;br /&gt;
% B)El Campo Vectorial Q.&lt;br /&gt;
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujo del contorno.&lt;br /&gt;
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior&lt;br /&gt;
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior&lt;br /&gt;
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo&lt;br /&gt;
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% 7. Configuración Final&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
grid on;&lt;br /&gt;
xlabel('Eje x'); ylabel('Eje y');&lt;br /&gt;
title({'Vector Flujo de Calor', ...&lt;br /&gt;
'El calor fluye desde las capas más calientes hacia las más frías'});&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Punto y dirección de máxima variación térmica ==&lt;br /&gt;
El punto de '''máxima variación térmica''' es aquel en el que el '''gradiente térmico''' es '''máximo'''. Su '''dirección''' es la del '''gradiente''' en ese punto.&lt;br /&gt;
&lt;br /&gt;
En ese punto y en '''sentido contrario''' al '''gradiente''' se encuentra el '''flujo de calor máximo'''.&lt;br /&gt;
[[Archivo:Apartado5manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y la Región&lt;br /&gt;
h = 0.05; % Paso del mallado (puedes ajustarlo a h=0.1 o h=0.01)&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2; % El rango de Y va de 0 a 2 según las funciones f(x) y g(x)&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de los límites de la placa (Enunciado J)&lt;br /&gt;
% f(x) = x/8;&lt;br /&gt;
% g(x) = 2 - x/8;&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara (Ponemos NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de las Derivadas Parciales (Gradiente)&lt;br /&gt;
% Usamos las fórmulas analíticas derivadas de T(x,y)&lt;br /&gt;
DerivadaX = -(1 + (Y - 1).^2);&lt;br /&gt;
DerivadaY = 2 .* (4 - X) .* (Y - 1);&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo del Módulo del Gradiente&lt;br /&gt;
GradienteModulo = sqrt(DerivadaX.^2 + DerivadaY.^2);&lt;br /&gt;
&lt;br /&gt;
% 4. Encontrar el Máximo Global&lt;br /&gt;
% Buscamos el valor máximo ignorando los NaNs&lt;br /&gt;
[MaxGradiente, IndiceLineal] = max(GradienteModulo);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el índice lineal a coordenadas de matriz (fila, columna)&lt;br /&gt;
[fila, col] = ind2sub(size(GradienteModulo), IndiceLineal);&lt;br /&gt;
&lt;br /&gt;
% Obtenemos las coordenadas (x, y) y las componentes del vector en ese punto&lt;br /&gt;
PuntoMax = [X(fila, col), Y(fila, col)];&lt;br /&gt;
DirMax = [DerivadaX(fila, col), DerivadaY(fila, col)];&lt;br /&gt;
&lt;br /&gt;
% Mostramos los resultados en la consola&lt;br /&gt;
fprintf('La variación máxima es: %.4f\n', MaxGradiente);&lt;br /&gt;
fprintf('Ocurre en el punto: (%.2f, %.2f)\n', PuntoMax(1), PuntoMax(2));&lt;br /&gt;
fprintf('Dirección del gradiente (vector): [%.2f, %.2f]\n', DirMax(1), DirMax(2));&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
title('Punto de Máxima Variación de Temperatura');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); &lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa &lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 1.5); % f(x)&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 1.5); % g(x)&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 1.5); % Pared izquierda&lt;br /&gt;
line([4 4], [0.5 1.5], 'Color', 'k', 'LineWidth', 1.5); % Borde derecho&lt;br /&gt;
&lt;br /&gt;
% A) Dibujar el punto rojo&lt;br /&gt;
plot3(PuntoMax(1), PuntoMax(2), 10, 'ro', 'MarkerSize', 10, 'LineWidth', 3, 'MarkerFaceColor', 'r');&lt;br /&gt;
&lt;br /&gt;
% B) Dibujar el vector de dirección en ese punto (Quiver)&lt;br /&gt;
% Normalizamos el vector para que se vea bien en la gráfica&lt;br /&gt;
escala = 0.5;&lt;br /&gt;
quiver(PuntoMax(1), PuntoMax(2), DirMax(1), DirMax(2), ...&lt;br /&gt;
escala, 'r', 'LineWidth', 2, 'MaxHeadSize', 0.5);&lt;br /&gt;
&lt;br /&gt;
text(PuntoMax(1)+0.2, PuntoMax(2), sprintf('Max: %.2f', MaxGradiente));&lt;br /&gt;
&lt;br /&gt;
hold off;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
El '''campo de desplazamientos''' de un '''sólido''' es un '''campo vectorial''' que indica la '''dirección y sentido''' del '''desplazamiento''' de cada uno de los puntos que lo componen mediante '''vectores'''(las flechas rojas). Puede apreciarse que los que más se '''desplazan''' son aquellos que están más cerca del '''punto de aplicación de la fuerza''', mientras los que están más lejos apenas se desplazan.&lt;br /&gt;
[[Archivo:Desplazamiento_manuel.jpg|thumb|800px]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
&lt;br /&gt;
h = 0.1; &lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la región &lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos la máscara )&lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Campo de Desplazamientos (u_x, u_y)&lt;br /&gt;
&lt;br /&gt;
% Primero necesitamos las coordenadas polares de cada punto (rho, theta)&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Definimos la componente escalar u_theta dada por el enunciado&lt;br /&gt;
% u(rho, theta) = -1/20 * rho^2 * cos(theta) * e_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Convertimos el vector de base polar a base cartesiana&lt;br /&gt;
% u_x = -u_theta * sin(theta)&lt;br /&gt;
% u_y = u_theta * cos(theta)&lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 3. Calcular la posición deformada&lt;br /&gt;
&lt;br /&gt;
% Posición final = Posición inicial + Desplazamiento&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica Comparativa &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Deformación de la Placa', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% PLACA ORIGINAL&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
% Usamos mesh con Z=0 para dibujar la 'rejilla' plana&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2); % Vista superior (2D)&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa antes del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% PLACA DEFORMADA &lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', 'b');&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal; grid on;&lt;br /&gt;
title('Placa después del desplazamiento');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Apartado 5 &lt;br /&gt;
&lt;br /&gt;
figure('Name', 'Campo Vectorial de Desplazamientos');&lt;br /&gt;
hold on; axis equal; grid on;&lt;br /&gt;
title('Campo de Desplazamientos');&lt;br /&gt;
&lt;br /&gt;
% Dibujamos contorno original de referencia&lt;br /&gt;
plot(X(:), Y(:), '.k', 'MarkerSize', 1);&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores (quiver)&lt;br /&gt;
quiver(X, Y, Ux, Uy, 0, 'r', 'LineWidth', 1.5);&lt;br /&gt;
&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
xlim([-0.5 4.5]); ylim([-0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
Debido a la '''fuerza''' cuya magnitud desconocemos provoca un '''desplazamiento''' siguiendo el '''campo''' &amp;lt;math&amp;gt;\vec{u}(\rho, \theta) = -\frac{1}{20}\rho^2 \cos \theta \vec{e}_\theta.&amp;lt;/math&amp;gt;, el '''sólido''' se '''desplazara''' siguiendo el mismo. Los '''puntos''' que más se han '''desplazado''' son los que están más cerca del '''punto de aplicación''' de la '''fuerza'''. Se adjuntan las gráficas en las que se aprecia el '''desplazamiento''' sufrido.(nota:no se ve el desplazamiento inferior, habría que ejecutar el código modificando los ejes para poder verlo)&lt;br /&gt;
[[Archivo:Apartado6deformacion.png|thumb|1000px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición de Geometría y Desplazamientos&lt;br /&gt;
h = 0.1; % Paso del mallado&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la Región (&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 2 - X/8&lt;br /&gt;
Condicion = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% Aplicamos máscara &lt;br /&gt;
X(~Condicion) = NaN;&lt;br /&gt;
Y(~Condicion) = NaN;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de Desplazamientos&lt;br /&gt;
% Coordenadas polares necesarias para la fórmula&lt;br /&gt;
Rho = sqrt(X.^2 + Y.^2);&lt;br /&gt;
Theta = atan2(Y, X);&lt;br /&gt;
&lt;br /&gt;
% Valor escalar de u_theta&lt;br /&gt;
U_theta_val = -1/20 .* Rho.^2 .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% Proyección a cartesianas &lt;br /&gt;
Ux = -U_theta_val .* sin(Theta);&lt;br /&gt;
Uy = U_theta_val .* cos(Theta);&lt;br /&gt;
&lt;br /&gt;
% --- Posición Final Deformada ---&lt;br /&gt;
X_final = X + Ux;&lt;br /&gt;
Y_final = Y + Uy;&lt;br /&gt;
&lt;br /&gt;
% 2. Gráfica Comparativa de Sólidos Mallados &lt;br /&gt;
figure('Name', 'Comparación Antes/Después', 'Color', 'w', 'Position', [100, 100, 1000, 500]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 1: Placa Original&lt;br /&gt;
subplot(1, 2, 1);&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
mesh(X, Y, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2); % Fuerza la vista superior 2D&lt;br /&gt;
axis equal; &lt;br /&gt;
grid on;&lt;br /&gt;
box on; &lt;br /&gt;
&lt;br /&gt;
title('Placa antes del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]);&lt;br /&gt;
&lt;br /&gt;
% SUBPLOT 2: Placa Deformada&lt;br /&gt;
subplot(1, 2, 2);&lt;br /&gt;
hold on;&lt;br /&gt;
% Dibujamos la malla usando las coordenadas finales (X_final, Y_final)&lt;br /&gt;
mesh(X_final, Y_final, zeros(size(X)), 'EdgeColor', [0 0.7 0.9], 'FaceColor', 'none');&lt;br /&gt;
&lt;br /&gt;
view(2);&lt;br /&gt;
axis equal;&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
title('Placa después del desplazamiento', 'FontWeight', 'bold');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
axis([-1.5 4.5 0 2.5]); &lt;br /&gt;
&lt;br /&gt;
sgtitle('Visualización del Sólido Mallado bajo Deformación'); % Título&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Divergencia==&lt;br /&gt;
La '''divergencia''' es un '''operador''' que mide la variación de '''volumen'''. En nuestro caso, mide la variación del '''área''' de la '''placa plana'''. &lt;br /&gt;
&amp;lt;br&amp;gt;La leyenda del '''gráfico''' pone la zona de '''mayor expansión''' en '''colores cálidos''', mientras que la zona que se '''comprime''' está en colores fríos. &lt;br /&gt;
&amp;lt;br&amp;gt;Se puede apreciar como la parte superior se '''tracciona''' y aumenta su '''área''' debido a la '''fuerza''', mientras que la '''inferior''' se '''comprime'''.&lt;br /&gt;
[[Archivo:Divergencia_manuel.jpg|thumb|900px]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo Analítico de la Divergencia&lt;br /&gt;
Divergencia = Y ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Encontrar Máximos, Mínimos y Nulos analíticamente en el mallado&lt;br /&gt;
max_val = max(Divergencia(:));&lt;br /&gt;
min_val = min(Divergencia(:));&lt;br /&gt;
&lt;br /&gt;
% Encontramos los índices donde ocurren&lt;br /&gt;
[f_max, c_max] = find(Divergencia == max_val);&lt;br /&gt;
[f_min, c_min] = find(Divergencia == min_val);&lt;br /&gt;
&lt;br /&gt;
% Puntos (x,y) correspondientes&lt;br /&gt;
PuntosMax = [X(f_max), Y(f_max)];&lt;br /&gt;
PuntosMin = [X(f_min), Y(f_min)];&lt;br /&gt;
&lt;br /&gt;
% 4. Mostrar resultados en consola&lt;br /&gt;
fprintf('--- Resultados del Análisis de Divergencia ---\n');&lt;br /&gt;
fprintf('Divergencia Máxima: %.4f (Ocurre en y máximas)\n', max_val);&lt;br /&gt;
fprintf('Divergencia Mínima: %.4f (Ocurre en y = 0)\n', min_val);&lt;br /&gt;
fprintf('La divergencia es nula solo donde y = 0.\n');&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica de la Divergencia&lt;br /&gt;
figure('Name', 'Divergencia del Desplazamiento', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos el mapa de colores&lt;br /&gt;
contourf(X, Y, Divergencia, 20, 'LineColor', 'none');&lt;br /&gt;
colormap(jet); % Mapa de colores clásico (Azul=Bajo, Rojo=Alto)&lt;br /&gt;
colorbar; % Barra lateral para saber qué valor es cada color&lt;br /&gt;
&lt;br /&gt;
% Dibujar contorno de la placa para que quede bonito&lt;br /&gt;
x_borde = 0:0.1:4;&lt;br /&gt;
plot(x_borde, x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
plot(x_borde, 2 - x_borde/8, 'k', 'LineWidth', 2);&lt;br /&gt;
line([0 0], [0 2], 'Color', 'k', 'LineWidth', 2);&lt;br /&gt;
&lt;br /&gt;
% Señalar Máximo y Mínimo&lt;br /&gt;
plot(PuntosMax(:,1), PuntosMax(:,2), 'rp', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); % Estrella roja&lt;br /&gt;
plot(PuntosMin(:,1), PuntosMin(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b'); % Círculo azul&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y títulos&lt;br /&gt;
title('Cambio de Volumen Local');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal;&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
&lt;br /&gt;
% Leyenda manual para entender los puntos&lt;br /&gt;
legend('Divergencia (Color)', 'Bordes', '', '', 'Máxima Expansión', 'Mínima/Nula', ...&lt;br /&gt;
'Location', 'eastoutside');&lt;br /&gt;
&lt;br /&gt;
hold off; }}&lt;br /&gt;
&lt;br /&gt;
==Rotacional==&lt;br /&gt;
[[Archivo:Rotacionaldemanuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado y Región&lt;br /&gt;
h = 0.05;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo del Rotacional (Magnitud)&lt;br /&gt;
% |Rot(u)| = 0.15 * x&lt;br /&gt;
Rotacional = 0.15 .* X;&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica en 3D (Surface Plot)&lt;br /&gt;
figure('Name', 'Rotacional en 3D', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% 'surf' crea la superficie 3D. X e Y son la base, Rotacional es la altura.&lt;br /&gt;
s = surf(X, Y, Rotacional);&lt;br /&gt;
&lt;br /&gt;
% --- Estética de la gráfica 3D ---&lt;br /&gt;
shading interp; % Suaviza los colores (quita las líneas de la cuadrícula)&lt;br /&gt;
colormap(jet); % Mapa de colores (Azul -&amp;gt; Rojo)&lt;br /&gt;
alpha(0.9); % Un poco de transparencia (opcional)&lt;br /&gt;
&lt;br /&gt;
view(3); % Pone la vista en perspectiva 3D automáticamente&lt;br /&gt;
axis tight; % Ajusta los ejes al contenido&lt;br /&gt;
grid on;&lt;br /&gt;
box on;&lt;br /&gt;
&lt;br /&gt;
% Añadir barra de colores&lt;br /&gt;
c = colorbar;&lt;br /&gt;
c.Label.String = 'Magnitud |\nabla \times u|';&lt;br /&gt;
c.Label.FontSize = 11;&lt;br /&gt;
&lt;br /&gt;
% Etiquetas y Título&lt;br /&gt;
title('Magnitud del Rotacional (Vista 3D)', 'FontSize', 12);&lt;br /&gt;
xlabel('Eje X (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
ylabel('Eje Y (Posición)', 'FontWeight', 'bold');&lt;br /&gt;
zlabel('Valor del Rotacional', 'FontWeight', 'bold');&lt;br /&gt;
&lt;br /&gt;
% Añadir una luz para que se vea el volumen mejor&lt;br /&gt;
camlight left;&lt;br /&gt;
lighting phong;&lt;br /&gt;
&lt;br /&gt;
% Opcional: Dibujar la proyección (&amp;quot;sombra&amp;quot;) en el suelo para referencia&lt;br /&gt;
hold on;&lt;br /&gt;
contour(X, Y, Rotacional, 15, 'z', 'offset', 0, 'LineWidth', 1);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
[[Archivo:Manu_rot.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 9 (Versión 2D): Tensiones Normales&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición de Geometría y Material&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Placa J (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN; Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de Componentes&lt;br /&gt;
% Deformaciones y Divergencia&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
% Eps_zz es 0&lt;br /&gt;
&lt;br /&gt;
% Tensiones Normales (Sigma = lambda*Div*I + 2*mu*Eps)&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % y/20&lt;br /&gt;
Sig_zz = lambda .* Div_u; % y/20 (Por efecto Poisson)&lt;br /&gt;
Sig_xy = 2 .* mu .* (-X./40); % -x/20 (Cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Gráfica 2D (Subplot)&lt;br /&gt;
figure('Name', 'Apartado 9: Tensiones Normales (2D)', 'Color', 'w', 'Position', [100, 100, 1200, 400]);&lt;br /&gt;
&lt;br /&gt;
% Sigma XX&lt;br /&gt;
subplot(1, 3, 1);&lt;br /&gt;
contourf(X, Y, Sig_xx, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{xx} (Eje i)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma YY&lt;br /&gt;
subplot(1, 3, 2);&lt;br /&gt;
contourf(X, Y, Sig_yy, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{yy} (Eje j)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
% Sigma ZZ&lt;br /&gt;
subplot(1, 3, 3);&lt;br /&gt;
contourf(X, Y, Sig_zz, 20, 'LineColor', 'none');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]); colorbar;&lt;br /&gt;
title('\sigma_{zz} (Eje k)'); xlabel('X'); ylabel('Y');&lt;br /&gt;
&lt;br /&gt;
sgtitle('Componentes Normales del Tensor de Tensiones');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
[[Archivo:Tensionesdemanuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.15; % Un paso un poco más grande para que las flechas no se amontonen&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa &lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
% 2. Cálculo de la Tensión Tangencial (Sigma_xy)&lt;br /&gt;
% Recordamos del apdo 9: Sig_xy = 2*mu*eps_xy = 2*1*(-x/40) = -x/20&lt;br /&gt;
Sig_xy = -X ./ 20;&lt;br /&gt;
&lt;br /&gt;
% 3. Definición del Vector Tangencial&lt;br /&gt;
% En la cara vertical (normal i), la tangencial es vertical (j).&lt;br /&gt;
% El vector es: (0, Sigma_xy)&lt;br /&gt;
U_vec = zeros(size(X)); % Componente X es 0&lt;br /&gt;
V_vec = Sig_xy; % Componente Y es el valor de la tensión&lt;br /&gt;
&lt;br /&gt;
% 4. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 10: Vector Tensión Tangencial', 'Color', 'w');&lt;br /&gt;
&lt;br /&gt;
% Usamos quiver para dibujar las flechitas azules&lt;br /&gt;
% quiver(x, y, u, v)&lt;br /&gt;
quiver(X, Y, U_vec, V_vec, 'b', 'LineWidth', 1);&lt;br /&gt;
&lt;br /&gt;
% Configuración de la vista&lt;br /&gt;
view(2); % Vista 2D superior&lt;br /&gt;
axis equal; % Ejes proporcionales&lt;br /&gt;
grid on; % Cuadrícula de fondo&lt;br /&gt;
&lt;br /&gt;
% Títulos y Etiquetas&lt;br /&gt;
title('Tensiones tangenciales (Plano ortogonal a i)');&lt;br /&gt;
xlabel('Eje X');&lt;br /&gt;
ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Ajuste de límites para ver bien la placa&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
[[Archivo:Von_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 11: Tensión de Von Mises (Usando autovalores 'eig')&lt;br /&gt;
% Inicializamos la matriz de resultados con NaNs&lt;br /&gt;
VonMises_Calc = NaN(size(X));&lt;br /&gt;
PuntoMax_VM = [-1, -1];&lt;br /&gt;
Max_VM_Val = -1;&lt;br /&gt;
&lt;br /&gt;
% Bucle para recorrer cada punto del mallado&lt;br /&gt;
[filas, cols] = size(X);&lt;br /&gt;
for f = 1:filas&lt;br /&gt;
for c = 1:cols&lt;br /&gt;
% Si el punto está dentro de la placa (no es NaN)&lt;br /&gt;
if ~isnan(X(f,c))&lt;br /&gt;
% 1. Construir el tensor de tensiones en ese punto (3x3)&lt;br /&gt;
s_xx = Sig_xx(f,c);&lt;br /&gt;
s_yy = Sig_yy(f,c);&lt;br /&gt;
s_zz = Sig_zz(f,c);&lt;br /&gt;
s_xy = Sig_xy(f,c);&lt;br /&gt;
&lt;br /&gt;
Tensor = [s_xx, s_xy, 0;&lt;br /&gt;
s_xy, s_yy, 0;&lt;br /&gt;
0, 0, s_zz];&lt;br /&gt;
&lt;br /&gt;
% 2. Calcular autovalores (Tensiones Principales)&lt;br /&gt;
sig_principales = eig(Tensor);&lt;br /&gt;
s1 = sig_principales(1);&lt;br /&gt;
s2 = sig_principales(2);&lt;br /&gt;
s3 = sig_principales(3);&lt;br /&gt;
&lt;br /&gt;
% 3. Fórmula de Von Mises dada en el enunciado&lt;br /&gt;
vm = sqrt( ((s1-s2)^2 + (s2-s3)^2 + (s3-s1)^2) / 2 );&lt;br /&gt;
VonMises_Calc(f,c) = vm;&lt;br /&gt;
&lt;br /&gt;
% Guardar máximo para señalarlo después&lt;br /&gt;
if vm &amp;gt; Max_VM_Val&lt;br /&gt;
Max_VM_Val = vm;&lt;br /&gt;
PuntoMax_VM = [X(f,c), Y(f,c)];&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
figure('Name', 'Apartado 11: Von Mises con Autovalores', 'Color', 'w');&lt;br /&gt;
contourf(X, Y, VonMises_Calc, 30, 'LineColor', 'none');&lt;br /&gt;
colormap(hot); % 'hot' suele usarse para mapas de &amp;quot;calor/tensión&amp;quot;&lt;br /&gt;
c = colorbar; c.Label.String = 'Tensión Von Mises (Pa)';&lt;br /&gt;
&lt;br /&gt;
hold on;&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
title('Tensión de Von Mises (Cálculo mediante Autovalores)');&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
&lt;br /&gt;
% Señalar el punto máximo&lt;br /&gt;
plot(PuntoMax_VM(1), PuntoMax_VM(2), 'bp', 'MarkerSize', 14, 'MarkerFaceColor', 'b'); % Estrella azul&lt;br /&gt;
text(PuntoMax_VM(1)-1, PuntoMax_VM(2), sprintf('Máx: %.4f en (%.1f, %.1f)', Max_VM_Val, PuntoMax_VM), 'Color', 'b', 'FontWeight', 'bold');&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
[[Archivo:Fuerzas_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 12: Campo de Fuerzas Volumétricas (F = -div Sigma)&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
h = 0.1;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Definición de la placa (Trapecio)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&lt;br /&gt;
lambda = 1; mu = 1;&lt;br /&gt;
&lt;br /&gt;
% 2. Recalculamos las Tensiones (Necesarias para derivar)&lt;br /&gt;
% Usamos las fórmulas analíticas que ya conocemos&lt;br /&gt;
Div_u = Y ./ 20;&lt;br /&gt;
Eps_xx = Y ./ 20;&lt;br /&gt;
Eps_yy = zeros(size(X));&lt;br /&gt;
&lt;br /&gt;
Sig_xx = lambda .* Div_u + 2 .* mu .* Eps_xx; % = 3y/20&lt;br /&gt;
Sig_yy = lambda .* Div_u + 2 .* mu .* Eps_yy; % = y/20&lt;br /&gt;
Sig_xy = -X ./ 20; % = -x/20 (cizalladura)&lt;br /&gt;
&lt;br /&gt;
% 3. Cálculo de la Divergencia del Tensor (Numéricamente)&lt;br /&gt;
% F = -div(sigma)&lt;br /&gt;
% Fx = -( d(Sxx)/dx + d(Sxy)/dy )&lt;br /&gt;
% Fy = -( d(Sxy)/dx + d(Syy)/dy )&lt;br /&gt;
&lt;br /&gt;
% La función gradient calcula derivadas centrales.&lt;br /&gt;
% Sintaxis: gradient(Matriz, paso_x, paso_y)&lt;br /&gt;
[dSxx_dx, dSxx_dy] = gradient(Sig_xx, h, h);&lt;br /&gt;
[dSxy_dx, dSxy_dy] = gradient(Sig_xy, h, h);&lt;br /&gt;
[dSyy_dx, dSyy_dy] = gradient(Sig_yy, h, h);&lt;br /&gt;
&lt;br /&gt;
Fx = - (dSxx_dx + dSxy_dy);&lt;br /&gt;
Fy = - (dSxy_dx + dSyy_dy);&lt;br /&gt;
&lt;br /&gt;
% 4. Comprobación de Magnitud (Para ver si es cero)&lt;br /&gt;
MagnitudF = sqrt(Fx.^2 + Fy.^2);&lt;br /&gt;
max_F = max(MagnitudF(:));&lt;br /&gt;
&lt;br /&gt;
fprintf('--- Resultado Apartado 12 ---\n');&lt;br /&gt;
fprintf('La fuerza máxima calculada es: %e\n', max_F);&lt;br /&gt;
&lt;br /&gt;
if max_F &amp;lt; 1e-10&lt;br /&gt;
fprintf('CONCLUSIÓN: La fuerza es prácticamente NULA (Equilibrio).\n');&lt;br /&gt;
subtitle_text = 'Fuerza \approx 0 (Equilibrio Estático)';&lt;br /&gt;
else&lt;br /&gt;
subtitle_text = 'Existen fuerzas volumétricas';&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% 5. Gráfica&lt;br /&gt;
figure('Name', 'Apartado 12: Campo de Fuerzas', 'Color', 'w');&lt;br /&gt;
hold on;&lt;br /&gt;
&lt;br /&gt;
% Dibujamos los vectores.&lt;br /&gt;
% Como son casi cero, MATLAB pintará puntos. Para ver &amp;quot;algo&amp;quot;,&lt;br /&gt;
% a veces se normalizan, pero lo correcto es mostrar que no hay fuerza.&lt;br /&gt;
quiver(X, Y, Fx, Fy, 'r');&lt;br /&gt;
&lt;br /&gt;
% Dibujar bordes&lt;br /&gt;
plot([0 4 4 0 0], [0 0.5 1.5 2 0], 'k--', 'LineWidth', 0.5); % Caja aproximada&lt;br /&gt;
&lt;br /&gt;
title('Campo de Fuerzas Volumétricas');&lt;br /&gt;
subtitle(subtitle_text);&lt;br /&gt;
xlabel('Eje X'); ylabel('Eje Y');&lt;br /&gt;
axis equal; axis([-0.5 4.5 -0.5 2.5]);&lt;br /&gt;
grid on;&lt;br /&gt;
&lt;br /&gt;
% Añadimos una nota en la gráfica explicándolo&lt;br /&gt;
text(1, 1, {'Fuerza Nula', '(puntos indican magnitud ~0)'}, ...&lt;br /&gt;
'Color', 'r', 'FontWeight', 'bold', 'HorizontalAlignment', 'center');&lt;br /&gt;
&lt;br /&gt;
hold off;}}&lt;br /&gt;
&lt;br /&gt;
==Densidad==&lt;br /&gt;
[[Archivo:Manuel_densidad.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Apartado 13: Cálculo de la Masa Total&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% 1. Definición del Mallado&lt;br /&gt;
% Usamos un paso fino (h=0.01) para que la integral sea precisa&lt;br /&gt;
h = 0.01;&lt;br /&gt;
x = 0:h:4;&lt;br /&gt;
y = 0:h:2;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% 2. Definición de la Placa (Región)&lt;br /&gt;
Condition = (Y &amp;gt;= X./8) &amp;amp; (Y &amp;lt;= 2 - X./8);&lt;br /&gt;
&lt;br /&gt;
% 3. Definición de la Densidad&lt;br /&gt;
% Función dada: d(x,y) = (4 - x) * |y|&lt;br /&gt;
Densidad = (4 - X) .* abs(Y);&lt;br /&gt;
&lt;br /&gt;
% Importante: La densidad fuera de la placa es 0&lt;br /&gt;
Densidad(~Condition) = 0;&lt;br /&gt;
&lt;br /&gt;
% 4. Cálculo de la Masa (Integral Numérica)&lt;br /&gt;
% Masa = Suma(Densidad * Area_diferencial)&lt;br /&gt;
dA = h * h; % Área de cada celda de la malla&lt;br /&gt;
Masa_Total = sum(Densidad(:)) * dA;&lt;br /&gt;
&lt;br /&gt;
% 5. Mostrar Resultado&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('RESULTADO APARTADO 13\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
fprintf('Masa Total Calculada: %.4f unidades de masa\n', Masa_Total);&lt;br /&gt;
fprintf('(Valor exacto teórico: 13.3333)\n');&lt;br /&gt;
fprintf('------------------------------------------------\n');&lt;br /&gt;
&lt;br /&gt;
% 6. Gráfica de la Densidad (Opcional, para visualizar)&lt;br /&gt;
figure('Name', 'Apartado 13: Distribución de Masa', 'Color', 'w');&lt;br /&gt;
% Bajamos resolución solo para pintar rápido&lt;br /&gt;
step_plot = 10;&lt;br /&gt;
surf(X(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Y(1:step_plot:end, 1:step_plot:end), ...&lt;br /&gt;
Densidad(1:step_plot:end, 1:step_plot:end));&lt;br /&gt;
&lt;br /&gt;
shading interp; colormap(parula); colorbar;&lt;br /&gt;
view(3); grid on; axis tight;&lt;br /&gt;
title('Distribución de Densidad d(x,y) = (4-x)|y|');&lt;br /&gt;
xlabel('X'); ylabel('Y'); zlabel('Densidad');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Manuel Riesgo</name></author>	</entry>

	</feed>