<?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=Gloria+Garc%C3%ADa</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=Gloria+Garc%C3%ADa"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Gloria_Garc%C3%ADa"/>
		<updated>2026-04-24T23:59:58Z</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=98246</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=98246"/>
				<updated>2025-12-04T10:40:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Tensor deformaciones */&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:Desplazamientomanuel.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|800px|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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=98239</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=98239"/>
				<updated>2025-12-04T10:39:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Desplazamiento del sólido */&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:Desplazamientomanuel.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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Desplazamientomanuel.png&amp;diff=98222</id>
		<title>Archivo:Desplazamientomanuel.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Desplazamientomanuel.png&amp;diff=98222"/>
				<updated>2025-12-04T10:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97982</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=97982"/>
				<updated>2025-12-04T09:37:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* 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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=97940</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=97940"/>
				<updated>2025-12-04T09:26:52Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* 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;
% 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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89940</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=89940"/>
				<updated>2025-11-27T18:41:03Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Densidad */&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;
[[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;
% |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|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;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&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|700px|thumb]]&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|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 (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|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./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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89939</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=89939"/>
				<updated>2025-11-27T18:40:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Densidad */&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;
[[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;
% |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|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;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&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|700px|thumb]]&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|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 (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|500px|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./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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89936</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=89936"/>
				<updated>2025-11-27T18:40:43Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Densidad */&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;
[[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;
% |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|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;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&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|700px|thumb]]&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|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 (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|600px|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./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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89935</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=89935"/>
				<updated>2025-11-27T18:40:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* 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;
[[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;
% |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|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;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&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|700px|thumb]]&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|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 (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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89934</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=89934"/>
				<updated>2025-11-27T18:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Tensión de Von Mises */&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;
[[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;
% |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|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;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&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|700px|thumb]]&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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89933</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=89933"/>
				<updated>2025-11-27T18:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Tensiones tangenciales */&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;
[[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;
% |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|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;
[[Archivo:Tensionesdemanuel.png|600px|thumb]]&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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89932</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=89932"/>
				<updated>2025-11-27T18:39:38Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Tensor deformaciones */&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;
[[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;
% |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|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;
[[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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89931</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=89931"/>
				<updated>2025-11-27T18:39:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Tensor deformaciones */&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;
[[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;
% |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|500px|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;
[[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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89930</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=89930"/>
				<updated>2025-11-27T18:39:16Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Rotacional */&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;
[[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;
% |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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89929</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=89929"/>
				<updated>2025-11-27T18:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Divergencia */&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;
[[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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89928</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=89928"/>
				<updated>2025-11-27T18:38:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Campo de desplazamientos */&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|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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89927</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=89927"/>
				<updated>2025-11-27T18:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Punto y dirección de máxima variación térmica */&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|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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89926</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=89926"/>
				<updated>2025-11-27T18:38:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Ley de Fourier */&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|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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=89925</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=89925"/>
				<updated>2025-11-27T18:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Curvas de nivel */&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|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>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87713</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=87713"/>
				<updated>2025-11-26T10:00:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Tensiones tangenciales */&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 2 dimensiones, que en este caso representa la sección longitudinal de una viga voladiza 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;. 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;
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;
Además,&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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 de máxima temperatura==&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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
[[Archivo:Desplazamiento_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%% Apartados 5 y 6: Campo de Desplazamientos y Deformación&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% 1. Definición del Mallado (Igual que antes)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
h = 0.1; % Paso un poco más fino para que la malla se vea bonita&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 (Placa J)&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 (NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&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 (Subplot como en tu ejemplo)&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;
% Extra: Apartado 5 (Vectores de desplazamiento - Quiver)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% Si necesitas mostrar las flechitas de movimiento en la placa original:&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;
% Ajustamos 'scale' para que las flechas no sean gigantes visualmente&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;
[[Archivo:Apartado6deformacion.png|miniaturadeimagen]]&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 (Placa)&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 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 máscara (NaN fuera de la placa para no dibujar ahí)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = 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 (Crucial: u_x = -u_theta*sin, u_y = u_theta*cos)&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 (Como en tu ejemplo)&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;
% Usamos mesh. Z=zeros(size(X)) es para que sea un plano 2D.&lt;br /&gt;
% 'EdgeColor', 'c' pone las líneas en color cian&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; % Mantiene la proporción real de los ejes&lt;br /&gt;
grid on;&lt;br /&gt;
box on; % Añade el marco completo&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]); % Ajuste de ejes similar a tu ejemplo&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]); % Mismos ejes para poder comparar visualmente&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;
[[Archivo:Divergencia_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
%% Apartado 7: Divergencia del Campo de Desplazamientos&lt;br /&gt;
clc; clear; close all;&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 (Enunciado J)&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;
% Como demostramos analíticamente: Div(u) = y / 20&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;
% Buscamos el valor máximo y mínimo en la matriz ignorando NaNs&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 (contourf rellena de color)&lt;br /&gt;
% Usamos 20 niveles para que se vea suave el gradiente&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;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Tensionesdemanuel.png&amp;diff=87705</id>
		<title>Archivo:Tensionesdemanuel.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Tensionesdemanuel.png&amp;diff=87705"/>
				<updated>2025-11-26T09:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87680</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=87680"/>
				<updated>2025-11-26T09:49:00Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Rotacional */&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 2 dimensiones, que en este caso representa la sección longitudinal de una viga voladiza 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;. 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;
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;
Además,&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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 de máxima temperatura==&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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
[[Archivo:Desplazamiento_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%% Apartados 5 y 6: Campo de Desplazamientos y Deformación&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% 1. Definición del Mallado (Igual que antes)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
h = 0.1; % Paso un poco más fino para que la malla se vea bonita&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 (Placa J)&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 (NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&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 (Subplot como en tu ejemplo)&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;
% Extra: Apartado 5 (Vectores de desplazamiento - Quiver)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% Si necesitas mostrar las flechitas de movimiento en la placa original:&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;
% Ajustamos 'scale' para que las flechas no sean gigantes visualmente&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;
[[Archivo:Apartado6deformacion.png|miniaturadeimagen]]&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 (Placa)&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 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 máscara (NaN fuera de la placa para no dibujar ahí)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = 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 (Crucial: u_x = -u_theta*sin, u_y = u_theta*cos)&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 (Como en tu ejemplo)&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;
% Usamos mesh. Z=zeros(size(X)) es para que sea un plano 2D.&lt;br /&gt;
% 'EdgeColor', 'c' pone las líneas en color cian&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; % Mantiene la proporción real de los ejes&lt;br /&gt;
grid on;&lt;br /&gt;
box on; % Añade el marco completo&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]); % Ajuste de ejes similar a tu ejemplo&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]); % Mismos ejes para poder comparar visualmente&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;
[[Archivo:Divergencia_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
%% Apartado 7: Divergencia del Campo de Desplazamientos&lt;br /&gt;
clc; clear; close all;&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 (Enunciado J)&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;
% Como demostramos analíticamente: Div(u) = y / 20&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;
% Buscamos el valor máximo y mínimo en la matriz ignorando NaNs&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 (contourf rellena de color)&lt;br /&gt;
% Usamos 20 niveles para que se vea suave el gradiente&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;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Rotacionaldemanuel.png&amp;diff=87670</id>
		<title>Archivo:Rotacionaldemanuel.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Rotacionaldemanuel.png&amp;diff=87670"/>
				<updated>2025-11-26T09:45:50Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87645</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=87645"/>
				<updated>2025-11-26T09:32:41Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Desplazamiento del sólido */&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 2 dimensiones, que en este caso representa la sección longitudinal de una viga voladiza 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;. 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;
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;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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 de máxima temperatura==&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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
[[Archivo:Desplazamiento_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%% Apartados 5 y 6: Campo de Desplazamientos y Deformación&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% 1. Definición del Mallado (Igual que antes)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
h = 0.1; % Paso un poco más fino para que la malla se vea bonita&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 (Placa J)&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 (NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&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 (Subplot como en tu ejemplo)&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;
% Extra: Apartado 5 (Vectores de desplazamiento - Quiver)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% Si necesitas mostrar las flechitas de movimiento en la placa original:&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;
% Ajustamos 'scale' para que las flechas no sean gigantes visualmente&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;
[[Archivo:Apartado6deformacion.png|miniaturadeimagen]]&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 (Placa)&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 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 máscara (NaN fuera de la placa para no dibujar ahí)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = 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 (Crucial: u_x = -u_theta*sin, u_y = u_theta*cos)&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 (Como en tu ejemplo)&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;
% Usamos mesh. Z=zeros(size(X)) es para que sea un plano 2D.&lt;br /&gt;
% 'EdgeColor', 'c' pone las líneas en color cian&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; % Mantiene la proporción real de los ejes&lt;br /&gt;
grid on;&lt;br /&gt;
box on; % Añade el marco completo&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]); % Ajuste de ejes similar a tu ejemplo&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]); % Mismos ejes para poder comparar visualmente&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;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87643</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=87643"/>
				<updated>2025-11-26T09:32:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Desplazamiento del sólido */&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 2 dimensiones, que en este caso representa la sección longitudinal de una viga voladiza 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;. 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;
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;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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 de máxima temperatura==&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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
[[Archivo:Desplazamiento_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%% Apartados 5 y 6: Campo de Desplazamientos y Deformación&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% 1. Definición del Mallado (Igual que antes)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
h = 0.1; % Paso un poco más fino para que la malla se vea bonita&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 (Placa J)&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 (NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&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 (Subplot como en tu ejemplo)&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;
% Extra: Apartado 5 (Vectores de desplazamiento - Quiver)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% Si necesitas mostrar las flechitas de movimiento en la placa original:&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;
% Ajustamos 'scale' para que las flechas no sean gigantes visualmente&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;
[[Archivo:Apartado6deformacion|miniaturadeimagen]]&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 (Placa)&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 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 máscara (NaN fuera de la placa para no dibujar ahí)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = 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 (Crucial: u_x = -u_theta*sin, u_y = u_theta*cos)&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 (Como en tu ejemplo)&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;
% Usamos mesh. Z=zeros(size(X)) es para que sea un plano 2D.&lt;br /&gt;
% 'EdgeColor', 'c' pone las líneas en color cian&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; % Mantiene la proporción real de los ejes&lt;br /&gt;
grid on;&lt;br /&gt;
box on; % Añade el marco completo&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]); % Ajuste de ejes similar a tu ejemplo&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]); % Mismos ejes para poder comparar visualmente&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;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87639</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=87639"/>
				<updated>2025-11-26T09:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Desplazamiento del sólido */&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 2 dimensiones, que en este caso representa la sección longitudinal de una viga voladiza 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;. 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;
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;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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 de máxima temperatura==&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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
[[Archivo:Desplazamiento_manuel.jpg|miniaturadeimagen]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%% Apartados 5 y 6: Campo de Desplazamientos y Deformación&lt;br /&gt;
clc; clear; close all;&lt;br /&gt;
&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% 1. Definición del Mallado (Igual que antes)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
h = 0.1; % Paso un poco más fino para que la malla se vea bonita&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 (Placa J)&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 (NaN fuera de la placa)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = NaN;&lt;br /&gt;
&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 (Subplot como en tu ejemplo)&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;
% Extra: Apartado 5 (Vectores de desplazamiento - Quiver)&lt;br /&gt;
% ---------------------------------------------------------&lt;br /&gt;
% Si necesitas mostrar las flechitas de movimiento en la placa original:&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;
% Ajustamos 'scale' para que las flechas no sean gigantes visualmente&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;
[[Archivo:Apartado6deformacion.png|marco]]&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 (Placa)&lt;br /&gt;
% La placa existe si Y &amp;gt;= X/8 Y Y &amp;lt;= 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 máscara (NaN fuera de la placa para no dibujar ahí)&lt;br /&gt;
X(~Condition) = NaN;&lt;br /&gt;
Y(~Condition) = 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 (Crucial: u_x = -u_theta*sin, u_y = u_theta*cos)&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 (Como en tu ejemplo)&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;
% Usamos mesh. Z=zeros(size(X)) es para que sea un plano 2D.&lt;br /&gt;
% 'EdgeColor', 'c' pone las líneas en color cian&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; % Mantiene la proporción real de los ejes&lt;br /&gt;
grid on;&lt;br /&gt;
box on; % Añade el marco completo&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]); % Ajuste de ejes similar a tu ejemplo&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]); % Mismos ejes para poder comparar visualmente&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;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado6deformacion.png&amp;diff=87635</id>
		<title>Archivo:Apartado6deformacion.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado6deformacion.png&amp;diff=87635"/>
				<updated>2025-11-26T09:30:38Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87098</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=87098"/>
				<updated>2025-11-25T12:49:19Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Gradiente Térmico */&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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;
==Gradiente Térmico==&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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado5manuel.png&amp;diff=87097</id>
		<title>Archivo:Apartado5manuel.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Apartado5manuel.png&amp;diff=87097"/>
				<updated>2025-11-25T12:48:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87096</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=87096"/>
				<updated>2025-11-25T12:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Gradiente Térmico */&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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;
==Gradiente Térmico==&lt;br /&gt;
[[Archivo:Manuelcaliente.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 (Señalar con punto rojo)&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]); % Ajuste de visualización&lt;br /&gt;
&lt;br /&gt;
% Dibujar el contorno de la placa (opcional, para referencia visual)&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;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Manuelcaliente.png&amp;diff=87095</id>
		<title>Archivo:Manuelcaliente.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Manuelcaliente.png&amp;diff=87095"/>
				<updated>2025-11-25T12:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87077</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=87077"/>
				<updated>2025-11-25T12:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Ley de Fourier */&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
[[Archivo:Flujo de calor manuel.png|marco]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% 1. Configuración del Mallado&lt;br /&gt;
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio&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 (La placa trapezoidal)&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;
% Fórmula dada: 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;
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) PROTAGONISTA: El Campo Vectorial Q (Flechas)&lt;br /&gt;
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.&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 (Bordes Negros)&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; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)&lt;br /&gt;
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización&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;
==Gradiente Térmico==&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Flujo_de_calor_manuel.png&amp;diff=87076</id>
		<title>Archivo:Flujo de calor manuel.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Flujo_de_calor_manuel.png&amp;diff=87076"/>
				<updated>2025-11-25T12:14:58Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87061</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=87061"/>
				<updated>2025-11-25T11:59:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Curvas de nivel */&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
[[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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
==Gradiente Térmico==&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Curvasdemanuel.png&amp;diff=87058</id>
		<title>Archivo:Curvasdemanuel.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Curvasdemanuel.png&amp;diff=87058"/>
				<updated>2025-11-25T11:58:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87057</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=87057"/>
				<updated>2025-11-25T11:57:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Curvas de nivel */&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
&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 (Tu placa plana trapezoidal)&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 lógica (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;
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)&lt;br /&gt;
% Usamos .^ y .* para operaciones elemento a elemento&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 (Recortar la figura)&lt;br /&gt;
% Asignamos NaN a los puntos de fuera para que no se pinten&lt;br /&gt;
T(~dentro) = NaN;&lt;br /&gt;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour&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;
% gradient calcula las derivadas parciales numéricas&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; % CRUCIAL para ver la ortogonalidad&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;
% Busamos el valor máximo ignorando los NaNs&lt;br /&gt;
[max_temp, indice] = max(T(sonrisa));&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;
==Gradiente Térmico==&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87025</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=87025"/>
				<updated>2025-11-25T11:37:05Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Mallado de placa */&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 }}&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|marco]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
==Ley de Fourier==&lt;br /&gt;
==Gradiente Térmico==&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87020</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=87020"/>
				<updated>2025-11-25T11:34:35Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Mallado de placa */&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 }}&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[Archivo:Malladoplacaplana.png|miniaturadeimagen]]&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&lt;br /&gt;
% u: avanza a lo largo de la placa (0 a 4)&lt;br /&gt;
% v: avanza de abajo a arriba (0 a 2)&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;
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.&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;
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.&lt;br /&gt;
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);&lt;br /&gt;
&lt;br /&gt;
% C) Dibujar el CONTORNO (Bordes Negros)&lt;br /&gt;
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas&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;
==Ley de Fourier==&lt;br /&gt;
==Gradiente Térmico==&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Malladoplacaplana.png&amp;diff=87017</id>
		<title>Archivo:Malladoplacaplana.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Malladoplacaplana.png&amp;diff=87017"/>
				<updated>2025-11-25T11:33:03Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Placa_Plana_(Grupo_20)&amp;diff=87014</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=87014"/>
				<updated>2025-11-25T11:32:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gloria García: /* Mallado de placa */&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 }}&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 viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ]&lt;br /&gt;
Se considerará fija en la pared vertical izquierda.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con  𝑓(x)=x÷8 y  𝑔(𝑥)=2−x÷8 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La temperatura viene dada por la función &lt;br /&gt;
T(x,y)=(1+(y−1)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;(4−x) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La posición después del desplazamiento es r&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;(x,y)=r&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(x,y)+u(x,y)&amp;lt;br /&amp;gt;&lt;br /&gt;
Siendo el desplazamiento: u(ρ,θ)=-ρ&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;cosθe&amp;lt;sub&amp;gt;θ&amp;lt;/sub&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:&lt;br /&gt;
&lt;br /&gt;
==Mallado de placa==&lt;br /&gt;
Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, &amp;lt;math&amp;gt;h=\frac{1}{10}&amp;lt;/math&amp;gt; para las variables &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;.&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel==&lt;br /&gt;
==Ley de Fourier==&lt;br /&gt;
==Gradiente Térmico==&lt;br /&gt;
==Campo de desplazamientos==&lt;br /&gt;
==Desplazamiento del sólido==&lt;br /&gt;
==Divergencia==&lt;br /&gt;
==Rotacional==&lt;br /&gt;
==Tensor deformaciones==&lt;br /&gt;
==Tensiones tangenciales==&lt;br /&gt;
==Tensión de Von Mises==&lt;br /&gt;
==Campo de Fuerzas==&lt;br /&gt;
==Densidad==&lt;br /&gt;
==Ejemplos de uso==&lt;/div&gt;</summary>
		<author><name>Gloria García</name></author>	</entry>

	</feed>