Ondas en un arco y cálculo vectorial (66)
Ondas en un arco y cálculo vectorial
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Ondas en un arco y cálculo vectorial. Grupo 66 |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores | Jorge Lianes
Paula Calderón Marina Morillo Marta García-Inés Sofía Romero |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Trabajo N: Arco II
Introducción
Contenido
- 1 Dibujar un mallado que represente los puntos interiores del sólido
- 2 Dibujar la temperatura del sólido
- 3 Calcular el gradiente y dibujarlo como campo vectorial
- 4 Dibujar el campo de vectores en los puntos del mallado del sólido.
- 5 Dibujar el sólido antes y después del desplazamiento
- 6 Calcula la divergencia en todos los puntos del sólido
- 7 Calcular el rotacional en todos los puntos del sólido
- 8 Tensor de deformaciones y tensiones normales en el medio elástico
- 9 Tensiones tangenciales respecto al plano ortogonal a i
- 10 Tensiones tangenciales respecto al plano ortogonal a j
- 11 Cálculo de la masa aproximando la integral numéricamente
- 12 Interpretación del trabajo
1 Dibujar un mallado que represente los puntos interiores del sólido
Mallado que representa los puntos interiores del sólido:
Se construye una rejilla rectangular con paso [math]h = \frac{1}{10}[/math] en [math]x[/math] e [math]y[/math]. Para cada línea vertical [math]x = x_i[/math] se calculan los límites interiores del semianillo como [math]y \in \big[\max\{0,\sqrt{1 - x_i^2}\}, \sqrt{4 - x_i^2}\big][/math], y se dibuja únicamente ese tramo. De forma análoga, para cada horizontal [math]y = y_j[/math] se dibujan los segmentos [math]x \in \big[\sqrt{1 - y_j^2}, \sqrt{4 - y_j^2}\big][/math] y su simétrico negativo, siempre que existan.
El dominio del semianillo está definido por la condición:
[math]1 \le \sqrt{x^2 + y^2} \le 2 \quad \text{y} \quad y \ge 0[/math]
Así el mallado queda aislado y representa exclusivamente los puntos interiores del sólido.
Código MATLAB y representación
clc; clear; close all;
% Parámetros del semianillo
R_int = 1; R_ext = 2; h = 0.1;
rho_vals = R_int:h:R_ext;
theta_vals = 0:h:pi;
% Iniciar figura
figure; hold on; axis equal; grid on;
% Dibujar líneas radiales (constante theta)
for i = 1:length(theta_vals)
th = theta_vals(i);
x_line = [R_int R_ext] * cos(th);
y_line = [R_int R_ext] * sin(th);
plot(x_line, y_line, 'c');
end
% Dibujar líneas circulares (constante rho)
for j = 1:length(rho_vals)
rj = rho_vals(j);
th = linspace(0, pi, 300);
x_arc = rj * cos(th);
y_arc = rj * sin(th);
plot(x_arc, y_arc, 'c');
end
% Dibujar contornos del semianillo en negro
th = linspace(0, pi, 400);
plot(R_ext*cos(th), R_ext*sin(th), 'k', 'LineWidth', 1.5);
plot(R_int*cos(th), R_int*sin(th), 'k', 'LineWidth', 1.5);
plot([R_int R_ext]*cos(0), [R_int R_ext]*sin(0), 'k', 'LineWidth', 1.5);
plot([R_int R_ext]*cos(pi), [R_int R_ext]*sin(pi), 'k', 'LineWidth', 1.5);
% Ajustar vista
xlim([-2.5 2.5]); ylim([-0.1 2.5]);
title('Mallado polar que representa los puntos interiores del sólido');
hold off;
2 Dibujar la temperatura del sólido
- La temperatura se incrementa a medida que ρ se aproxima a 1, porque el denominador del logaritmo disminuye.
- Esto indica un centro de calor concentrado en los puntos que se encuentran a una distancia de 1 desde el origen.
- La temperatura disminuye gradualmente al alejarnos del centro (hacia [math]\rho = 2[/math]).
Código MATLAB y representación:
clc; clear; close all;
% Malla estructural 2D con temperatura T(x,y) = (x - y)^2 en semianillo
% Parámetros de malla
r_min = 1;
r_max = 2;
paso = 0.1;
% Vectores de radios y ángulos
r = r_min:paso:r_max;
theta = linspace(0, pi, round(pi/paso)+1); % asegura que incluya pi
% Preparar figura
figure;
hold on;
axis equal;
grid on;
title('Distribución de temperatura T(x,y) en la sección');
xlabel('X');
ylabel('Y');
% Pintar cada sector con color según temperatura
for i = 1:length(r)-1
for j = 1:length(theta)-1
r1 = r(i); r2 = r(i+1);
th1 = theta(j); th2 = theta(j+1);
% Coordenadas de los vértices del sector
x = [r1*cos(th1), r2*cos(th1), r2*cos(th2), r1*cos(th2)];
y = [r1*sin(th1), r2*sin(th1), r2*sin(th2), r1*sin(th2)];
% Centro del sector para evaluar temperatura
xc = mean(x);
yc = mean(y);
T = (xc - yc)^2;
% Rellenar el sector con color proporcional a T
fill(x, y, T, 'EdgeColor', 'k'); % borde negro
end
end
% Dibujar líneas radiales
for j = 1:length(theta)
plot(r.*cos(theta(j)), r.*sin(theta(j)), 'k-');
end
% Dibujar líneas circulares
for i = 1:length(r)
plot(r(i)*cos(theta), r(i)*sin(theta), 'k-');
end
% Contornos más gruesos
th = linspace(0, pi, 300);
plot(r_max*cos(th), r_max*sin(th), 'k', 'LineWidth', 1.5); % arco exterior
plot(r_min*cos(th), r_min*sin(th), 'k', 'LineWidth', 1.5); % arco interior
plot([r_min r_max]*cos(0), [r_min r_max]*sin(0), 'k', 'LineWidth', 1.5); % lateral derecho
plot([r_min r_max]*cos(pi), [r_min r_max]*sin(pi), 'k', 'LineWidth', 1.5); % lateral izquierdo
% Ajustes visuales
colormap(jet); % mapa de colores tipo térmico
colorbar; % barra de escala de temperatura
- Para ver la temperatura en cada punto del semianillo, se emplea un mapa de colores (colorbar).
- Las áreas de temperatura más alta (cerca de [math]\rho = 1[/math]) están señaladas por los colores más fuertes.
- Las áreas más frías (alrededor de [math]\rho = 2[/math]) están representadas por los colores menos intensos.
3 Calcular el gradiente y dibujarlo como campo vectorial
Campo de desplazamiento en polares: [math]\vec{u}(\rho,\theta) = \frac{1}{5}(\rho - 1)\rho \,\vec{e}_{\rho}[/math]
Función de temperatura: [math]T(x,y) = (x - y)^2[/math]
3.1 Cálculo del gradiente:
[math]T=(x - y)^2 = 2x - 2y - 2xy[/math]
[math]\frac{\partial T}{\partial x} = 2 - 2y;[/math] [math] \frac{\partial T}{\partial y} = -2 + 2x[/math]
[math]\nabla T(x,y) = (\,2 - 2y,\,-2 + 2x\,)[/math]
3.2 Curvas de nivel de T:
La condición de las curvas de nivel es:
[math]T(x,y) = c\;\;\Rightarrow\;\; (x - y)^2=c;[/math] [math](x - y)^2 = c\quad\Rightarrow\quad y=x\mp\sqrt{c}[/math]
* El dominio es ρ ∈ [1,2], θ ∈ [0,π], es decir, el semianillo del plano superior. Se debe a que la sección longitudinal del semianillo recorta las curvas de nivel y el campo.
* Las curvas de nivel son rectas que, al intersectar el semianillo generan segmentos rectos dentro de la figura.
3.3 Ortogonalidad de ∇T a las curvas de nivel:
Para ello, se considera el diferencial total de la función de temperatura:
[math]dT = \frac{\partial T}{\partial x}\,dx + \frac{\partial T}{\partial y}\,dy = \nabla T \cdot d\vec{r}[/math]
En una curva de nivel, donde [math]T(x,y) = c[/math], se cumple:
[math]dT = 0 \;\;\Rightarrow\;\; \nabla T \cdot d\vec{r} = 0[/math]
* Esto demuestra que el gradiente [math]\nabla T[/math] es ortogonal al vector tangente [math]d\vec{r}[/math] de la curva de nivel. Las flechas del gradiente son normales a cada curva de nivel porque, por construcción, el gradiente apunta en la dirección del máximo incremento de T y el valor de T es constante a lo largo de la curva.
3.4 Campo radial en la sección del arco y su conversión
Campo dado en polares:
[math]\vec{u}(\rho, \theta) = \frac{1}{5}(\rho - 1)\rho\,\vec{e}_{\rho}[/math]
Campo en cartesianas:
[math]u_{\rho} = \frac{1}{5}(\rho - 1)\rho[/math]
[math]U_x = u_{\rho} \cos\theta;\quad U_y = u_{\rho} \sin\theta[/math]
* Dirección radial (sale del centro).
* Magnitud nula en [math]\rho = 1[/math] y máxima en [math]\rho = 2[/math] (dentro del arco mostrado).
Código MATLAB y representación
clc; clear; close all;
% Parámetros del semianillo
R_int = 1; R_ext = 2; h = 0.1;
rho_vals = R_int:h:R_ext;
% Asegurar que theta_vals incluya exactamente pi
theta_vals = 0:h:pi;
if theta_vals(end) < pi
theta_vals = [theta_vals pi];
end
% Crear malla polar
[TH, RHO] = meshgrid(theta_vals, rho_vals);
% Convertir a coordenadas cartesianas
X = RHO .* cos(TH);
Y = RHO .* sin(TH);
% Calcular el gradiente de T(x, y) = (x - y)^2
Tx = 2 * (X - Y); % Componente en x
Ty = -2 * (X - Y); % Componente en y
% Calcular T para curvas de nivel
T = (X - Y).^2;
% Graficar curvas de nivel
figure;
contour(X, Y, T, 10, 'LineWidth', 1.2); hold on;
% Graficar campo vectorial ∇T
quiver(X, Y, Tx, Ty, 0.6, 'r', 'LineWidth', 1);
% Dibujar contorno del semianillo
th = linspace(0, pi, 400);
plot(R_ext*cos(th), R_ext*sin(th), 'k', 'LineWidth', 2); % borde exterior
plot(R_int*cos(th), R_int*sin(th), 'k', 'LineWidth', 2); % borde interior
plot([R_int R_ext]*cos(0), [R_int R_ext]*sin(0), 'k', 'LineWidth', 2); % lateral derecho
plot([R_int R_ext]*cos(pi), [R_int R_ext]*sin(pi), 'k', 'LineWidth', 2); % lateral izquierdo
% Ajustar vista
axis equal; grid on;
xlim([-2.5 2.5]); ylim([0 2.5]);
title('Campo vectorial ∇T');
4 Dibujar el campo de vectores en los puntos del mallado del sólido.
Líneas coordenadas en cartesianas: [math]\vec{u}(\rho,\theta) = \frac{1}{5}(\rho - 1)\rho \, \vec{e}_{\rho}[/math]
Código MATLAB y representación:
% Medio arco: radios 1 a 2, ángulos 0 a pi
r1 = 1; r2 = 2;
t1 = 0; t2 = pi;
% Mallado
[R,T] = meshgrid(linspace(r1,r2,20), linspace(t1,t2,40));
% Campo en polares
Ur = (R-1).*R/5; % componente radial
Ut = 0; % componente tangencial nula
% Conversión a cartesianas
X = R.*cos(T);
Y = R.*sin(T);
Ux = Ur.*cos(T);
Uy = Ur.*sin(T);
% Dibujo del campo
figure;
quiver(X,Y,Ux,Uy,'b'); axis equal; hold on;
% Contorno del arco
theta = linspace(t1,t2,200);
plot(r1*cos(theta), r1*sin(theta),'k','LineWidth',1); % semicircunferencia interior
plot(r2*cos(theta), r2*sin(theta),'k','LineWidth',1); % semicircunferencia exterior
plot([r1*cos(t1) r2*cos(t1)], [r1*sin(t1) r2*sin(t1)], 'k','LineWidth',1); % radio izquierdo
plot([r1*cos(t2) r2*cos(t2)], [r1*sin(t2) r2*sin(t2)], 'k','LineWidth',1); % radio derecho
title('Campo u(r,θ) = (1/5)(r-1)r e_r en medio arco');
xlabel('x'); ylabel('y');
En este segmento se representa un campo radial definido en coordenadas polares. La magnitud de los vectores depende únicamente de la distancia radial
𝜌
, por lo que siempre apuntan hacia el exterior desde el centro.
- En 𝜌 = 1 el campo se anula.
- Conforme aumenta 𝜌, las flechas crecen en longitud hasta alcanzar su máximo en 𝜌 = 2.
- El contorno del medio arco muestra claramente la región en la que el campo está definido.
5 Dibujar el sólido antes y después del desplazamiento
Código MATLAB y representación:
clc; clear; close all;
% Parámetros del semianillo
R_ext = 2; % radio exterior
R_int = 1; % radio interior
n_ang = 40; % divisiones angulares
n_rad = 15; % divisiones radiales
% Ángulos y radios
theta = linspace(0, pi, n_ang);
r = linspace(R_int, R_ext, n_rad);
% Crear malla en coordenadas polares
[Theta, R] = meshgrid(theta, r);
% Coordenadas cartesianas en reposo
X0 = R .* cos(Theta);
Y0 = R .* sin(Theta);
% Campo de desplazamiento radial
U_r = (1/5) * (R - 1) .* R;
% Coordenadas desplazadas
R1 = R + U_r;
X1 = R1 .* cos(Theta);
Y1 = R1 .* sin(Theta);
% Dibujo con subplot
figure('Color','w');
% Subplot 1: semianillo en reposo
subplot(1,2,1);
hold on; axis equal; grid on;
title('Semianillo en reposo');
xlabel('x'); ylabel('y');
% Dibujar malla en amarillo
for i = 1:n_ang
plot(X0(:,i), Y0(:,i), 'b');
end
for i = 1:n_rad
plot(X0(i,:), Y0(i,:), 'b');
end
% Contornos en negro
th = linspace(0, pi, 300);
plot(R_ext*cos(th), R_ext*sin(th), 'k', 'LineWidth', 1.5); % arco exterior
plot(R_int*cos(th), R_int*sin(th), 'k', 'LineWidth', 1.5); % arco interior
plot([R_int R_ext]*cos(0), [R_int R_ext]*sin(0), 'k', 'LineWidth', 1.5); % lateral 1
plot([R_int R_ext]*cos(pi), [R_int R_ext]*sin(pi), 'k', 'LineWidth', 1.5); % lateral 2
xlim([-2.5 2.5]); ylim([-1.5 3]);
% Subplot 2: semianillo desplazado
subplot(1,2,2);
hold on; axis equal; grid on;
title('Semianillo desplazado por campo radial');
xlabel('x'); ylabel('y');
% Dibujar malla desplazada
for i = 1:n_ang
plot(X1(:,i), Y1(:,i), 'b');
end
for i = 1:n_rad
plot(X1(i,:), Y1(i,:), 'b');
end
% Contornos desplazados
th = linspace(0, pi, 300);
R_ext_d = R_ext + (1/5)*(R_ext - 1)*R_ext;
R_int_d = R_int + (1/5)*(R_int - 1)*R_int;
plot(R_ext_d*cos(th), R_ext_d*sin(th), 'k', 'LineWidth', 1.5); % arco exterior desplazado
plot(R_int_d*cos(th), R_int_d*sin(th), 'k', 'LineWidth', 1.5); % arco interior desplazado
% Líneas laterales desplazadas (cerrando por abajo)
x_lateral = [R_int_d, R_ext_d];
y_lateral = [0, 0]; % porque sin(0) = sin(pi) = 0
plot(x_lateral, y_lateral, 'k', 'LineWidth', 1.5); % lateral derecho (θ = 0)
plot(-x_lateral, y_lateral, 'k', 'LineWidth', 1.5); % lateral izquierdo (θ = π)
xlim([-2.5 2.5]); ylim([-1.5 3]);
hold off;
En esta sección se ilustra de manera gráfica cómo cambia el sólido cuando se le aplica el campo de desplazamiento.
Este campo señala que cada punto del sólido se mueve radialmente hacia afuera y que la distancia al centro determina la magnitud del desplazamiento: es cero en [math]\rho = 1[/math] y llega a su máximo en [math]\rho = 2[/math].
A fin de observar este fenómeno:
- El sólido original, que es un semianillo entre los radios 1 y 2, se dibuja primero.
- Después, se representa el sólido desplazado, en el que cada punto ha sido trasladado de acuerdo con el campo [math]\vec{u}[/math].
- Se pueden comparar de manera directa la geometría antes y después del desplazamiento, ya que ambos se encuentran en la misma figura usando
subplot.
Este tipo de movimiento simula una expansión radial, como si el material se estuviera empujando desde el centro hacia afuera. Es característico en modelos de ondas sísmicas tipo S o en procedimientos de expansión térmica que se llevan a cabo en estructuras con forma circular.
6 Calcula la divergencia en todos los puntos del sólido
Código MATLAB y representación:
% Parámetros del dominio
rho_min = 1; rho_max = 2;
theta_min = 0; theta_max = pi;
% Paso de malla h = 0.1
h = 0.1;
Nr = round((rho_max - rho_min)/h) + 1;
Nt = round((theta_max - theta_min)/h) + 1;
[theta, rho] = meshgrid(linspace(theta_min, theta_max, Nt), ...
linspace(rho_min, rho_max, Nr));
% Conversión a coordenadas cartesianas
x = rho .* cos(theta);
y = rho .* sin(theta);
% Divergencia: (1/5)(3*rho - 2)
div_u = (1/5) * (3*rho - 2);
% --- Gráfico ---
figure;
contourf(x, y, div_u, 50, 'LineColor', 'none');
colormap(winter);
cb = colorbar;
ylabel(cb, '\nabla \cdot u');
title('Divergencia del campo de desplazamientos');
xlabel('x'); ylabel('y');
axis equal;
hold on, grid on;
% Dibujar la malla (líneas radiales y angulares)
for i = 1:Nt
plot(x(:,i), y(:,i), 'k-', 'LineWidth', 0.15); % líneas radiales
end
for j = 1:Nr
plot(x(j,:), y(j,:), 'k-', 'LineWidth', 0.15); % líneas angulares
end
% Borde grueso del semianillo
theta_borde = linspace(theta_min, theta_max, 200);
plot(rho_min*cos(theta_borde), rho_min*sin(theta_borde), 'k-', 'LineWidth', 1);
plot(rho_max*cos(theta_borde), rho_max*sin(theta_borde), 'k-', 'LineWidth', 1);
% Bordes horizontales (y=0)
plot([rho_min rho_max], [0 0], 'k-', 'LineWidth', 1); % borde derecho
plot([-rho_max -rho_min], [0 0], 'k-', 'LineWidth', 1); % borde izquierdo
hold off;
Divergencia en coordenadas polares
6.1 Definición general
Para un campo vectorial polar 2D de la forma: [math]\vec{u} = u_{\rho}(\rho)\,\hat{e}_{\rho}[/math]
La divergencia se calcula como: [math]\nabla \cdot \vec{u} = \frac{1}{\rho}\,\frac{\partial}{\partial \rho}\big(\rho\,u_{\rho}\big) + \frac{1}{\rho}\,\frac{\partial u_{\theta}}{\partial \theta}[/math]
Como en este caso [math]u_{\theta} = 0[/math], el segundo término desaparece: [math]\nabla \cdot \vec{u} = \frac{1}{\rho}\,\frac{\partial}{\partial \rho}\big(\rho\,u_{\rho}\big)[/math]
6.2 Ejemplo
Dado: [math]u_{\rho}(\rho) = \frac{1}{5}\,\big(\rho^{2} - \rho\big)[/math]
Entonces: [math]\rho\,u_{\rho} = \frac{1}{5}\,\big(\rho^{3} - \rho^{2}\big)[/math]
Derivando respecto a [math]\rho[/math]: [math]\frac{\partial}{\partial \rho}\big(\rho\,u_{\rho}\big) = \frac{1}{5}\,\big(3\rho^{2} - 2\rho\big)[/math]
Finalmente, la divergencia es: [math]\nabla \cdot \vec{u} = \frac{1}{\rho}\cdot \frac{1}{5}\,\big(3\rho^{2} - 2\rho\big) = \frac{1}{5}\,(3\rho - 2)[/math]
7 Calcular el rotacional en todos los puntos del sólido
Código MATLAB y representación:
% Medio arco: radios 1 a 2, ángulos 0 a pi
r1 = 1; r2 = 2; t1 = 0; t2 = pi;
dr = 0.05; dt = 0.05;
r = r1:dr:r2; t = t1:dt:t2;
[TT, RR] = meshgrid(t, r);
% Coordenadas cartesianas
X = RR .* cos(TT);
Y = RR .* sin(TT);
% Rotacional del campo radial: nulo en todo el dominio
C = zeros(size(RR));
% Puntos coloreados en azul
figure;
scatter(X(:), Y(:), 15, C(:), 'filled');
colormap('winter'); colorbar; % 'winter' = gama azul
hold on;
% Contorno negro del medio arco
tt = linspace(t1, t2, 300);
plot(r1*cos(tt), r1*sin(tt), 'k', r2*cos(tt), r2*sin(tt), 'k');
plot([r1*cos(t1), r2*cos(t1)], [r1*sin(t1), r2*sin(t1)], 'k');
plot([r1*cos(t2), r2*cos(t2)], [r1*sin(t2), r2*sin(t2)], 'k');
axis equal;
xlabel('x'); ylabel('y');
title('campo radial en medio arco');
grid on; hold off;
7.1 Rotacional del campo radial en coordenadas polares
Considera el campo en el plano, en coordenadas polares:
[math]\vec{u}(\rho, \theta) = u_\rho(\rho, \theta) \, \vec{e}\rho + u\theta(\rho, \theta) \, \vec{e}_\theta[/math]
con
[math]u_\rho(\rho, \theta) = \frac{1}{\rho} (\rho - 1) \rho, \quad u_\theta(\rho, \theta) = 0[/math]
La componente [math]z[/math] del rotacional en 2D (plano) usando coordenadas polares es:
[math](\nabla \times \vec{u})z = \frac{1}{\rho} \frac{\partial}{\partial \rho} (\rho u\theta) - \frac{1}{\rho} \frac{\partial u_\rho}{\partial \theta}[/math]
Primer término:
- [math]\frac{1}{\rho} \frac{\partial}{\partial \rho} (\rho u_\theta) = \frac{1}{\rho} \frac{\partial}{\partial \rho} (\rho \cdot 0) = 0[/math]
Segundo término:
- [math]\frac{1}{\rho} \frac{\partial u_\rho}{\partial \theta} = \frac{1}{\rho} \frac{\partial}{\partial \theta} \left( \frac{1}{\rho} (\rho - 1) \rho \right) = 0[/math]
porque [math]u_\rho[/math] no depende de [math]\theta[/math].
Por tanto:
[math]\nabla \times \vec{u} = 0 \cdot \vec{k} = 0[/math]
7.2 ¿Qué puntos sufren un mayor rotacional?
El cálculo del rotacional da cero en todo el dominio porque:
[math]u_\theta = 0[/math]
[math]u_\rho[/math] solo depende de [math]\rho[/math] y no de [math]\theta[/math]
Por tanto:
[math]\nabla \times \vec{u} = 0[/math] en todo el arco.
Ningún punto sufre rotación. El desplazamiento es solo hacia fuera del centro del arco. Por tanto, los puntos se expanden radialmente, pero no giran.
8 Tensor de deformaciones y tensiones normales en el medio elástico
Código MATLAB y representación:
clc; clear; close all;
% Parámetros geométricos
r_min = 1;
r_max = 2;
paso = 0.1;
% Parámetros materiales
lambda = 1;
mu = 1;
% Malla polar
r = r_min:paso:r_max;
theta = linspace(0, pi, round(pi/paso)+1);
[R, Theta] = meshgrid(r, theta);
% Coordenadas cartesianas
X = R .* cos(Theta);
Y = R .* sin(Theta);
% Componentes de deformación
a = (1/5) * (2*R - 1); % derivada campo vectorial
b = (1/5) * (R - 1);
div_u = (1/5) * (3*R - 2); %divergencia
% Tensiones normales
sigma_rr = lambda .* div_u + 2 * mu .* a; %componente radial (efecto directo fuerza)
sigma_tt = lambda .* div_u + 2 * mu .* b; %componente tangencial (efecto indirecto fuerza)
% Vectores base en cada punto
e_r_x = cos(Theta);
e_r_y = sin(Theta);
e_t_x = -sin(Theta);
e_t_y = cos(Theta);
% Campo vectorial: flechas de tensión
U_rr_x = sigma_rr .* e_r_x;
U_rr_y = sigma_rr .* e_r_y;
U_tt_x = sigma_tt .* e_t_x ./ R;
U_tt_y = sigma_tt .* e_t_y ./ R;
% Visualización
figure('Position',[100 100 1000 500]);
% σ_rr como campo vectorial
subplot(1,2,1); hold on; axis equal;
grid on
title('\sigma_{\rho\rho}: campo en dirección radial');
xlabel('X'); ylabel('Y');
quiver(X, Y, U_rr_x, U_rr_y, 0.5, 'r'); % flechas rojas
plot_mallado(r, theta);
% --- σ_tt como campo vectorial ---
subplot(1,2,2); hold on; axis equal;
grid on
title('\sigma_{\theta\theta}: campo en dirección tangencial');
xlabel('X'); ylabel('Y');
quiver(X, Y, U_tt_x, U_tt_y, 0.5, 'b'); % flechas azules
plot_mallado(r, theta);
% Función auxiliar para mallado y contornos
function plot_mallado(r, theta)
for j = 1:length(theta)
plot(r.*cos(theta(j)), r.*sin(theta(j)), 'k-', 'LineWidth', 0.5);
end
for i = 1:length(r)
plot(r(i)*cos(theta), r(i)*sin(theta), 'k-', 'LineWidth', 0.5);
end
th = linspace(0, pi, 300);
plot(r(end)*cos(th), r(end)*sin(th), 'k', 'LineWidth', 1.5);
plot(r(1)*cos(th), r(1)*sin(th), 'k', 'LineWidth', 1.5);
plot([r(1) r(end)]*cos(0), [r(1) r(end)]*sin(0), 'k', 'LineWidth', 1.5);
plot([r(1) r(end)]*cos(pi), [r(1) r(end)]*sin(pi), 'k', 'LineWidth', 1.5);
end
Gradiente campo vectorial:
Como [math]\vec{u}[/math] es radial y solo depende de [math]\rho[/math], es un tensor simétrico y por tanto su parte simétrica es él mismo.
El gradiente del campo vectorial [math]\vec{u}(\rho, \theta)[/math] se expresa como:
[math]\nabla \vec{u} =\left(\begin{array}{cc}\frac{1}{5}(2\rho - 1) & 0 \\0 & \frac{1}{5}(\rho - 1)\end{array}\right)[/math]
El término inferior derecho se obtiene como:
[math]\frac{u_{\rho}}{\rho} = \frac{1}{\rho} \cdot \frac{1}{5}(\rho^2 - \rho) = \frac{1}{5}(\rho - 1)[/math]
Divergencia:
[math]\frac{\partial}{\partial \rho} (\rho\, u_{\rho}) = \frac{1}{5}(3\rho^2 - 2\rho)[/math]
Resultado: nos queda una matriz diagonal que nos indica las tensiones según rho y theta en cada una de las componentes de la diagonal y por tanto sólo hace falta aplicarlo a cada vector desplazamiento del campo vectorial y representarlas en la base cilíndrica en ese punto donde se evalúa el desplazamiento.
9 Tensiones tangenciales respecto al plano ortogonal a i
- [math]\vec{i} \;\;\to\;\; \vec{e}_\rho[/math]
- [math]\vec{j} \;\;\to\;\; \tfrac{1}{\rho}\,\vec{e}_\theta[/math]
Por tanto, la expresión se convierte en:
[math]\left| \; \sigma \cdot \vec{e}_\rho \;-\; \big(\vec{e}_\rho \cdot \sigma \cdot \vec{e}_\rho\big)\,\vec{e}_\rho \;\right|[/math]
Todas las tensiones tangenciales derivadas del campo de desplazamientos son nulas.
- El sólido experimenta un campo de desplazamientos puramente radial e independiente de la componente tangencial.
- Todos los puntos situados en una misma circunferencia sufren el mismo desplazamiento y en la misma dirección.
- No existe desplazamiento relativo entre elementos diferenciales contiguos en la dirección tangencial.
- Los elementos diferenciales no cambian de orientación.
La independencia del campo de desplazamientos de la variable angular [math]\theta[/math]
implica que las componentes no diagonales del tensor de tensiones sean iguales a cero.
En este apartado no hay tensiones tangenciales que representar: el resultado es un campo nulo.
10 Tensiones tangenciales respecto al plano ortogonal a j
- [math]\vec{i} \;\;\to\;\; \vec{e}_\rho[/math]
- [math]\vec{j} \;\;\to\;\; \tfrac{1}{\rho}\,\vec{e}_\theta[/math]
Por tanto, la expresión se convierte en:
[math]\left| \; \sigma \cdot \tfrac{1}{\rho}\,\vec{e}_\theta - \Big( \tfrac{1}{\rho}\,\vec{e}_\theta \cdot \sigma \cdot \tfrac{1}{\rho}\,\vec{e}_\theta \Big)\,\tfrac{1}{\rho}\,\vec{e}_\theta \;\right|[/math]
En este sentido, el sólido solo se mueve en la radial, no en la tangencial: de aquí que sobre el plano ortogonal a [math]\vec{j}[/math] (es decir, el que va en dirección angular) no pueden aparecer tensiones tangenciales.
- Todos los puntos de una misma circunferencia se ponen en movimiento de forma idéntica.
- La independencia del campo respecto de la coordenada angular [math]\theta[/math] conlleva la anulación de las propias componentes no diagonales del tensor de tensiones.
En este sentido, exactamente igual que en el apartado 9, la conclusión es que existe un campo nulo de tensiones tangenciales.
11 Cálculo de la masa aproximando la integral numéricamente
Código MATLAB
clc; clear; close all;
% Dominio polar (semianillo)
r_min = 1; r_max = 2;
th_min = 0; th_max = pi;
% Resolución de la malla (ajusta para precisión)
n_rad = 100; % puntos en r
n_ang = 100; % puntos en theta
% Vectores y malla
r = linspace(r_min, r_max, n_rad);
th = linspace(th_min, th_max, n_ang);
[RR, TH] = meshgrid(r, th);
% Densidad
rho = 1 + exp(RR.^2 .* cos(TH));
% Elemento de área en polares: r dr dθ
integrand = rho .* RR;
% Integración numérica con trapz (primero en r, luego en θ)
M_r = trapz(r, integrand); % integra a lo largo de r (columna por columna)
M = trapz(th, M_r); % integra a lo largo de θ
fprintf('Masa aproximada (trapz): %.8f\n', M);
Masa de un sector en coordenadas polares
Se considera un sector circular definido por radios entre 1 y 2, y ángulos entre 0 y π.
En coordenadas polares, cada punto se describe como (r, θ). La pequeña porción de área se expresa como:
[math]dA = r \, dr \, d\theta[/math]
Este factor r es esencial y siempre aparece al integrar en polares.
Cálculo de la masa La masa total se obtiene integrando la densidad sobre toda la superficie del sector:
[math]M = \iint_{\text{sector}} \rho(r,\theta)\, dA[/math]
El factor ρ aparece porque, en polares, el área elemental se escribe como:
[math]dA = \rho \, d\rho \, d\theta[/math]
- El material no está distribuido uniformemente: la densidad depende de [math]\cos\theta[/math].
- En el lado derecho del sector ([math]\theta = 0[/math]), la densidad crece rápidamente con [math]r^2[/math].
- En el lado izquierdo ([math]\theta = \pi[/math]), la densidad decrece conforme [math]r[/math] aumenta.
Resultados El sector resulta más pesado hacia la derecha, y la masa total calculada es aproximadamente:
[math]M \approx 24.64[/math]