<?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=M.cazorla</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=M.cazorla"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/M.cazorla"/>
		<updated>2026-04-23T15:07:18Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86296</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86296"/>
				<updated>2025-11-18T12:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:Lago1.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:Lago2.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:Lago3.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Códigos de Matlab=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
close all&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%-------------------------------MALLA 1------------------------------------&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 1: VARIABLES-----------&lt;br /&gt;
&lt;br /&gt;
% Término fuente f(x,y)&lt;br /&gt;
% --- Fuente física: vertido puntual normalizado (gaussiana) ---&lt;br /&gt;
Q = 1.0;          % Caudal total de contaminante&lt;br /&gt;
x0 = 0.5; y0 = 0.5; % Punto de vertido del contaminante&lt;br /&gt;
sigma = 0.05;     % Anchura de la fuente&lt;br /&gt;
&lt;br /&gt;
f = @(x,y) (Q/(2*pi*sigma^2)) .* exp(-((x-x0).^2 + (y-y0).^2) / (2*sigma^2));&lt;br /&gt;
&lt;br /&gt;
% Parámetros físicos&lt;br /&gt;
D = 0.01;   % Coeficiente de difusión&lt;br /&gt;
k = 0.1;   % Coeficiente de reacción&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 2: CREACIÓN DE LAS MATRICES DE NODOS Y TRIANGULOS-----------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices1.txt');&lt;br /&gt;
Triangulos = load('triangulos1.txt');    %Cargamos los ficheros&lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     % número de Triangulos&lt;br /&gt;
M = length(Vertices);       % número de nodos (vertices)&lt;br /&gt;
&lt;br /&gt;
% Coordenadas de los nodos&lt;br /&gt;
coord1 = zeros(M,2);&lt;br /&gt;
coord1(:,1) = Vertices(:,2);&lt;br /&gt;
coord1(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
% Conectividad (qué nodos forman cada triángulo)&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos1=nodos;&lt;br /&gt;
%%%----------PASO 3: MATRICES LOCALES DE REFERENCIA-----------&lt;br /&gt;
&lt;br /&gt;
% Matriz de masa local (para el término de reacción)&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
% Matrices para los términos de derivadas parciales&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
% Vector de integración de referencia (para f)&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 4: ENSAMBLADO DE LA MATRIZ GLOBAL Y EL VECTOR DE CARGAS-----------&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    % matriz global (rigidez + reacción)&lt;br /&gt;
b = zeros(M,1);  % vector global de cargas&lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    % Nodos del triangulo e&lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    % Matriz del elemento (de coordenadas locales a reales)&lt;br /&gt;
    Bk = [coord1(nodosK(2),1)-coord1(nodosK(1),1), coord1(nodosK(3),1)-coord1(nodosK(1),1);&lt;br /&gt;
          coord1(nodosK(2),2)-coord1(nodosK(1),2), coord1(nodosK(3),2)-coord1(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          % área*2 del triángulo&lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; % matriz Ck = (Bk^-1)(Bk^-T)&lt;br /&gt;
    &lt;br /&gt;
    % Matriz elemental (difusión + reacción)&lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en la matriz global&lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A1=A;&lt;br /&gt;
    &lt;br /&gt;
    % Cálculo del término fuente medio en el triángulo&lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord1(nodosK(1),1), coord1(nodosK(1),2)), ...&lt;br /&gt;
        f(coord1(nodosK(2),1), coord1(nodosK(2),2)), ...&lt;br /&gt;
        f(coord1(nodosK(3),1), coord1(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    % Vector local de cargas&lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en el vector global&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 5: APLICAR CONDICIONES DE CONTORNO DIRICHLET HOMOGÉNEAS (c=0)-----------&lt;br /&gt;
&lt;br /&gt;
% Detectamos los nodos de frontera:&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
% Impongo c=0 en los nodos de la frontera&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 6: RESOLUCIÓN DEL SISTEMA-----------&lt;br /&gt;
&lt;br /&gt;
u1 = A\b;   % solución aproximada en los vertices&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 7: GRAFICAMOS-----------&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
trisurf(nodos, coord1(:,1), coord1(:,2), u1)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%--------------------------------------MALLA 2--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices2.txt');&lt;br /&gt;
Triangulos = load('triangulos2.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord2 = zeros(M,2);&lt;br /&gt;
coord2(:,1) = Vertices(:,2);&lt;br /&gt;
coord2(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos2=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord2(nodosK(2),1)-coord2(nodosK(1),1), coord2(nodosK(3),1)-coord2(nodosK(1),1);&lt;br /&gt;
          coord2(nodosK(2),2)-coord2(nodosK(1),2), coord2(nodosK(3),2)-coord2(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A2=A;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord2(nodosK(1),1), coord2(nodosK(1),2)), ...&lt;br /&gt;
        f(coord2(nodosK(2),1), coord2(nodosK(2),2)), ...&lt;br /&gt;
        f(coord2(nodosK(3),1), coord2(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u2 = A\b;  &lt;br /&gt;
&lt;br /&gt;
figure(2)&lt;br /&gt;
trisurf(nodos, coord2(:,1), coord2(:,2), u2)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALA 3-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices3.txt');&lt;br /&gt;
Triangulos = load('triangulos3.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord3 = zeros(M,2);&lt;br /&gt;
coord3(:,1) = Vertices(:,2);&lt;br /&gt;
coord3(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos3=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);   &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord3(nodosK(2),1)-coord3(nodosK(1),1), coord3(nodosK(3),1)-coord3(nodosK(1),1);&lt;br /&gt;
          coord3(nodosK(2),2)-coord3(nodosK(1),2), coord3(nodosK(3),2)-coord3(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A3=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord3(nodosK(1),1), coord3(nodosK(1),2)), ...&lt;br /&gt;
        f(coord3(nodosK(2),1), coord3(nodosK(2),2)), ...&lt;br /&gt;
        f(coord3(nodosK(3),1), coord3(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u3 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(3)&lt;br /&gt;
trisurf(nodos, coord3(:,1), coord3(:,2), u3)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALLA 4-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices4.txt');&lt;br /&gt;
Triangulos = load('triangulos4.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);    &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord4 = zeros(M,2);&lt;br /&gt;
coord4(:,1) = Vertices(:,2);&lt;br /&gt;
coord4(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos4=nodos;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
   &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord4(nodosK(2),1)-coord4(nodosK(1),1), coord4(nodosK(3),1)-coord4(nodosK(1),1);&lt;br /&gt;
          coord4(nodosK(2),2)-coord4(nodosK(1),2), coord4(nodosK(3),2)-coord4(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A4=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord4(nodosK(1),1), coord4(nodosK(1),2)), ...&lt;br /&gt;
        f(coord4(nodosK(2),1), coord4(nodosK(2),2)), ...&lt;br /&gt;
        f(coord4(nodosK(3),1), coord4(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u4 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(4)&lt;br /&gt;
trisurf(nodos, coord4(:,1), coord4(:,2), u4)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:MNEDP|MNEDP]]&lt;br /&gt;
[[Categoría:MNEDP25/26|2025-26]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Lago3.jpg&amp;diff=86295</id>
		<title>Archivo:Lago3.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Lago3.jpg&amp;diff=86295"/>
				<updated>2025-11-18T12:06:12Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Lago2.jpg&amp;diff=86294</id>
		<title>Archivo:Lago2.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Lago2.jpg&amp;diff=86294"/>
				<updated>2025-11-18T12:05:49Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Lago1.jpg&amp;diff=86293</id>
		<title>Archivo:Lago1.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Lago1.jpg&amp;diff=86293"/>
				<updated>2025-11-18T12:05:23Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Lozano2.jpg&amp;diff=86292</id>
		<title>Archivo:Lozano2.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Lozano2.jpg&amp;diff=86292"/>
				<updated>2025-11-18T12:04:34Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Lozano1.jpg&amp;diff=86291</id>
		<title>Archivo:Lozano1.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Lozano1.jpg&amp;diff=86291"/>
				<updated>2025-11-18T12:03:57Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86235</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86235"/>
				<updated>2025-11-15T05:50:44Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:CEELP1.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:CEELP2.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:CEELP3.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:CEELP4.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Códigos de Matlab=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
close all&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%-------------------------------MALLA 1------------------------------------&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 1: VARIABLES-----------&lt;br /&gt;
&lt;br /&gt;
% Término fuente f(x,y)&lt;br /&gt;
% --- Fuente física: vertido puntual normalizado (gaussiana) ---&lt;br /&gt;
Q = 1.0;          % Caudal total de contaminante&lt;br /&gt;
x0 = 0.5; y0 = 0.5; % Punto de vertido del contaminante&lt;br /&gt;
sigma = 0.05;     % Anchura de la fuente&lt;br /&gt;
&lt;br /&gt;
f = @(x,y) (Q/(2*pi*sigma^2)) .* exp(-((x-x0).^2 + (y-y0).^2) / (2*sigma^2));&lt;br /&gt;
&lt;br /&gt;
% Parámetros físicos&lt;br /&gt;
D = 0.01;   % Coeficiente de difusión&lt;br /&gt;
k = 0.1;   % Coeficiente de reacción&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 2: CREACIÓN DE LAS MATRICES DE NODOS Y TRIANGULOS-----------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices1.txt');&lt;br /&gt;
Triangulos = load('triangulos1.txt');    %Cargamos los ficheros&lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     % número de Triangulos&lt;br /&gt;
M = length(Vertices);       % número de nodos (vertices)&lt;br /&gt;
&lt;br /&gt;
% Coordenadas de los nodos&lt;br /&gt;
coord1 = zeros(M,2);&lt;br /&gt;
coord1(:,1) = Vertices(:,2);&lt;br /&gt;
coord1(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
% Conectividad (qué nodos forman cada triángulo)&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos1=nodos;&lt;br /&gt;
%%%----------PASO 3: MATRICES LOCALES DE REFERENCIA-----------&lt;br /&gt;
&lt;br /&gt;
% Matriz de masa local (para el término de reacción)&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
% Matrices para los términos de derivadas parciales&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
% Vector de integración de referencia (para f)&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 4: ENSAMBLADO DE LA MATRIZ GLOBAL Y EL VECTOR DE CARGAS-----------&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    % matriz global (rigidez + reacción)&lt;br /&gt;
b = zeros(M,1);  % vector global de cargas&lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    % Nodos del triangulo e&lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    % Matriz del elemento (de coordenadas locales a reales)&lt;br /&gt;
    Bk = [coord1(nodosK(2),1)-coord1(nodosK(1),1), coord1(nodosK(3),1)-coord1(nodosK(1),1);&lt;br /&gt;
          coord1(nodosK(2),2)-coord1(nodosK(1),2), coord1(nodosK(3),2)-coord1(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          % área*2 del triángulo&lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; % matriz Ck = (Bk^-1)(Bk^-T)&lt;br /&gt;
    &lt;br /&gt;
    % Matriz elemental (difusión + reacción)&lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en la matriz global&lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A1=A;&lt;br /&gt;
    &lt;br /&gt;
    % Cálculo del término fuente medio en el triángulo&lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord1(nodosK(1),1), coord1(nodosK(1),2)), ...&lt;br /&gt;
        f(coord1(nodosK(2),1), coord1(nodosK(2),2)), ...&lt;br /&gt;
        f(coord1(nodosK(3),1), coord1(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    % Vector local de cargas&lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en el vector global&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 5: APLICAR CONDICIONES DE CONTORNO DIRICHLET HOMOGÉNEAS (c=0)-----------&lt;br /&gt;
&lt;br /&gt;
% Detectamos los nodos de frontera:&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
% Impongo c=0 en los nodos de la frontera&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 6: RESOLUCIÓN DEL SISTEMA-----------&lt;br /&gt;
&lt;br /&gt;
u1 = A\b;   % solución aproximada en los vertices&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 7: GRAFICAMOS-----------&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
trisurf(nodos, coord1(:,1), coord1(:,2), u1)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%--------------------------------------MALLA 2--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices2.txt');&lt;br /&gt;
Triangulos = load('triangulos2.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord2 = zeros(M,2);&lt;br /&gt;
coord2(:,1) = Vertices(:,2);&lt;br /&gt;
coord2(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos2=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord2(nodosK(2),1)-coord2(nodosK(1),1), coord2(nodosK(3),1)-coord2(nodosK(1),1);&lt;br /&gt;
          coord2(nodosK(2),2)-coord2(nodosK(1),2), coord2(nodosK(3),2)-coord2(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A2=A;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord2(nodosK(1),1), coord2(nodosK(1),2)), ...&lt;br /&gt;
        f(coord2(nodosK(2),1), coord2(nodosK(2),2)), ...&lt;br /&gt;
        f(coord2(nodosK(3),1), coord2(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u2 = A\b;  &lt;br /&gt;
&lt;br /&gt;
figure(2)&lt;br /&gt;
trisurf(nodos, coord2(:,1), coord2(:,2), u2)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALA 3-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices3.txt');&lt;br /&gt;
Triangulos = load('triangulos3.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord3 = zeros(M,2);&lt;br /&gt;
coord3(:,1) = Vertices(:,2);&lt;br /&gt;
coord3(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos3=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);   &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord3(nodosK(2),1)-coord3(nodosK(1),1), coord3(nodosK(3),1)-coord3(nodosK(1),1);&lt;br /&gt;
          coord3(nodosK(2),2)-coord3(nodosK(1),2), coord3(nodosK(3),2)-coord3(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A3=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord3(nodosK(1),1), coord3(nodosK(1),2)), ...&lt;br /&gt;
        f(coord3(nodosK(2),1), coord3(nodosK(2),2)), ...&lt;br /&gt;
        f(coord3(nodosK(3),1), coord3(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u3 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(3)&lt;br /&gt;
trisurf(nodos, coord3(:,1), coord3(:,2), u3)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALLA 4-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices4.txt');&lt;br /&gt;
Triangulos = load('triangulos4.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);    &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord4 = zeros(M,2);&lt;br /&gt;
coord4(:,1) = Vertices(:,2);&lt;br /&gt;
coord4(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos4=nodos;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
   &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord4(nodosK(2),1)-coord4(nodosK(1),1), coord4(nodosK(3),1)-coord4(nodosK(1),1);&lt;br /&gt;
          coord4(nodosK(2),2)-coord4(nodosK(1),2), coord4(nodosK(3),2)-coord4(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A4=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord4(nodosK(1),1), coord4(nodosK(1),2)), ...&lt;br /&gt;
        f(coord4(nodosK(2),1), coord4(nodosK(2),2)), ...&lt;br /&gt;
        f(coord4(nodosK(3),1), coord4(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u4 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(4)&lt;br /&gt;
trisurf(nodos, coord4(:,1), coord4(:,2), u4)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:MNEDP|MNEDP]]&lt;br /&gt;
[[Categoría:MNEDP25/26|2025-26]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86234</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86234"/>
				<updated>2025-11-15T05:49:28Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
| [[Archivo:CEELP1.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| [[Archivo:CEELP2.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| [[Archivo:CEELP3.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| [[Archivo:CEELP4.jpg|900px|thumb|right|Trabajo de Métodos Numéricos en Ecuaciones Diferenciales en Derivadas Parciales sobre Contaminación en el lago en formato póster realizado por el grupo AMLS.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Códigos de Matlab=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
close all&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%-------------------------------MALLA 1------------------------------------&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 1: VARIABLES-----------&lt;br /&gt;
&lt;br /&gt;
% Término fuente f(x,y)&lt;br /&gt;
% --- Fuente física: vertido puntual normalizado (gaussiana) ---&lt;br /&gt;
Q = 1.0;          % Caudal total de contaminante&lt;br /&gt;
x0 = 0.5; y0 = 0.5; % Punto de vertido del contaminante&lt;br /&gt;
sigma = 0.05;     % Anchura de la fuente&lt;br /&gt;
&lt;br /&gt;
f = @(x,y) (Q/(2*pi*sigma^2)) .* exp(-((x-x0).^2 + (y-y0).^2) / (2*sigma^2));&lt;br /&gt;
&lt;br /&gt;
% Parámetros físicos&lt;br /&gt;
D = 0.01;   % Coeficiente de difusión&lt;br /&gt;
k = 0.1;   % Coeficiente de reacción&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 2: CREACIÓN DE LAS MATRICES DE NODOS Y TRIANGULOS-----------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices1.txt');&lt;br /&gt;
Triangulos = load('triangulos1.txt');    %Cargamos los ficheros&lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     % número de Triangulos&lt;br /&gt;
M = length(Vertices);       % número de nodos (vertices)&lt;br /&gt;
&lt;br /&gt;
% Coordenadas de los nodos&lt;br /&gt;
coord1 = zeros(M,2);&lt;br /&gt;
coord1(:,1) = Vertices(:,2);&lt;br /&gt;
coord1(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
% Conectividad (qué nodos forman cada triángulo)&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos1=nodos;&lt;br /&gt;
%%%----------PASO 3: MATRICES LOCALES DE REFERENCIA-----------&lt;br /&gt;
&lt;br /&gt;
% Matriz de masa local (para el término de reacción)&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
% Matrices para los términos de derivadas parciales&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
% Vector de integración de referencia (para f)&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 4: ENSAMBLADO DE LA MATRIZ GLOBAL Y EL VECTOR DE CARGAS-----------&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    % matriz global (rigidez + reacción)&lt;br /&gt;
b = zeros(M,1);  % vector global de cargas&lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    % Nodos del triangulo e&lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    % Matriz del elemento (de coordenadas locales a reales)&lt;br /&gt;
    Bk = [coord1(nodosK(2),1)-coord1(nodosK(1),1), coord1(nodosK(3),1)-coord1(nodosK(1),1);&lt;br /&gt;
          coord1(nodosK(2),2)-coord1(nodosK(1),2), coord1(nodosK(3),2)-coord1(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          % área*2 del triángulo&lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; % matriz Ck = (Bk^-1)(Bk^-T)&lt;br /&gt;
    &lt;br /&gt;
    % Matriz elemental (difusión + reacción)&lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en la matriz global&lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A1=A;&lt;br /&gt;
    &lt;br /&gt;
    % Cálculo del término fuente medio en el triángulo&lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord1(nodosK(1),1), coord1(nodosK(1),2)), ...&lt;br /&gt;
        f(coord1(nodosK(2),1), coord1(nodosK(2),2)), ...&lt;br /&gt;
        f(coord1(nodosK(3),1), coord1(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    % Vector local de cargas&lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en el vector global&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 5: APLICAR CONDICIONES DE CONTORNO DIRICHLET HOMOGÉNEAS (c=0)-----------&lt;br /&gt;
&lt;br /&gt;
% Detectamos los nodos de frontera:&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
% Impongo c=0 en los nodos de la frontera&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 6: RESOLUCIÓN DEL SISTEMA-----------&lt;br /&gt;
&lt;br /&gt;
u1 = A\b;   % solución aproximada en los vertices&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 7: GRAFICAMOS-----------&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
trisurf(nodos, coord1(:,1), coord1(:,2), u1)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%--------------------------------------MALLA 2--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices2.txt');&lt;br /&gt;
Triangulos = load('triangulos2.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord2 = zeros(M,2);&lt;br /&gt;
coord2(:,1) = Vertices(:,2);&lt;br /&gt;
coord2(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos2=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord2(nodosK(2),1)-coord2(nodosK(1),1), coord2(nodosK(3),1)-coord2(nodosK(1),1);&lt;br /&gt;
          coord2(nodosK(2),2)-coord2(nodosK(1),2), coord2(nodosK(3),2)-coord2(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A2=A;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord2(nodosK(1),1), coord2(nodosK(1),2)), ...&lt;br /&gt;
        f(coord2(nodosK(2),1), coord2(nodosK(2),2)), ...&lt;br /&gt;
        f(coord2(nodosK(3),1), coord2(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u2 = A\b;  &lt;br /&gt;
&lt;br /&gt;
figure(2)&lt;br /&gt;
trisurf(nodos, coord2(:,1), coord2(:,2), u2)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALA 3-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices3.txt');&lt;br /&gt;
Triangulos = load('triangulos3.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord3 = zeros(M,2);&lt;br /&gt;
coord3(:,1) = Vertices(:,2);&lt;br /&gt;
coord3(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos3=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);   &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord3(nodosK(2),1)-coord3(nodosK(1),1), coord3(nodosK(3),1)-coord3(nodosK(1),1);&lt;br /&gt;
          coord3(nodosK(2),2)-coord3(nodosK(1),2), coord3(nodosK(3),2)-coord3(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A3=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord3(nodosK(1),1), coord3(nodosK(1),2)), ...&lt;br /&gt;
        f(coord3(nodosK(2),1), coord3(nodosK(2),2)), ...&lt;br /&gt;
        f(coord3(nodosK(3),1), coord3(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u3 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(3)&lt;br /&gt;
trisurf(nodos, coord3(:,1), coord3(:,2), u3)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALLA 4-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices4.txt');&lt;br /&gt;
Triangulos = load('triangulos4.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);    &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord4 = zeros(M,2);&lt;br /&gt;
coord4(:,1) = Vertices(:,2);&lt;br /&gt;
coord4(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos4=nodos;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
   &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord4(nodosK(2),1)-coord4(nodosK(1),1), coord4(nodosK(3),1)-coord4(nodosK(1),1);&lt;br /&gt;
          coord4(nodosK(2),2)-coord4(nodosK(1),2), coord4(nodosK(3),2)-coord4(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A4=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord4(nodosK(1),1), coord4(nodosK(1),2)), ...&lt;br /&gt;
        f(coord4(nodosK(2),1), coord4(nodosK(2),2)), ...&lt;br /&gt;
        f(coord4(nodosK(3),1), coord4(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u4 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(4)&lt;br /&gt;
trisurf(nodos, coord4(:,1), coord4(:,2), u4)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:MNEDP|MNEDP]]&lt;br /&gt;
[[Categoría:MNEDP25/26|2025-26]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP4.jpg&amp;diff=86233</id>
		<title>Archivo:CEELP4.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP4.jpg&amp;diff=86233"/>
				<updated>2025-11-15T05:46:55Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP3.jpg&amp;diff=86232</id>
		<title>Archivo:CEELP3.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP3.jpg&amp;diff=86232"/>
				<updated>2025-11-15T05:46:29Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP2.jpg&amp;diff=86231</id>
		<title>Archivo:CEELP2.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP2.jpg&amp;diff=86231"/>
				<updated>2025-11-15T05:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP1.jpg&amp;diff=86230</id>
		<title>Archivo:CEELP1.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:CEELP1.jpg&amp;diff=86230"/>
				<updated>2025-11-15T05:45:16Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Page_1.jpg&amp;diff=86229</id>
		<title>Archivo:Page 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Page_1.jpg&amp;diff=86229"/>
				<updated>2025-11-15T05:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86228</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86228"/>
				<updated>2025-11-14T18:42:29Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;br /&gt;
Hola a todos esto e suna prueba&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Códigos de Matlab=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
close all&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%-------------------------------MALLA 1------------------------------------&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 1: VARIABLES-----------&lt;br /&gt;
&lt;br /&gt;
% Término fuente f(x,y)&lt;br /&gt;
% --- Fuente física: vertido puntual normalizado (gaussiana) ---&lt;br /&gt;
Q = 1.0;          % Caudal total de contaminante&lt;br /&gt;
x0 = 0.5; y0 = 0.5; % Punto de vertido del contaminante&lt;br /&gt;
sigma = 0.05;     % Anchura de la fuente&lt;br /&gt;
&lt;br /&gt;
f = @(x,y) (Q/(2*pi*sigma^2)) .* exp(-((x-x0).^2 + (y-y0).^2) / (2*sigma^2));&lt;br /&gt;
&lt;br /&gt;
% Parámetros físicos&lt;br /&gt;
D = 0.01;   % Coeficiente de difusión&lt;br /&gt;
k = 0.1;   % Coeficiente de reacción&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 2: CREACIÓN DE LAS MATRICES DE NODOS Y TRIANGULOS-----------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices1.txt');&lt;br /&gt;
Triangulos = load('triangulos1.txt');    %Cargamos los ficheros&lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     % número de Triangulos&lt;br /&gt;
M = length(Vertices);       % número de nodos (vertices)&lt;br /&gt;
&lt;br /&gt;
% Coordenadas de los nodos&lt;br /&gt;
coord1 = zeros(M,2);&lt;br /&gt;
coord1(:,1) = Vertices(:,2);&lt;br /&gt;
coord1(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
% Conectividad (qué nodos forman cada triángulo)&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos1=nodos;&lt;br /&gt;
%%%----------PASO 3: MATRICES LOCALES DE REFERENCIA-----------&lt;br /&gt;
&lt;br /&gt;
% Matriz de masa local (para el término de reacción)&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
% Matrices para los términos de derivadas parciales&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
% Vector de integración de referencia (para f)&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 4: ENSAMBLADO DE LA MATRIZ GLOBAL Y EL VECTOR DE CARGAS-----------&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    % matriz global (rigidez + reacción)&lt;br /&gt;
b = zeros(M,1);  % vector global de cargas&lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    % Nodos del triangulo e&lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    % Matriz del elemento (de coordenadas locales a reales)&lt;br /&gt;
    Bk = [coord1(nodosK(2),1)-coord1(nodosK(1),1), coord1(nodosK(3),1)-coord1(nodosK(1),1);&lt;br /&gt;
          coord1(nodosK(2),2)-coord1(nodosK(1),2), coord1(nodosK(3),2)-coord1(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          % área*2 del triángulo&lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; % matriz Ck = (Bk^-1)(Bk^-T)&lt;br /&gt;
    &lt;br /&gt;
    % Matriz elemental (difusión + reacción)&lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en la matriz global&lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A1=A;&lt;br /&gt;
    &lt;br /&gt;
    % Cálculo del término fuente medio en el triángulo&lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord1(nodosK(1),1), coord1(nodosK(1),2)), ...&lt;br /&gt;
        f(coord1(nodosK(2),1), coord1(nodosK(2),2)), ...&lt;br /&gt;
        f(coord1(nodosK(3),1), coord1(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    % Vector local de cargas&lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    % Ensamblado en el vector global&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 5: APLICAR CONDICIONES DE CONTORNO DIRICHLET HOMOGÉNEAS (c=0)-----------&lt;br /&gt;
&lt;br /&gt;
% Detectamos los nodos de frontera:&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
% Impongo c=0 en los nodos de la frontera&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 6: RESOLUCIÓN DEL SISTEMA-----------&lt;br /&gt;
&lt;br /&gt;
u1 = A\b;   % solución aproximada en los vertices&lt;br /&gt;
&lt;br /&gt;
%%%----------PASO 7: GRAFICAMOS-----------&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
trisurf(nodos, coord1(:,1), coord1(:,2), u1)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%--------------------------------------MALLA 2--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices2.txt');&lt;br /&gt;
Triangulos = load('triangulos2.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord2 = zeros(M,2);&lt;br /&gt;
coord2(:,1) = Vertices(:,2);&lt;br /&gt;
coord2(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos2=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord2(nodosK(2),1)-coord2(nodosK(1),1), coord2(nodosK(3),1)-coord2(nodosK(1),1);&lt;br /&gt;
          coord2(nodosK(2),2)-coord2(nodosK(1),2), coord2(nodosK(3),2)-coord2(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A2=A;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord2(nodosK(1),1), coord2(nodosK(1),2)), ...&lt;br /&gt;
        f(coord2(nodosK(2),1), coord2(nodosK(2),2)), ...&lt;br /&gt;
        f(coord2(nodosK(3),1), coord2(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u2 = A\b;  &lt;br /&gt;
&lt;br /&gt;
figure(2)&lt;br /&gt;
trisurf(nodos, coord2(:,1), coord2(:,2), u2)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALA 3-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices3.txt');&lt;br /&gt;
Triangulos = load('triangulos3.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);     &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord3 = zeros(M,2);&lt;br /&gt;
coord3(:,1) = Vertices(:,2);&lt;br /&gt;
coord3(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos3=nodos;&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);   &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
    &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord3(nodosK(2),1)-coord3(nodosK(1),1), coord3(nodosK(3),1)-coord3(nodosK(1),1);&lt;br /&gt;
          coord3(nodosK(2),2)-coord3(nodosK(1),2), coord3(nodosK(3),2)-coord3(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);          &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A3=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord3(nodosK(1),1), coord3(nodosK(1),2)), ...&lt;br /&gt;
        f(coord3(nodosK(2),1), coord3(nodosK(2),2)), ...&lt;br /&gt;
        f(coord3(nodosK(3),1), coord3(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u3 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(3)&lt;br /&gt;
trisurf(nodos, coord3(:,1), coord3(:,2), u3)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%---------------------------------------MALLA 4-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Vertices = load('vertices4.txt');&lt;br /&gt;
Triangulos = load('triangulos4.txt');    &lt;br /&gt;
&lt;br /&gt;
Ne = length(Triangulos);    &lt;br /&gt;
M = length(Vertices);       &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coord4 = zeros(M,2);&lt;br /&gt;
coord4(:,1) = Vertices(:,2);&lt;br /&gt;
coord4(:,2) = Vertices(:,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodos = zeros(Ne,3);&lt;br /&gt;
nodos(:,1) = Triangulos(:,2);&lt;br /&gt;
nodos(:,2) = Triangulos(:,3);&lt;br /&gt;
nodos(:,3) = Triangulos(:,4);&lt;br /&gt;
nodos4=nodos;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L0 = [1/12 1/24 1/24;&lt;br /&gt;
      1/24 1/12 1/24;&lt;br /&gt;
      1/24 1/24 1/12];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lxx = [1/2 -1/2 0;&lt;br /&gt;
       -1/2 1/2 0;&lt;br /&gt;
        0    0  0];&lt;br /&gt;
&lt;br /&gt;
Lyy = [1/2  0 -1/2;&lt;br /&gt;
        0   0   0;&lt;br /&gt;
       -1/2 0  1/2];&lt;br /&gt;
&lt;br /&gt;
Lxy = [1/2  0 -1/2;&lt;br /&gt;
       -1/2 0  1/2;&lt;br /&gt;
        0   0   0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
l0 = [1/6; 1/6; 1/6];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A = zeros(M);    &lt;br /&gt;
b = zeros(M,1);  &lt;br /&gt;
&lt;br /&gt;
for e = 1:Ne&lt;br /&gt;
   &lt;br /&gt;
    nodosK = nodos(e,:);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Bk = [coord4(nodosK(2),1)-coord4(nodosK(1),1), coord4(nodosK(3),1)-coord4(nodosK(1),1);&lt;br /&gt;
          coord4(nodosK(2),2)-coord4(nodosK(1),2), coord4(nodosK(3),2)-coord4(nodosK(1),2)];&lt;br /&gt;
    &lt;br /&gt;
    detBk = det(Bk);         &lt;br /&gt;
    Ck = inv(Bk) * (inv(Bk))'; &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Lk = abs(detBk) * ( D*(Ck(1,1)*Lxx + Ck(1,2)*(Lxy+Lxy') + Ck(2,2)*Lyy) + k*L0 );&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    A(nodosK,nodosK) = A(nodosK,nodosK) + Lk;&lt;br /&gt;
    A4=A;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    fk = mean([ ...&lt;br /&gt;
        f(coord4(nodosK(1),1), coord4(nodosK(1),2)), ...&lt;br /&gt;
        f(coord4(nodosK(2),1), coord4(nodosK(2),2)), ...&lt;br /&gt;
        f(coord4(nodosK(3),1), coord4(nodosK(3),2)) ]);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    lk = fk * abs(detBk) * l0;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    b(nodosK) = b(nodosK) + lk;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
edges = [nodos(:,[1,2]); nodos(:,[2,3]); nodos(:,[3,1])];&lt;br /&gt;
edges_sorted = sort(edges,2);&lt;br /&gt;
[uniqE, ~, ic] = unique(edges_sorted,'rows');&lt;br /&gt;
counts = accumarray(ic,1);&lt;br /&gt;
boundary_edges = uniqE(counts==1,:);&lt;br /&gt;
boundary_nodes = unique(boundary_edges(:));&lt;br /&gt;
&lt;br /&gt;
for n = boundary_nodes'&lt;br /&gt;
    A(n,:) = 0; A(:,n) = 0; A(n,n) = 1;&lt;br /&gt;
    b(n) = 0;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
u4 = A\b;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
figure(4)&lt;br /&gt;
trisurf(nodos, coord4(:,1), coord4(:,2), u4)&lt;br /&gt;
title('Solución numérica c_h')&lt;br /&gt;
view(0,90); axis equal; colormap(turbo); colorbar; axis tight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:MNEDP|MNEDP]]&lt;br /&gt;
[[Categoría:MNEDP25/26|2025-26]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86227</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86227"/>
				<updated>2025-11-14T18:41:01Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;br /&gt;
Hola a todos esto e suna prueba&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:MNEDP|MNEDP]]&lt;br /&gt;
[[Categoría:MNEDP25/26|2025-26]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86226</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86226"/>
				<updated>2025-11-14T18:39:43Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;br /&gt;
Hola a todos esto e suna prueba&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86225</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86225"/>
				<updated>2025-11-14T18:37:38Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS) | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86224</id>
		<title>Contaminación del lago (AMLS)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Contaminaci%C3%B3n_del_lago_(AMLS)&amp;diff=86224"/>
				<updated>2025-11-14T18:36:34Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: Página creada con «{{ TrabajoED |Contaminación del lago (AMLS9 | MNEDP|2025-26 |  *Antonio Lozano Fernández,  *Miguel Cazorla Pedraza,  *Lar...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Contaminación del lago (AMLS9 | [[:Categoría:MNEDP|MNEDP]]|[[:Categoría:MNEDP25/26|2025-26]] | &lt;br /&gt;
*Antonio Lozano Fernández, &lt;br /&gt;
*Miguel Cazorla Pedraza, &lt;br /&gt;
*Lara lancelloti, &lt;br /&gt;
*Sara Berti.}}&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72948</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72948"/>
				<updated>2024-05-27T11:23:47Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Otros datos iniciales más particulares para el sistema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
=== Planteamiento del problema  ===&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}\cos(k\pi t)\right]\sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \sin(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \sin(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dibujo de la solución dadas las condiciones iniciales  ===&lt;br /&gt;
Considerando  &amp;lt;math&amp;gt; u_0(x,t)= e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = 0&amp;lt;/math&amp;gt;, entonces la solución tomando los primeros  &amp;lt;math&amp;gt;50 &amp;lt;/math&amp;gt; términos de la serie es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^{50} 2 \left[\int_0^1 u_0(x) \sin(k\pi x) dx\right]cos(k\pi t) \sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y el dibujo de la solución en el intervalo de tiempo  &amp;lt;math&amp;gt; [0,2] &amp;lt;/math&amp;gt;  queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:63ot.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
Podemos observar que solución para estas condiciones iniciales es periódica en el tiempo con periodo &amp;lt;math&amp;gt; T = 2 &amp;lt;/math&amp;gt; ya que en la gráfica se repite el patrón inicial.&lt;br /&gt;
&lt;br /&gt;
Esto también se puede apreciar si repetimos el dibujo en el intervalo temporal &amp;lt;math&amp;gt; [0,4] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:63ot4.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
===  Otros datos iniciales más particulares para el sistema ===&lt;br /&gt;
Ahora, consideraremos los datos iniciales correspondientes a una onda que viaja en un sólo sentido &amp;lt;math&amp;gt;\left(u(x,t) = f(x-t)\right) &amp;lt;/math&amp;gt;. Para ello, tomamos: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = f(x), \hspace{3mm} u_1(x) = -f'(x) \hspace{2mm} con \hspace{2mm} f(x) = e^{-100(x-1/2)^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es decir, la misma &amp;lt;math&amp;gt;u_0 &amp;lt;/math&amp;gt; que antes pero esta vez tomamos como &amp;lt;math&amp;gt;u_1 &amp;lt;/math&amp;gt; su derivada respecto el espacio cambiada de signo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = (200x-100)e^{-100(x-1/2)^2} \hspace{2mm}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}cos(k\pi t)\right]\sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:64ot.png|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
&lt;br /&gt;
Podemos observar que claramente en el dibujo se muestra una onda que viaja en un solo sentido con longitud de onda &amp;lt;math&amp;gt;\lambda = 2 &amp;lt;/math&amp;gt; metros. Por tanto la velocidad es &amp;lt;math&amp;gt;c = \frac{\lambda}{T} =  \frac{2}{2} = 1 m/s &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La onda parte de &amp;lt;math&amp;gt;x = 0.5 &amp;lt;/math&amp;gt;m y se dirige hacia &amp;lt;math&amp;gt;x=1 &amp;lt;/math&amp;gt;. En &amp;lt;math&amp;gt;t = 0.5 &amp;lt;/math&amp;gt;s llega a esa frontera y allí cambia de signo y de dirección, para dirigirse hacia el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, que tarda en alcanzar &amp;lt;math&amp;gt;1 &amp;lt;/math&amp;gt;s. Por último, cuando llega a este extremo, pasa de nuevo a tomar valores positivos y toma la dirección inicial para volver a la posición de partida &amp;lt;math&amp;gt;x = 0.5 &amp;lt;/math&amp;gt;. De nuevo probando. que el periodo es de &amp;lt;math&amp;gt;2 &amp;lt;/math&amp;gt; segundos.&lt;br /&gt;
&lt;br /&gt;
Todo esto se ve mejor observando la onda desde otro ángulo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:64ot2.png|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
[[Archivo:Ejercicio41.gif|400px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all &lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
% Resumen: la idea del programa es crear una matriz de pares (tiempo,&lt;br /&gt;
% espacio) y en cada uno de esos puntos calcular la aproximación de la&lt;br /&gt;
% solución mediante un bucle for que realiza la suma de términos de la serie&lt;br /&gt;
% calculada&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla en  la que introduciremos las evaluaciones &lt;br /&gt;
evaluaciones2 = zeros(1000,100); &lt;br /&gt;
&lt;br /&gt;
% Límite temporal y vectores de tiempos y espacios&lt;br /&gt;
T = 2;&lt;br /&gt;
t = linspace(0,T,100); &lt;br /&gt;
x = linspace(0,1,100); &lt;br /&gt;
tp = linspace(0,10,1000);&lt;br /&gt;
&lt;br /&gt;
% Función de la condicion inicial&lt;br /&gt;
cond0 =@(y) exp(-100*((y-(1/2)).^2)); &lt;br /&gt;
cond1 = @(y) 200.*(y-(1/2)).*exp(-100*((y-(1/2)).^2));&lt;br /&gt;
&lt;br /&gt;
% Imponemos la condicion inicial &lt;br /&gt;
evaluaciones2(1,:) = cond0(x)';&lt;br /&gt;
&lt;br /&gt;
% En el siguiente bucle for, para cada k calculamos el coeficiente de&lt;br /&gt;
% Fourier y sumamos  el correspondiente término de la serie en cada punto de&lt;br /&gt;
% la malla. Para el cálculo de la integral que nos da el coeficiente de&lt;br /&gt;
% Fourier usamos la regla del trapecio con 1000 puntos en [0,1]&lt;br /&gt;
for k=1:100 &lt;br /&gt;
    % Puntos&lt;br /&gt;
    N=1000;  &lt;br /&gt;
    % Extremos del intervalo&lt;br /&gt;
    a=0; b=1;            &lt;br /&gt;
    h=(b-a)/N; &lt;br /&gt;
    % Partición del intervalo&lt;br /&gt;
    u=a:h:b;           &lt;br /&gt;
    % f es la funcion que queremos integrar&lt;br /&gt;
    f0 = (cond0(u).*sin(k.*pi.*u))';&lt;br /&gt;
    f1 = (cond1(u).*sin(k.*pi.*u))';&lt;br /&gt;
    % Vector de pesos&lt;br /&gt;
    w=ones(N+1,1);                 &lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
    % m es el valor de la integral&lt;br /&gt;
    m0 = h*w'*f0; &lt;br /&gt;
    m1 = h*w'*f1;&lt;br /&gt;
    % Calculo final de los coeficientes del seno &lt;br /&gt;
    coef0 = 2*m0;&lt;br /&gt;
    coef1 = 2*m1;&lt;br /&gt;
    % Sumamos los 100 primeros términos de la serie en cada punto de la&lt;br /&gt;
    % malla con los nuevos coeficientes&lt;br /&gt;
    for j =1:99&lt;br /&gt;
        for i = 2:1000&lt;br /&gt;
                evaluaciones2(i,j) = evaluaciones2(i,j) + coef0.*sin(k.*pi.*(x(j))).*cos(k.*pi.*(tp(i))) + ...&lt;br /&gt;
                (1/(k*pi)).*coef1.*sin(k.*pi.*(x(j))).*sin(k.*pi.*(tp(i)));&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear la animación y guardarla como GIF&lt;br /&gt;
% Nombre del archivo GIF&lt;br /&gt;
filename = 'Ejercicio4.gif';&lt;br /&gt;
&lt;br /&gt;
% Configuración de la animación&lt;br /&gt;
fps = 5; % Fotogramas por segundo&lt;br /&gt;
delayTime = 1 / fps; % Tiempo de retraso entre fotogramas&lt;br /&gt;
&lt;br /&gt;
for i = 1:10:1000 % Reducir el número de fotogramas&lt;br /&gt;
    figure(1);&lt;br /&gt;
    plot(x,evaluaciones2(i,:))&lt;br /&gt;
    axis([0 1 -1.2 1.2])&lt;br /&gt;
    xlabel(&amp;quot;Espacio&amp;quot;)&lt;br /&gt;
    ylabel(&amp;quot;u(x,t)&amp;quot;)&lt;br /&gt;
    title(&amp;quot;t = &amp;quot; + mat2str(tp(i)))&lt;br /&gt;
    &lt;br /&gt;
    % Guardar cada frame como imagen en formato GIF&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    im = frame2im(frame);&lt;br /&gt;
    [imind,cm] = rgb2ind(im,64); % Reducir el número de colores&lt;br /&gt;
    &lt;br /&gt;
    % Escribir en el archivo GIF&lt;br /&gt;
    if i == 1&lt;br /&gt;
        imwrite(imind,cm,filename,'gif', 'Loopcount',inf, 'DelayTime', delayTime);&lt;br /&gt;
    else&lt;br /&gt;
        imwrite(imind,cm,filename,'gif','WriteMode','append', 'DelayTime', delayTime);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En el video anterior se puede observar como tarda una unidad de tiempo en recorrer una unidad de espacio ya que el pico de la onda en t = 0 empieza en x = 0.5 y vuelve a x = 0.5 en t = 1. Sin embargo, una vez alcanzada la frontera de x = 1, la onda cambia de signo y de sentido. Este hecho vuelve a ocurrir cuando alcanza la próxima frontera x = 0, donde vuelve a tomar el signo positivo y el sentido inicial. Esto se repite cada vez que alcanza una frontera. Además, se puede observar que en t = 2, la onda vuelve a ser igual a la inicial, comprobando así que el periodo T es igual a 2.&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
===  Diferencia con la condición Neumann ===&lt;br /&gt;
Por último, veremos qué ocurre si repetimos lo anterior cambiando las condiciones Dirichlet por Neumann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_x(0,t) = u_x(1,t) = 0 &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con ello, el sistema pasa a ser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u_x(0,t)=u_x(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=e^{-100(x-1/2)^2}, \hspace{3mm} u_t(x,0)=(200x-100)e^{-100(x-1/2)^2} \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicamos de nuevo separación de las variables y el principio de superposición peor debido al cambio en las condiciones obtenemos esta solución:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}cos(k\pi t)\right]cos(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde, ahora:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \cos(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \cos(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la gráfica de la solución queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:65ot.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
En este caso, la velocidad de la onda es la misma y el desplazamiento ocurre en el mismo sentido y dirección. Lo único que cambia es que cuando la onda llega a los extremos del intervalo espacial, en vez de cambiar de signo, aumenta hasta el máximo y regresa al mismo valor con el cambio de dirección. Esto hace que en los extremos se cumpla la condición Neumann que hemos impuesto.&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} \hspace{32mm} x\in \mathbb{R}^n, t &amp;gt;0\\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
1.   En dimensión &amp;lt;math&amp;gt; n=1 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_1(x,t)=\frac{1}{2c}[H(x+ct)-H(x-ct)], &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; H(s)= \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
0 \hspace{4mm} si \hspace{2mm}s&amp;lt;0,\\&lt;br /&gt;
     &lt;br /&gt;
1 \hspace{4mm} si \hspace{2mm} s\geq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.&amp;lt;/math&amp;gt; es la función de Heaviside. &lt;br /&gt;
&lt;br /&gt;
2.   En dimensión &amp;lt;math&amp;gt; n=2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; es la función característica de la bola de centro 0 y radio &amp;lt;math&amp;gt; ct &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.   En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c |x| }, \hspace{2mm} t&amp;gt;0. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Representaciones ===&lt;br /&gt;
&lt;br /&gt;
Antes de nada, nótese que la solución fundamental es radial para todas estas dimensiones. La primera lo es puesto que &amp;lt;math&amp;gt; x\in \mathbb{R}&amp;lt;/math&amp;gt;, y las otras dos son radiales porque la variable espacial &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; aparece siempre en módulo, &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A continuación, dibujamos las dichas soluciones fundamentales:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr471.png|600px|thumb|right|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función de Heaviside&lt;br /&gt;
H = @(s) double(s &amp;gt;= 0);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K1(x,t)&lt;br /&gt;
K1 = @(x, t) (1 / (2 * c)) * (H(x + c * t) - H(x - c * t));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(-10, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K1 para cada par de valores (x, t)&lt;br /&gt;
K1_values = arrayfun(@(x_val, t_val) K1(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K1_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_1(x,t)');&lt;br /&gt;
title(['Gráfico de K_1(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como podemos ver en la expresión analítica, esta función fundamental tiene una singularidad cuando &amp;lt;math&amp;gt; c^2t^2=|x|^2 &amp;lt;/math&amp;gt;. Por ello, para poder representarla añadiremos un sumando &amp;lt;math&amp;gt; \epsilon &amp;lt;/math&amp;gt;  al denominador, esto es &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{\epsilon +2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su representación gráfica en función de la variable radial es la dada por la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr472.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función característica de la bola de centro 0 y radio ct&lt;br /&gt;
chi_B = @(x, t) double(abs(x) &amp;lt;= c * t);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K2(x,t)&lt;br /&gt;
K2 = @(x, t) (1 ./ (0.01 + 2 * pi * c * sqrt(c^2 * t.^2 - x.^2))) .* chi_B(x, t);&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K2 para cada par de valores (x, t)&lt;br /&gt;
K2_values = arrayfun(@(x_val, t_val) K2(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K2_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_2(x,t)');&lt;br /&gt;
title(['Gráfico de K_2(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, para poder hacer la representación tendremos que tomar la siguiente aproximación de la delta de Dirac:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta(s) \sim \phi _k (s) = \sqrt{\frac{1000}{\pi}e^{-1000s^2}} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así, su representación queda como sigue:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:pr473.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
a = 1000;  % Constante del exponente&lt;br /&gt;
&lt;br /&gt;
% Definir la función K3(x,t)&lt;br /&gt;
K3 = @(x, t) (sqrt((a / pi) * exp(-a * (abs(x) - c * t).^2))) ./ (4 * pi * c * abs(x));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K3 para cada par de valores (x, t)&lt;br /&gt;
K3_values = arrayfun(@(x_val, t_val) K3(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K3_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_3(x,t)');&lt;br /&gt;
title(['Gráfico de K_3(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72947</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72947"/>
				<updated>2024-05-27T11:23:20Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Otros datos iniciales más particulares para el sistema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
=== Planteamiento del problema  ===&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}\cos(k\pi t)\right]\sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \sin(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \sin(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dibujo de la solución dadas las condiciones iniciales  ===&lt;br /&gt;
Considerando  &amp;lt;math&amp;gt; u_0(x,t)= e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = 0&amp;lt;/math&amp;gt;, entonces la solución tomando los primeros  &amp;lt;math&amp;gt;50 &amp;lt;/math&amp;gt; términos de la serie es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^{50} 2 \left[\int_0^1 u_0(x) \sin(k\pi x) dx\right]cos(k\pi t) \sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y el dibujo de la solución en el intervalo de tiempo  &amp;lt;math&amp;gt; [0,2] &amp;lt;/math&amp;gt;  queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:63ot.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
Podemos observar que solución para estas condiciones iniciales es periódica en el tiempo con periodo &amp;lt;math&amp;gt; T = 2 &amp;lt;/math&amp;gt; ya que en la gráfica se repite el patrón inicial.&lt;br /&gt;
&lt;br /&gt;
Esto también se puede apreciar si repetimos el dibujo en el intervalo temporal &amp;lt;math&amp;gt; [0,4] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:63ot4.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
===  Otros datos iniciales más particulares para el sistema ===&lt;br /&gt;
Ahora, consideraremos los datos iniciales correspondientes a una onda que viaja en un sólo sentido &amp;lt;math&amp;gt;\left(u(x,t) = f(x-t)\right) &amp;lt;/math&amp;gt;. Para ello, tomamos: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = f(x), \hspace{3mm} u_1(x) = -f'(x) \hspace{2mm} con \hspace{2mm} f(x) = e^{-100(x-1/2)^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es decir, la misma &amp;lt;math&amp;gt;u_0 &amp;lt;/math&amp;gt; que antes pero esta vez tomamos como &amp;lt;math&amp;gt;u_1 &amp;lt;/math&amp;gt; su derivada respecto el espacio cambiada de signo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = (200x-100)e^{-100(x-1/2)^2} \hspace{2mm}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}cos(k\pi t)\right]\sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:64ot.png|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
&lt;br /&gt;
Podemos observar que claramente en el dibujo se muestra una onda que viaja en un solo sentido con longitud de onda &amp;lt;math&amp;gt;\lambda = 2 &amp;lt;/math&amp;gt; metros. Por tanto la velocidad es &amp;lt;math&amp;gt;c = \frac{\lambda}{T} =  \frac{2}{2} = 1 m/s &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La onda parte de &amp;lt;math&amp;gt;x = 0.5 &amp;lt;/math&amp;gt;m y se dirige hacia &amp;lt;math&amp;gt;x=1 &amp;lt;/math&amp;gt;. En &amp;lt;math&amp;gt;t = 0.5 &amp;lt;/math&amp;gt;s llega a esa frontera y allí cambia de signo y de dirección, para dirigirse hacia el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, que tarda en alcanzar &amp;lt;math&amp;gt;1 &amp;lt;/math&amp;gt;s. Por último, cuando llega a este extremo, pasa de nuevo a tomar valores positivos y toma la dirección inicial para volver a la posición de partida &amp;lt;math&amp;gt;x = 0.5 &amp;lt;/math&amp;gt;. De nuevo probando. que el periodo es de &amp;lt;math&amp;gt;2 &amp;lt;/math&amp;gt; segundos.&lt;br /&gt;
&lt;br /&gt;
Todo esto se ve mejor observando la onda desde otro ángulo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:64ot2.png|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
[[Archivo:Ejercicio41.gif|200px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all &lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
% Resumen: la idea del programa es crear una matriz de pares (tiempo,&lt;br /&gt;
% espacio) y en cada uno de esos puntos calcular la aproximación de la&lt;br /&gt;
% solución mediante un bucle for que realiza la suma de términos de la serie&lt;br /&gt;
% calculada&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla en  la que introduciremos las evaluaciones &lt;br /&gt;
evaluaciones2 = zeros(1000,100); &lt;br /&gt;
&lt;br /&gt;
% Límite temporal y vectores de tiempos y espacios&lt;br /&gt;
T = 2;&lt;br /&gt;
t = linspace(0,T,100); &lt;br /&gt;
x = linspace(0,1,100); &lt;br /&gt;
tp = linspace(0,10,1000);&lt;br /&gt;
&lt;br /&gt;
% Función de la condicion inicial&lt;br /&gt;
cond0 =@(y) exp(-100*((y-(1/2)).^2)); &lt;br /&gt;
cond1 = @(y) 200.*(y-(1/2)).*exp(-100*((y-(1/2)).^2));&lt;br /&gt;
&lt;br /&gt;
% Imponemos la condicion inicial &lt;br /&gt;
evaluaciones2(1,:) = cond0(x)';&lt;br /&gt;
&lt;br /&gt;
% En el siguiente bucle for, para cada k calculamos el coeficiente de&lt;br /&gt;
% Fourier y sumamos  el correspondiente término de la serie en cada punto de&lt;br /&gt;
% la malla. Para el cálculo de la integral que nos da el coeficiente de&lt;br /&gt;
% Fourier usamos la regla del trapecio con 1000 puntos en [0,1]&lt;br /&gt;
for k=1:100 &lt;br /&gt;
    % Puntos&lt;br /&gt;
    N=1000;  &lt;br /&gt;
    % Extremos del intervalo&lt;br /&gt;
    a=0; b=1;            &lt;br /&gt;
    h=(b-a)/N; &lt;br /&gt;
    % Partición del intervalo&lt;br /&gt;
    u=a:h:b;           &lt;br /&gt;
    % f es la funcion que queremos integrar&lt;br /&gt;
    f0 = (cond0(u).*sin(k.*pi.*u))';&lt;br /&gt;
    f1 = (cond1(u).*sin(k.*pi.*u))';&lt;br /&gt;
    % Vector de pesos&lt;br /&gt;
    w=ones(N+1,1);                 &lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
    % m es el valor de la integral&lt;br /&gt;
    m0 = h*w'*f0; &lt;br /&gt;
    m1 = h*w'*f1;&lt;br /&gt;
    % Calculo final de los coeficientes del seno &lt;br /&gt;
    coef0 = 2*m0;&lt;br /&gt;
    coef1 = 2*m1;&lt;br /&gt;
    % Sumamos los 100 primeros términos de la serie en cada punto de la&lt;br /&gt;
    % malla con los nuevos coeficientes&lt;br /&gt;
    for j =1:99&lt;br /&gt;
        for i = 2:1000&lt;br /&gt;
                evaluaciones2(i,j) = evaluaciones2(i,j) + coef0.*sin(k.*pi.*(x(j))).*cos(k.*pi.*(tp(i))) + ...&lt;br /&gt;
                (1/(k*pi)).*coef1.*sin(k.*pi.*(x(j))).*sin(k.*pi.*(tp(i)));&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear la animación y guardarla como GIF&lt;br /&gt;
% Nombre del archivo GIF&lt;br /&gt;
filename = 'Ejercicio4.gif';&lt;br /&gt;
&lt;br /&gt;
% Configuración de la animación&lt;br /&gt;
fps = 5; % Fotogramas por segundo&lt;br /&gt;
delayTime = 1 / fps; % Tiempo de retraso entre fotogramas&lt;br /&gt;
&lt;br /&gt;
for i = 1:10:1000 % Reducir el número de fotogramas&lt;br /&gt;
    figure(1);&lt;br /&gt;
    plot(x,evaluaciones2(i,:))&lt;br /&gt;
    axis([0 1 -1.2 1.2])&lt;br /&gt;
    xlabel(&amp;quot;Espacio&amp;quot;)&lt;br /&gt;
    ylabel(&amp;quot;u(x,t)&amp;quot;)&lt;br /&gt;
    title(&amp;quot;t = &amp;quot; + mat2str(tp(i)))&lt;br /&gt;
    &lt;br /&gt;
    % Guardar cada frame como imagen en formato GIF&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    im = frame2im(frame);&lt;br /&gt;
    [imind,cm] = rgb2ind(im,64); % Reducir el número de colores&lt;br /&gt;
    &lt;br /&gt;
    % Escribir en el archivo GIF&lt;br /&gt;
    if i == 1&lt;br /&gt;
        imwrite(imind,cm,filename,'gif', 'Loopcount',inf, 'DelayTime', delayTime);&lt;br /&gt;
    else&lt;br /&gt;
        imwrite(imind,cm,filename,'gif','WriteMode','append', 'DelayTime', delayTime);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En el video anterior se puede observar como tarda una unidad de tiempo en recorrer una unidad de espacio ya que el pico de la onda en t = 0 empieza en x = 0.5 y vuelve a x = 0.5 en t = 1. Sin embargo, una vez alcanzada la frontera de x = 1, la onda cambia de signo y de sentido. Este hecho vuelve a ocurrir cuando alcanza la próxima frontera x = 0, donde vuelve a tomar el signo positivo y el sentido inicial. Esto se repite cada vez que alcanza una frontera. Además, se puede observar que en t = 2, la onda vuelve a ser igual a la inicial, comprobando así que el periodo T es igual a 2.&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
===  Diferencia con la condición Neumann ===&lt;br /&gt;
Por último, veremos qué ocurre si repetimos lo anterior cambiando las condiciones Dirichlet por Neumann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_x(0,t) = u_x(1,t) = 0 &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con ello, el sistema pasa a ser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u_x(0,t)=u_x(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=e^{-100(x-1/2)^2}, \hspace{3mm} u_t(x,0)=(200x-100)e^{-100(x-1/2)^2} \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicamos de nuevo separación de las variables y el principio de superposición peor debido al cambio en las condiciones obtenemos esta solución:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}cos(k\pi t)\right]cos(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde, ahora:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \cos(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \cos(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la gráfica de la solución queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:65ot.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
En este caso, la velocidad de la onda es la misma y el desplazamiento ocurre en el mismo sentido y dirección. Lo único que cambia es que cuando la onda llega a los extremos del intervalo espacial, en vez de cambiar de signo, aumenta hasta el máximo y regresa al mismo valor con el cambio de dirección. Esto hace que en los extremos se cumpla la condición Neumann que hemos impuesto.&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} \hspace{32mm} x\in \mathbb{R}^n, t &amp;gt;0\\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
1.   En dimensión &amp;lt;math&amp;gt; n=1 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_1(x,t)=\frac{1}{2c}[H(x+ct)-H(x-ct)], &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; H(s)= \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
0 \hspace{4mm} si \hspace{2mm}s&amp;lt;0,\\&lt;br /&gt;
     &lt;br /&gt;
1 \hspace{4mm} si \hspace{2mm} s\geq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.&amp;lt;/math&amp;gt; es la función de Heaviside. &lt;br /&gt;
&lt;br /&gt;
2.   En dimensión &amp;lt;math&amp;gt; n=2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; es la función característica de la bola de centro 0 y radio &amp;lt;math&amp;gt; ct &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.   En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c |x| }, \hspace{2mm} t&amp;gt;0. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Representaciones ===&lt;br /&gt;
&lt;br /&gt;
Antes de nada, nótese que la solución fundamental es radial para todas estas dimensiones. La primera lo es puesto que &amp;lt;math&amp;gt; x\in \mathbb{R}&amp;lt;/math&amp;gt;, y las otras dos son radiales porque la variable espacial &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; aparece siempre en módulo, &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A continuación, dibujamos las dichas soluciones fundamentales:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr471.png|600px|thumb|right|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función de Heaviside&lt;br /&gt;
H = @(s) double(s &amp;gt;= 0);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K1(x,t)&lt;br /&gt;
K1 = @(x, t) (1 / (2 * c)) * (H(x + c * t) - H(x - c * t));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(-10, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K1 para cada par de valores (x, t)&lt;br /&gt;
K1_values = arrayfun(@(x_val, t_val) K1(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K1_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_1(x,t)');&lt;br /&gt;
title(['Gráfico de K_1(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como podemos ver en la expresión analítica, esta función fundamental tiene una singularidad cuando &amp;lt;math&amp;gt; c^2t^2=|x|^2 &amp;lt;/math&amp;gt;. Por ello, para poder representarla añadiremos un sumando &amp;lt;math&amp;gt; \epsilon &amp;lt;/math&amp;gt;  al denominador, esto es &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{\epsilon +2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su representación gráfica en función de la variable radial es la dada por la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr472.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función característica de la bola de centro 0 y radio ct&lt;br /&gt;
chi_B = @(x, t) double(abs(x) &amp;lt;= c * t);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K2(x,t)&lt;br /&gt;
K2 = @(x, t) (1 ./ (0.01 + 2 * pi * c * sqrt(c^2 * t.^2 - x.^2))) .* chi_B(x, t);&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K2 para cada par de valores (x, t)&lt;br /&gt;
K2_values = arrayfun(@(x_val, t_val) K2(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K2_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_2(x,t)');&lt;br /&gt;
title(['Gráfico de K_2(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, para poder hacer la representación tendremos que tomar la siguiente aproximación de la delta de Dirac:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta(s) \sim \phi _k (s) = \sqrt{\frac{1000}{\pi}e^{-1000s^2}} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así, su representación queda como sigue:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:pr473.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
a = 1000;  % Constante del exponente&lt;br /&gt;
&lt;br /&gt;
% Definir la función K3(x,t)&lt;br /&gt;
K3 = @(x, t) (sqrt((a / pi) * exp(-a * (abs(x) - c * t).^2))) ./ (4 * pi * c * abs(x));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K3 para cada par de valores (x, t)&lt;br /&gt;
K3_values = arrayfun(@(x_val, t_val) K3(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K3_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_3(x,t)');&lt;br /&gt;
title(['Gráfico de K_3(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio41.gif&amp;diff=72946</id>
		<title>Archivo:Ejercicio41.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio41.gif&amp;diff=72946"/>
				<updated>2024-05-27T11:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72937</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72937"/>
				<updated>2024-05-27T10:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Otros datos iniciales más particulares para el sistema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
=== Planteamiento del problema  ===&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}\cos(k\pi t)\right]\sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \sin(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \sin(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dibujo de la solución dadas las condiciones iniciales  ===&lt;br /&gt;
Considerando  &amp;lt;math&amp;gt; u_0(x,t)= e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = 0&amp;lt;/math&amp;gt;, entonces la solución tomando los primeros  &amp;lt;math&amp;gt;50 &amp;lt;/math&amp;gt; términos de la serie es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^{50} 2 \left[\int_0^1 u_0(x) \sin(k\pi x) dx\right]cos(k\pi t) \sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y el dibujo de la solución en el intervalo de tiempo  &amp;lt;math&amp;gt; [0,2] &amp;lt;/math&amp;gt;  queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:63ot.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
Podemos observar que solución para estas condiciones iniciales es periódica en el tiempo con periodo &amp;lt;math&amp;gt; T = 2 &amp;lt;/math&amp;gt; ya que en la gráfica se repite el patrón inicial.&lt;br /&gt;
&lt;br /&gt;
Esto también se puede apreciar si repetimos el dibujo en el intervalo temporal &amp;lt;math&amp;gt; [0,4] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:63ot4.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
===  Otros datos iniciales más particulares para el sistema ===&lt;br /&gt;
Ahora, consideraremos los datos iniciales correspondientes a una onda que viaja en un sólo sentido &amp;lt;math&amp;gt;\left(u(x,t) = f(x-t)\right) &amp;lt;/math&amp;gt;. Para ello, tomamos: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = f(x), \hspace{3mm} u_1(x) = -f'(x) \hspace{2mm} con \hspace{2mm} f(x) = e^{-100(x-1/2)^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es decir, la misma &amp;lt;math&amp;gt;u_0 &amp;lt;/math&amp;gt; que antes pero esta vez tomamos como &amp;lt;math&amp;gt;u_1 &amp;lt;/math&amp;gt; su derivada respecto el espacio cambiada de signo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = (200x-100)e^{-100(x-1/2)^2} \hspace{2mm}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}cos(k\pi t)\right]\sin(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:64ot.png|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
&lt;br /&gt;
Podemos observar que claramente en el dibujo se muestra una onda que viaja en un solo sentido con longitud de onda &amp;lt;math&amp;gt;\lambda = 2 &amp;lt;/math&amp;gt; metros. Por tanto la velocidad es &amp;lt;math&amp;gt;c = \frac{\lambda}{T} =  \frac{2}{2} = 1 m/s &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La onda parte de &amp;lt;math&amp;gt;x = 0.5 &amp;lt;/math&amp;gt;m y se dirige hacia &amp;lt;math&amp;gt;x=1 &amp;lt;/math&amp;gt;. En &amp;lt;math&amp;gt;t = 0.5 &amp;lt;/math&amp;gt;s llega a esa frontera y allí cambia de signo y de dirección, para dirigirse hacia el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, que tarda en alcanzar &amp;lt;math&amp;gt;1 &amp;lt;/math&amp;gt;s. Por último, cuando llega a este extremo, pasa de nuevo a tomar valores positivos y toma la dirección inicial para volver a la posición de partida &amp;lt;math&amp;gt;x = 0.5 &amp;lt;/math&amp;gt;. De nuevo probando. que el periodo es de &amp;lt;math&amp;gt;2 &amp;lt;/math&amp;gt; segundos.&lt;br /&gt;
&lt;br /&gt;
Todo esto se ve mejor observando la onda desde otro ángulo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:64ot2.png|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
[[Archivo:Ejercicio44.gif|600px|thumb|center|Onda que viaja en un solo sentido]]&lt;br /&gt;
&lt;br /&gt;
En el video anterior se puede observar como tarda una unidad de tiempo en recorrer una unidad de espacio ya que el pico de la onda en t = 0 empieza en x = 0.5 y vuelve a x = 0.5 en t = 1. Sin embargo, una vez alcanzada la frontera de x = 1, la onda cambia de signo y de sentido. Este hecho vuelve a ocurrir cuando alcanza la próxima frontera x = 0, donde vuelve a tomar el signo positivo y el sentido inicial. Esto se repite cada vez que alcanza una frontera. Además, se puede observar que en t = 2, la onda vuelve a ser igual a la inicial, comprobando así que el periodo T es igual a 2.&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
===  Diferencia con la condición Neumann ===&lt;br /&gt;
Por último, veremos qué ocurre si repetimos lo anterior cambiando las condiciones Dirichlet por Neumann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_x(0,t) = u_x(1,t) = 0 &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con ello, el sistema pasa a ser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u_x(0,t)=u_x(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=e^{-100(x-1/2)^2}, \hspace{3mm} u_t(x,0)=(200x-100)e^{-100(x-1/2)^2} \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicamos de nuevo separación de las variables y el principio de superposición peor debido al cambio en las condiciones obtenemos esta solución:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}\sin(k\pi t)+u_{0,k}cos(k\pi t)\right]cos(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde, ahora:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \cos(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \cos(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la gráfica de la solución queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:65ot.png|600px|thumb|center|Solución ecuación de ondas]]&lt;br /&gt;
&lt;br /&gt;
En este caso, la velocidad de la onda es la misma y el desplazamiento ocurre en el mismo sentido y dirección. Lo único que cambia es que cuando la onda llega a los extremos del intervalo espacial, en vez de cambiar de signo, aumenta hasta el máximo y regresa al mismo valor con el cambio de dirección. Esto hace que en los extremos se cumpla la condición Neumann que hemos impuesto.&lt;br /&gt;
&lt;br /&gt;
==== Código ====&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} \hspace{32mm} x\in \mathbb{R}^n, t &amp;gt;0\\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
1.   En dimensión &amp;lt;math&amp;gt; n=1 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_1(x,t)=\frac{1}{2c}[H(x+ct)-H(x-ct)], &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; H(s)= \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
0 \hspace{4mm} si \hspace{2mm}s&amp;lt;0,\\&lt;br /&gt;
     &lt;br /&gt;
1 \hspace{4mm} si \hspace{2mm} s\geq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.&amp;lt;/math&amp;gt; es la función de Heaviside. &lt;br /&gt;
&lt;br /&gt;
2.   En dimensión &amp;lt;math&amp;gt; n=2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; es la función característica de la bola de centro 0 y radio &amp;lt;math&amp;gt; ct &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.   En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c |x| }, \hspace{2mm} t&amp;gt;0. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Representaciones ===&lt;br /&gt;
&lt;br /&gt;
Antes de nada, nótese que la solución fundamental es radial para todas estas dimensiones. La primera lo es puesto que &amp;lt;math&amp;gt; x\in \mathbb{R}&amp;lt;/math&amp;gt;, y las otras dos son radiales porque la variable espacial &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; aparece siempre en módulo, &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A continuación, dibujamos las dichas soluciones fundamentales:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr471.png|600px|thumb|right|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función de Heaviside&lt;br /&gt;
H = @(s) double(s &amp;gt;= 0);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K1(x,t)&lt;br /&gt;
K1 = @(x, t) (1 / (2 * c)) * (H(x + c * t) - H(x - c * t));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(-10, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K1 para cada par de valores (x, t)&lt;br /&gt;
K1_values = arrayfun(@(x_val, t_val) K1(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K1_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_1(x,t)');&lt;br /&gt;
title(['Gráfico de K_1(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como podemos ver en la expresión analítica, esta función fundamental tiene una singularidad cuando &amp;lt;math&amp;gt; c^2t^2=|x|^2 &amp;lt;/math&amp;gt;. Por ello, para poder representarla añadiremos un sumando &amp;lt;math&amp;gt; \epsilon &amp;lt;/math&amp;gt;  al denominador, esto es &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{\epsilon +2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su representación gráfica en función de la variable radial es la dada por la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr472.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función característica de la bola de centro 0 y radio ct&lt;br /&gt;
chi_B = @(x, t) double(abs(x) &amp;lt;= c * t);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K2(x,t)&lt;br /&gt;
K2 = @(x, t) (1 ./ (0.01 + 2 * pi * c * sqrt(c^2 * t.^2 - x.^2))) .* chi_B(x, t);&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K2 para cada par de valores (x, t)&lt;br /&gt;
K2_values = arrayfun(@(x_val, t_val) K2(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K2_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_2(x,t)');&lt;br /&gt;
title(['Gráfico de K_2(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, para poder hacer la representación tendremos que tomar la siguiente aproximación de la delta de Dirac:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta(s) \sim \phi _k (s) = \sqrt{\frac{1000}{\pi}e^{-1000s^2}} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así, su representación queda como sigue:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:pr473.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
a = 1000;  % Constante del exponente&lt;br /&gt;
&lt;br /&gt;
% Definir la función K3(x,t)&lt;br /&gt;
K3 = @(x, t) (sqrt((a / pi) * exp(-a * (abs(x) - c * t).^2))) ./ (4 * pi * c * abs(x));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K3 para cada par de valores (x, t)&lt;br /&gt;
K3_values = arrayfun(@(x_val, t_val) K3(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K3_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_3(x,t)');&lt;br /&gt;
title(['Gráfico de K_3(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio44.gif&amp;diff=72932</id>
		<title>Archivo:Ejercicio44.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio44.gif&amp;diff=72932"/>
				<updated>2024-05-27T10:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio4.gif&amp;diff=72893</id>
		<title>Archivo:Ejercicio4.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio4.gif&amp;diff=72893"/>
				<updated>2024-05-27T10:00:48Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio4.avi&amp;diff=72891</id>
		<title>Archivo:Ejercicio4.avi</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio4.avi&amp;diff=72891"/>
				<updated>2024-05-27T09:59:31Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Pr473.png&amp;diff=72825</id>
		<title>Archivo:Pr473.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Pr473.png&amp;diff=72825"/>
				<updated>2024-05-26T20:56:09Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72824</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72824"/>
				<updated>2024-05-26T20:54:39Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de ondas II */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
====  Planteamiento del problema  ====&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)\right]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \sin(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \sin(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====  Dibujo de la solución dadas las condiciones iniciales  ====&lt;br /&gt;
Considerando  &amp;lt;math&amp;gt; u_0(x,t)= e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = 0&amp;lt;/math&amp;gt;, entonces la solución tomando los primeros  &amp;lt;math&amp;gt;50 &amp;lt;/math&amp;gt; términos de la serie es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^{50} 2 \left[\int_0^1 u_0(x) \sin(k\pi x) dx\right]cos(k\pi t) sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y el dibujo de la solución en el intervalo de tiempo  &amp;lt;math&amp;gt; [0,2] &amp;lt;/math&amp;gt;  queda así:&lt;br /&gt;
&lt;br /&gt;
'''DIBUJO CON EJES BUENOS'''&lt;br /&gt;
&lt;br /&gt;
La solución para estas condiciones iniciales es periódica en el tiempo: &lt;br /&gt;
&lt;br /&gt;
'''COMPROBACIÓN'''&lt;br /&gt;
&lt;br /&gt;
====  Otros datos iniciales más particulares para el sistema ====&lt;br /&gt;
Ahora, consideraremos los datos iniciales correspondientes a una onda que viaja en un sólo sentido &amp;lt;math&amp;gt;\left(u(x,t) = f(x-t)\right) &amp;lt;/math&amp;gt;. Para ello, tomamos: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = f(x), \hspace{3mm} u_1(x) = -f'(x) \hspace{2mm} con \hspace{2mm} f(x) = e^{-100(x-1/2)^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es decir, la misma &amp;lt;math&amp;gt;u_0 &amp;lt;/math&amp;gt; que antes pero esta vez tomamos como &amp;lt;math&amp;gt;u_1 &amp;lt;/math&amp;gt; su derivada respecto el espacio cambiada de signo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = (200x-100)e^{-100(x-1/2)^2} \hspace{2mm}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)\right]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMPROBAR QUE EL PERFIL DE LA SOLUCIÓN VIAJA CON VELOCIDAD C=1 Y OBSERVAR QUÉ OCURRE EN LA FRONTERA'''&lt;br /&gt;
&lt;br /&gt;
====  Diferencia con la condición Neumann ====&lt;br /&gt;
Por último, veremos qué ocurre si repetimos lo anterior cambiando las condiciones Dirichlet por Neumann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_x(0,t) = u_x(1,t) = 0 &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} t&amp;gt; 0, x\in \mathbb{R}^n, \\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
1.   En dimensión &amp;lt;math&amp;gt; n=1 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_1(x,t)=\frac{1}{2c}[H(x+ct)-H(x-ct)], &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; H(s)= \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
0 \hspace{4mm} si \hspace{2mm}s&amp;lt;0,\\&lt;br /&gt;
     &lt;br /&gt;
1 \hspace{4mm} si \hspace{2mm} s\geq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.&amp;lt;/math&amp;gt; es la función de Heaviside. &lt;br /&gt;
&lt;br /&gt;
2.   En dimensión &amp;lt;math&amp;gt; n=2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; es la función característica de la bola de centro 0 y radio &amp;lt;math&amp;gt; ct &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.   En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c |x| }, \hspace{2mm} t&amp;gt;0. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Representaciones ===&lt;br /&gt;
&lt;br /&gt;
Antes de nada, nótese que la solución fundamental es radial para todas estas dimensiones. La primera lo es puesto que &amp;lt;math&amp;gt; x\in \mathbb{R}&amp;lt;/math&amp;gt;, y las otras dos son radiales por que la variable espacial &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; aparece siempre en módulo, &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A continuación, dibujamos las dichas soluciones fundamentales:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr471.png|600px|thumb|right|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función de Heaviside&lt;br /&gt;
H = @(s) double(s &amp;gt;= 0);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K1(x,t)&lt;br /&gt;
K1 = @(x, t) (1 / (2 * c)) * (H(x + c * t) - H(x - c * t));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(-10, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K1 para cada par de valores (x, t)&lt;br /&gt;
K1_values = arrayfun(@(x_val, t_val) K1(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K1_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_1(x,t)');&lt;br /&gt;
title(['Gráfico de K_1(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como podemos ver en la expresión analítica, esta función fundamental tiene una singularidad cuando &amp;lt;math&amp;gt; c^2t^2=|x|^2 &amp;lt;/math&amp;gt;. Por ello, para poder representarla añadiremos un sumando &amp;lt;math&amp;gt; \epsilon &amp;lt;/math&amp;gt;  al denominador, esto es &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{\epsilon +2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su representación gráfica en función de la variable radial es la dada por la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr472.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función característica de la bola de centro 0 y radio ct&lt;br /&gt;
chi_B = @(x, t) double(abs(x) &amp;lt;= c * t);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K2(x,t)&lt;br /&gt;
K2 = @(x, t) (1 ./ (0.01 + 2 * pi * c * sqrt(c^2 * t.^2 - x.^2))) .* chi_B(x, t);&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K2 para cada par de valores (x, t)&lt;br /&gt;
K2_values = arrayfun(@(x_val, t_val) K2(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K2_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_2(x,t)');&lt;br /&gt;
title(['Gráfico de K_2(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, para poder hacer la representación tendremos que tomar la siguiente aproximación de la delta de Dirac:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta(s) \sim \phi _k (s) = \sqrt{\frac{1000}{\pi}e^{-1000s^2}} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así, su representación queda como sigue:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:pr473.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
a = 1000;  % Constante del exponente&lt;br /&gt;
&lt;br /&gt;
% Definir la función K3(x,t)&lt;br /&gt;
K3 = @(x, t) (sqrt((a / pi) * exp(-a * (abs(x) - c * t).^2))) ./ (4 * pi * c * abs(x));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K3 para cada par de valores (x, t)&lt;br /&gt;
K3_values = arrayfun(@(x_val, t_val) K3(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K3_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_3(x,t)');&lt;br /&gt;
title(['Gráfico de K_3(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72821</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72821"/>
				<updated>2024-05-26T20:22:12Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de ondas II */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
====  Planteamiento del problema  ====&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)\right]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{1,k} = 2 \int_0^1 u_1(x) \sin(k\pi x) dx &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_{0,k} = 2 \int_0^1 u_0(x) \sin(k\pi x) dx&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====  Dibujo de la solución dadas las condiciones iniciales  ====&lt;br /&gt;
Considerando  &amp;lt;math&amp;gt; u_0(x,t)= e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = 0&amp;lt;/math&amp;gt;, entonces la solución tomando los primeros  &amp;lt;math&amp;gt;50 &amp;lt;/math&amp;gt; términos de la serie es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^{50} 2 \left[\int_0^1 u_0(x) \sin(k\pi x) dx\right]cos(k\pi t) sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y el dibujo de la solución en el intervalo de tiempo  &amp;lt;math&amp;gt; [0,2] &amp;lt;/math&amp;gt;  queda así:&lt;br /&gt;
&lt;br /&gt;
'''DIBUJO CON EJES BUENOS'''&lt;br /&gt;
&lt;br /&gt;
La solución para estas condiciones iniciales es periódica en el tiempo: &lt;br /&gt;
&lt;br /&gt;
'''COMPROBACIÓN'''&lt;br /&gt;
&lt;br /&gt;
====  Otros datos iniciales más particulares para el sistema ====&lt;br /&gt;
Ahora, consideraremos los datos iniciales correspondientes a una onda que viaja en un sólo sentido &amp;lt;math&amp;gt;\left(u(x,t) = f(x-t)\right) &amp;lt;/math&amp;gt;. Para ello, tomamos: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = f(x), \hspace{3mm} u_1(x) = -f'(x) \hspace{2mm} con \hspace{2mm} f(x) = e^{-100(x-1/2)^2} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es decir, la misma &amp;lt;math&amp;gt;u_0 &amp;lt;/math&amp;gt; que antes pero esta vez tomamos como &amp;lt;math&amp;gt;u_1 &amp;lt;/math&amp;gt; su derivada respecto el espacio cambiada de signo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_0(x) = e^{-100(x-1/2)^2}, \hspace{3mm} u_1(x) = (200x-100)e^{-100(x-1/2)^2} \hspace{2mm}  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty \left[\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)\right]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMPROBAR QUE EL PERFIL DE LA SOLUCIÓN VIAJA CON VELOCIDAD C=1 Y OBSERVAR QUÉ OCURRE EN LA FRONTERA'''&lt;br /&gt;
&lt;br /&gt;
====  Diferencia con la condición Neumann ====&lt;br /&gt;
Por último, veremos qué ocurre si repetimos lo anterior cambiando las condiciones Dirichlet por Neumann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u_x(0,t) = u_x(1,t) = 0 &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} t&amp;gt; 0, x\in \mathbb{R}^n, \\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
1.   En dimensión &amp;lt;math&amp;gt; n=1 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_1(x,t)=\frac{1}{2c}[H(x+ct)-H(x-ct)], &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; H(s)= \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
0 \hspace{4mm} si \hspace{2mm}s&amp;lt;0,\\&lt;br /&gt;
     &lt;br /&gt;
1 \hspace{4mm} si \hspace{2mm} s\geq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.&amp;lt;/math&amp;gt; es la función de Heaviside.&lt;br /&gt;
&lt;br /&gt;
2.   En dimensión &amp;lt;math&amp;gt; n=2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; es la función característica de la bola de centro 0 y radio &amp;lt;math&amp;gt; ct &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.   En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c |x| }, \hspace{2mm} t&amp;gt;0. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Representaciones ===&lt;br /&gt;
&lt;br /&gt;
Antes de nada, nótese que la solución fundamental es radial para todas estas dimensiones. La primera lo es puesto que &amp;lt;math&amp;gt; x\in \mathbb{R}&amp;lt;/math&amp;gt;, y las otras dos son radiales por que la variable espacial &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; aparece siempre en módulo, &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A continuación, dibujamos las dichas soluciones fundamentales:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr471.png|600px|thumb|right|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función de Heaviside&lt;br /&gt;
H = @(s) double(s &amp;gt;= 0);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K1(x,t)&lt;br /&gt;
K1 = @(x, t) (1 / (2 * c)) * (H(x + c * t) - H(x - c * t));&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(-10, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 10, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K1 para cada par de valores (x, t)&lt;br /&gt;
K1_values = arrayfun(@(x_val, t_val) K1(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K1_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_1(x,t)');&lt;br /&gt;
title(['Gráfico de K_1(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como podemos ver en la expresión analítica, esta función fundamental tiene una singularidad cuando &amp;lt;math&amp;gt; c^2t^2=|x|^2 &amp;lt;/math&amp;gt;. Por ello, para poder representarla añadiremos un sumando &amp;lt;math&amp;gt; \epsilon &amp;lt;/math&amp;gt;  al denominador, esto es &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{\epsilon +2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su representación gráfica en función de la variable radial es la dada por la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pr472.png|600px|thumb|left|Solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Parámetros&lt;br /&gt;
c = 1;  % Puedes ajustar el valor de c según lo necesites&lt;br /&gt;
&lt;br /&gt;
% Definir la función característica de la bola de centro 0 y radio ct&lt;br /&gt;
chi_B = @(x, t) double(abs(x) &amp;lt;= c * t);&lt;br /&gt;
&lt;br /&gt;
% Definir la función K2(x,t)&lt;br /&gt;
K2 = @(x, t) (1 ./ (0.01 + 2 * pi * c * sqrt(c^2 * t.^2 - x.^2))) .* chi_B(x, t);&lt;br /&gt;
&lt;br /&gt;
% Rango de valores para x y t&lt;br /&gt;
x = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites&lt;br /&gt;
t = linspace(0, 1, 1000);  % Ajusta el rango y la resolución según lo necesites, evitando t=0 para evitar división por cero&lt;br /&gt;
&lt;br /&gt;
% Crear mallas para x y t&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
&lt;br /&gt;
% Calcular K2 para cada par de valores (x, t)&lt;br /&gt;
K2_values = arrayfun(@(x_val, t_val) K2(x_val, t_val), X, T);&lt;br /&gt;
&lt;br /&gt;
% Dibujar la función&lt;br /&gt;
figure;&lt;br /&gt;
surf(X, T, K2_values, 'EdgeColor', 'none');&lt;br /&gt;
&lt;br /&gt;
% Añadir más color&lt;br /&gt;
colormap(jet);  % Utilizar el colormap 'jet' para colores más vibrantes&lt;br /&gt;
colorbar;&lt;br /&gt;
shading interp;  % Interpolación de colores para suavizar la apariencia&lt;br /&gt;
&lt;br /&gt;
% Añadir etiquetas y título&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('K_2(x,t)');&lt;br /&gt;
title(['Gráfico de K_2(x,t) para c = ', num2str(c)]);&lt;br /&gt;
&lt;br /&gt;
% Añadir rejilla y ajustar la vista&lt;br /&gt;
grid on;&lt;br /&gt;
view(3);  % Vista en 3D&lt;br /&gt;
&lt;br /&gt;
% Ajustar propiedades de la figura&lt;br /&gt;
set(gca, 'FontSize', 12);  % Tamaño de fuente más grande para mejorar la legibilidad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Pr472.png&amp;diff=72820</id>
		<title>Archivo:Pr472.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Pr472.png&amp;diff=72820"/>
				<updated>2024-05-26T20:21:39Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Pr471.png&amp;diff=72819</id>
		<title>Archivo:Pr471.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Pr471.png&amp;diff=72819"/>
				<updated>2024-05-26T19:51:21Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72545</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72545"/>
				<updated>2024-05-25T18:28:59Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de ondas II */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
====  Planteamiento del problema  ====&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales.&lt;br /&gt;
respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty [\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} t&amp;gt; 0, x\in \mathbb{R}^n, \\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
1.   En dimensión &amp;lt;math&amp;gt; n=1 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_1(x,t)=\frac{1}{2c}[H(x+ct)-H(x-ct)], &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; H(s)= \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
0 \hspace{4mm} si \hspace{2mm}x&amp;lt;0,\\&lt;br /&gt;
     &lt;br /&gt;
1 \hspace{4mm} si \hspace{2mm} x\geq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.&amp;lt;/math&amp;gt; es la función de Heaviside.&lt;br /&gt;
&lt;br /&gt;
2.   En dimensión &amp;lt;math&amp;gt; n=2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c\sqrt{c^2t^2-|x|^2}}\chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \chi_{B(0,ct)}(x), &amp;lt;/math&amp;gt; es la función característica de la bola de centro 0 y radio &amp;lt;math&amp;gt; ct &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3.   En dimensión &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c |x| }, \hspace{2mm} t&amp;gt;0. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72473</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72473"/>
				<updated>2024-05-25T16:02:02Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de ondas II */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
====  Planteamiento del problema  ====&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales.&lt;br /&gt;
respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty [\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} t&amp;gt; 0, x\in \mathbb{R}^n, \\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \delta (x) &amp;lt;/math&amp;gt; es la delta de Dirac. Formalmente, se define como el siguiente límite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \delta (x) = \lim_{r\to 0} \frac{1}{|B(0,r)|}\chi_{B(0,r)}(x) \sim  \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
\infty \hspace{4mm} x=0,\\&lt;br /&gt;
     &lt;br /&gt;
0 \hspace{4mm} x\neq 0,\\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right.   &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; \chi_{B(0,r)}(x) &amp;lt;/math&amp;gt; es la función característica de la bola centrada en  &amp;lt;math&amp;gt; 0 &amp;lt;/math&amp;gt; de radio &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; |B(0,r)| &amp;lt;/math&amp;gt; es el volumen de la bola.&lt;br /&gt;
&lt;br /&gt;
Su expresión es:&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72470</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72470"/>
				<updated>2024-05-25T15:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Ondas Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas I  ==&lt;br /&gt;
&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
====  Planteamiento del problema  ====&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales.&lt;br /&gt;
respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=\sum_{k=1}^\infty [\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de ondas II  ==&lt;br /&gt;
&lt;br /&gt;
En este apartado dibujaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, lo que nos servirá para interpretar el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
La solución fundamental es la solución que se obtiene al dar un impulso inicial muy localizado en &amp;lt;math&amp;gt; x=0 &amp;lt;/math&amp;gt;. Matemáticamente resuelve el sistema &lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-c^2\Delta u=0, \hspace{6mm} t&amp;gt; 0, x\in \mathbb{R}^n, \\&lt;br /&gt;
     &lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=\delta (x) \hspace{6mm} x\in \mathbb{R}^n . \\&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72469</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72469"/>
				<updated>2024-05-25T14:54:47Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&amp;lt;math&amp;gt; &amp;lt;/math&amp;gt;&lt;br /&gt;
La idea principal de este artículo será dibujar diferentes soluciones de la ecuación&lt;br /&gt;
de ondas en una dimensión. Para ello, nos basaremos en el enunciado descrito a continuación.&lt;br /&gt;
&lt;br /&gt;
==  Planteamiento del problema  ==&lt;br /&gt;
&lt;br /&gt;
Se considera una cuerda vibrante que ocupa el intervalo &amp;lt;math&amp;gt; [0, 1] &amp;lt;/math&amp;gt; con densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión&lt;br /&gt;
&amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; constante de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt; . Supondremos además que la&lt;br /&gt;
cuerda está fija en los extremos. Llamaremos &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt; su posición e impulso iniciales.&lt;br /&gt;
respectivamente.&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos, será escribir el sistema de EDPS que modeliza el comportamiento de los desplazamiento transversales de la cuerda. Esto es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \left\{&lt;br /&gt;
	       \begin{array}{ll}&lt;br /&gt;
&lt;br /&gt;
      u_{tt}-u_{xx}=0, \hspace{6mm} t&amp;gt; 0, x\in [0,1], \\&lt;br /&gt;
      u(0,t)=u(1,t)=0, \hspace{6mm} t&amp;gt;0, \\&lt;br /&gt;
      u(x,0)=u_0(x), \hspace{3mm} u_t(x,0)=u_1(x) \hspace{6mm} x\in [0,1]. \\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		 &lt;br /&gt;
	       \end{array}&lt;br /&gt;
        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución encontrada gracias al método de separación de las variables, el principio de superposición y las condiciones iniciales es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x,t)=sum_{k=1}^\infty [\frac{1}{k\pi}u_{1,k}sen(k\pi t)+u_{0,k}cos(k\pi t)]sen(k\pi x) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72468</id>
		<title>Ecuación de ondas. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas._Otelo,_Yan_y_Mika&amp;diff=72468"/>
				<updated>2024-05-25T14:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: Página creada con «{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | EDP|2023-24 | Miguel Cazorla Pedraza  Otelo Gallego Ayala  Yan Wang}}   ==  Int...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack para bolas de distintos radios y en dimensión 3. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71655</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71655"/>
				<updated>2024-04-19T18:43:32Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de Poisson en  \mathbb{R}^2 . */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack para bolas de distintos radios y en dimensión 3. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:41ot2.png|600px|thumb|center|Solución discontinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:412ot.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:4212ot.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho a mano una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así que, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4)  &amp;lt;/math&amp;gt; el error es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:421ot.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Para este apartado evaluamos soloamente en el punto (r, theta) = (0.9, pi/4)&lt;br /&gt;
%de nuevo con la fórmula de Poisson y esta vz comparamos con la solución&lt;br /&gt;
%exacta xy también evaluda en el punto&lt;br /&gt;
&lt;br /&gt;
%condición frontera en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x); &lt;br /&gt;
R = 1;&lt;br /&gt;
imagen_u = 0.9^2*sin(pi/4)*cos(pi/4);&lt;br /&gt;
max_exp =8;&lt;br /&gt;
errores = zeros(1,max_exp); cota_error_teorico = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %para la regla del trapecio&lt;br /&gt;
    N=10^n;                         %número de puntos&lt;br /&gt;
    a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
    h=(b-a)/N;                      %incremento&lt;br /&gt;
    u=a:h:b; &lt;br /&gt;
    w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
   &lt;br /&gt;
    %fórmula de Poisson en el punto&lt;br /&gt;
    r = 0.9;&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos &lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log10(abs(evaluacion - imagen_u));&lt;br /&gt;
&lt;br /&gt;
    %acotación de la estimación teórica del error&lt;br /&gt;
    cota_error_teorico(1,n) = log10(232*(pi)^3*10^6/(3*N^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Errores según el exponente del número de puntos de la discretización')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
ylim([-20,10])&lt;br /&gt;
xlabel('exponente del número de puntos de la discretización (10^n)')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^{-n}, \pi/4) &amp;lt;/math&amp;gt;. En consecuancia, la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica se estropea porque tiende a infinito y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:422ot.png|600px|thumb|center|Error calculado y cota del error estimado cuando r tiende a 1]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código&lt;br /&gt;
% Fijamos ahora el número de puntos en la fórmula del trapecio en 100 y&lt;br /&gt;
% dibujamos la gráfica del error cuando nos acercamos a la frontera, es decir, para puntos&lt;br /&gt;
% de la forma (r, θ) = (1 − 10^−n, π/4). &lt;br /&gt;
&lt;br /&gt;
%condicion frontera (R =1) en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x);&lt;br /&gt;
R = 1;&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=100;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%comparación de las evaluaciones&lt;br /&gt;
max_exp =10;&lt;br /&gt;
errores = zeros(1,max_exp);cota_error_teorico2 = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %fórmula de Poisson para cada r en el punto&lt;br /&gt;
    r = 1 - 10^(-n);&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);  %de nuevo tien que ser vector&lt;br /&gt;
    imagen_u = r^2*g(pi/4);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos&lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f  ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log(abs(evaluacion - imagen_u));&lt;br /&gt;
    cota_error_teorico2(1,n) = log10(232*(pi)^3*10^(6*n-4)/3);&lt;br /&gt;
end&lt;br /&gt;
%la cota del error teorico no nos sirve cuando r se aproxima a&lt;br /&gt;
%1 poeque el denominador de la cota f'' tiende a 0&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico2, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Error y cota estimada del error a medida que r se acerca 1')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
xlabel('n que hace que r tienda a 1')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
En este apartado vamos a hallar la solución del problema anterior por serie de Fourier. Para ello, en primer lugar, planteamos el problema en coordenadas polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{U_rr + \frac{1}{r}U_r + \frac{1}{r^2}U_{\theta\theta} =0,   \hspace{5mm}  r \in [0,1), \theta\in [0,2\pi]\atop  \hspace{5mm} U = G(\theta) = \sin(\theta)\cos(\theta) \hspace{5mm} \theta\in [0,2\pi] \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En la demostración hecha en clase de la fómula de Poisson (existencia de la solución del problema en la bola de radio &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;) llegamos a que, por el principio de superposicón, una solución de este problma es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  U(r,\theta) = \frac{1}{2}a_0 + \sum_{k=1}^{\infty}r^k[a_k\cos(k\theta) + b_k\sin(k\theta) \hspace{5mm} donde \hspace{5mm} a_0, a_k, b_k \in \mathbb{R} &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Imponemos la condición frontera&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  U(1,\theta) = \sin(\theta)\cos(\theta) = \frac{1}{2}\sin(2\theta) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{-M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}_1}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Pero, al ser una ecuación lineal, si cambiamos el signo de la solución habremos obtenido la solución con f cambiada de signo, y puesto que nuestra función f es la característica queda igual. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{-1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}_1} (y) dy = \int_{\mathbb{B}_1} \frac{-1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x)) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x)) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej5555poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En esta imagen, podemos ver como se cumple el principio del máximo. Si tomamos bolas que no intersequen a &amp;lt;math&amp;gt;  B_1 &amp;lt;/math&amp;gt; donde el Laplaciano de nuestra función (por la función característica) es cero, la función solución será armónica. Además podemos apreciar que los máximos y mínimos están siempre en las fronteras de dichas bolas, puesto que la función no es constante. Sin embargo, si cogemos cualquier bola que contenga a &amp;lt;math&amp;gt;  B_1 &amp;lt;/math&amp;gt;, el Laplaciano no será nulo, y de hecho podemos ver que el máximo está en el interior de dichas bolas. Esto es posible porque en esos casos no se cumple el principio del máximo debido a que la solución no es armónica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, comprobaremos que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej55tab.png|500px|thumb|center|Comparación de la solución con el comportamiento esperado.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%Igual que el programa anterior.&lt;br /&gt;
%Variando rxf podemos ver la solución en valores mayores de x&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10^20; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Definimos un vector con las imagenes de la función esperada en el infinito&lt;br /&gt;
soluciones1=zeros(1,length(rx));&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    soluciones1(i)=(-1/2)*log(rx(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%mostramos el último valor.&lt;br /&gt;
soluciones(100,100)'&lt;br /&gt;
soluciones1(100)&lt;br /&gt;
}}&lt;br /&gt;
verificando así que el comportamiento es el esperado en el infinito.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej5555poison.jpg&amp;diff=71654</id>
		<title>Archivo:Ej5555poison.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej5555poison.jpg&amp;diff=71654"/>
				<updated>2024-04-19T18:42:51Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71477</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71477"/>
				<updated>2024-04-19T15:15:30Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* El problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:41ot.png|600px|thumb|center|Solución discontinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:412ot.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:4212ot.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:421ot.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Para este apartado evaluamos soloamente en el punto (r, theta) = (0.9, pi/4)&lt;br /&gt;
%de nuevo con la fórmula de Poisson y esta vz comparamos con la solución&lt;br /&gt;
%exacta xy también evaluda en el punto&lt;br /&gt;
&lt;br /&gt;
%condición frontera en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x); &lt;br /&gt;
R = 1;&lt;br /&gt;
imagen_u = 0.9^2*sin(pi/4)*cos(pi/4);&lt;br /&gt;
max_exp =8;&lt;br /&gt;
errores = zeros(1,max_exp); cota_error_teorico = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %para la regla del trapecio&lt;br /&gt;
    N=10^n;                         %número de puntos&lt;br /&gt;
    a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
    h=(b-a)/N;                      %incremento&lt;br /&gt;
    u=a:h:b; &lt;br /&gt;
    w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
   &lt;br /&gt;
    %fórmula de Poisson en el punto&lt;br /&gt;
    r = 0.9;&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos &lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log10(abs(evaluacion - imagen_u));&lt;br /&gt;
&lt;br /&gt;
    %acotación de la estimación teórica del error&lt;br /&gt;
    cota_error_teorico(1,n) = log10(232*(pi)^3*10^6/(3*N^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Errores según el exponente del número de puntos de la discretización')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
ylim([-20,10])&lt;br /&gt;
xlabel('exponente del número de puntos de la discretización (10^n)')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^{-n}, \pi/4) &amp;lt;/math&amp;gt;. En consecuancia, la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinito y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:422ot.png|600px|thumb|center|Error calculado y cota del error estimado cuando r tiende a 1]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código&lt;br /&gt;
% Fijamos ahora el número de puntos en la fórmula del trapecio en 100 y&lt;br /&gt;
% dibujamos la gráfica del error cuando nos acercamos a la frontera, es decir, para puntos&lt;br /&gt;
% de la forma (r, θ) = (1 − 10^−n, π/4). &lt;br /&gt;
&lt;br /&gt;
%condicion frontera (R =1) en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x);&lt;br /&gt;
R = 1;&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=100;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%comparación de las evaluaciones&lt;br /&gt;
max_exp =10;&lt;br /&gt;
errores = zeros(1,max_exp);cota_error_teorico2 = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %fórmula de Poisson para cada r en el punto&lt;br /&gt;
    r = 1 - 10^(-n);&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);  %de nuevo tien que ser vector&lt;br /&gt;
    imagen_u = r^2*g(pi/4);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos&lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f  ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log(abs(evaluacion - imagen_u));&lt;br /&gt;
    cota_error_teorico2(1,n) = log10(232*(pi)^3*10^(6*n-4)/3);&lt;br /&gt;
end&lt;br /&gt;
%la cota del error teorico no nos sirve cuando r se aproxima a&lt;br /&gt;
%1 poeque el denominador de la cota f'' tiende a 0&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico2, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Error y cota estimada del error a medida que r se acerca 1')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
xlabel('n que hace que r tienda a 1')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{-M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}_1}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Pero, al ser una ecuación lineal, si cambiamos el signo de la solución habremos obtenido la solución con f cambiada de signo, y puesto que nuestra función f es la característica queda igual. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{-1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}_1} (y) dy = \int_{\mathbb{B}_1} \frac{-1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej555poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En esta imagen, podemos ver como se cumple el principio del máximo. Si tomamos bolas que no intersequen a &amp;lt;math&amp;gt;  B_1 &amp;lt;/math&amp;gt; donde el laplaciano de nuestra función (por la función característica) es cero, la función solución será armónica. En esta imagen se puede apreciar como los máximos y mínimos se toman siempre en las fronteras de dichas bolas, puesto que la función no es constante. Sin embargo, si cogemos cualquier bola que contenga a &amp;lt;math&amp;gt;  B_1 &amp;lt;/math&amp;gt;, el laplaciano no será nulo, y de hecho se puede ver como el máximo se tomar en el interior de dichas bolas, siendo esto posible por que en esos casos no se cumple el principio del máximo al no ser la solución armónica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej55tab.png|500px|thumb|center|Comparación de la solución con el comportamiento esperado.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%Igual que el programa anterior.&lt;br /&gt;
%Variando rxf podemos ver la solución en valores mayores de x&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10^20; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Definimos un vector con las imagenes de la función esperada en el infinito&lt;br /&gt;
soluciones1=zeros(1,length(rx));&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    soluciones1(i)=(-1/2)*log(rx(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%mostramos el último valor.&lt;br /&gt;
soluciones(100,100)'&lt;br /&gt;
soluciones1(100)&lt;br /&gt;
}}&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71475</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71475"/>
				<updated>2024-04-19T15:13:53Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* El problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:41ot.png|600px|thumb|center|Solución discontinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:412ot.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:4212ot.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:421ot.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Para este apartado evaluamos soloamente en el punto (r, theta) = (0.9, pi/4)&lt;br /&gt;
%de nuevo con la fórmula de Poisson y esta vz comparamos con la solución&lt;br /&gt;
%exacta xy también evaluda en el punto&lt;br /&gt;
&lt;br /&gt;
%condición frontera en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x); &lt;br /&gt;
R = 1;&lt;br /&gt;
imagen_u = 0.9^2*sin(pi/4)*cos(pi/4);&lt;br /&gt;
max_exp =8;&lt;br /&gt;
errores = zeros(1,max_exp); cota_error_teorico = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %para la regla del trapecio&lt;br /&gt;
    N=10^n;                         %número de puntos&lt;br /&gt;
    a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
    h=(b-a)/N;                      %incremento&lt;br /&gt;
    u=a:h:b; &lt;br /&gt;
    w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
   &lt;br /&gt;
    %fórmula de Poisson en el punto&lt;br /&gt;
    r = 0.9;&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos &lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log10(abs(evaluacion - imagen_u));&lt;br /&gt;
&lt;br /&gt;
    %acotación de la estimación teórica del error&lt;br /&gt;
    cota_error_teorico(1,n) = log10(232*(pi)^3*10^6/(3*N^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Errores según el exponente del número de puntos de la discretización')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
ylim([-20,10])&lt;br /&gt;
xlabel('exponente del número de puntos de la discretización (10^n)')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^{-n}, \pi/4) &amp;lt;/math&amp;gt;. En consecuancia, la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinito y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:422ot.png|600px|thumb|center|Error calculado y cota del error estimado cuando r tiende a 1]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código&lt;br /&gt;
% Fijamos ahora el número de puntos en la fórmula del trapecio en 100 y&lt;br /&gt;
% dibujamos la gráfica del error cuando nos acercamos a la frontera, es decir, para puntos&lt;br /&gt;
% de la forma (r, θ) = (1 − 10^−n, π/4). &lt;br /&gt;
&lt;br /&gt;
%condicion frontera (R =1) en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x);&lt;br /&gt;
R = 1;&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=100;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%comparación de las evaluaciones&lt;br /&gt;
max_exp =10;&lt;br /&gt;
errores = zeros(1,max_exp);cota_error_teorico2 = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %fórmula de Poisson para cada r en el punto&lt;br /&gt;
    r = 1 - 10^(-n);&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);  %de nuevo tien que ser vector&lt;br /&gt;
    imagen_u = r^2*g(pi/4);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos&lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f  ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log(abs(evaluacion - imagen_u));&lt;br /&gt;
    cota_error_teorico2(1,n) = log10(232*(pi)^3*10^(6*n-4)/3);&lt;br /&gt;
end&lt;br /&gt;
%la cota del error teorico no nos sirve cuando r se aproxima a&lt;br /&gt;
%1 poeque el denominador de la cota f'' tiende a 0&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico2, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Error y cota estimada del error a medida que r se acerca 1')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
xlabel('n que hace que r tienda a 1')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{-M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Pero, al ser una ecuación lineal, si cambiamos el signo de la solución habremos obtenido la solución con f cambiada de signo, y puesto que nuestra función f es la característica queda igual. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{-1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej555poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En esta imagen, podemos ver como se cumple el principio del máximo. Si tomamos bolas que no intersequen a &amp;lt;math&amp;gt;  B_1(0) &amp;lt;/math&amp;gt; donde el laplaciano de nuestra función (por la función característica) es cero, la función solución será armónica. En esta imagen se puede apreciar como los máximos y mínimos se toman siempre en las fronteras de dichas bolas, puesto que la función no es constante. Sin embargo, si cogemos cualquier bola que contenga a &amp;lt;math&amp;gt;  B_1(0) &amp;lt;/math&amp;gt;, el laplaciano no será nulo, y de hecho se puede ver como el máximo se tomar en el interior de dichas bolas, siendo esto posible por que en esos casos no se cumple el principio del máximo al no ser la solución armónica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej55tab.png|500px|thumb|center|Comparación de la solución con el comportamiento esperado.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%Igual que el programa anterior.&lt;br /&gt;
%Variando rxf podemos ver la solución en valores mayores de x&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10^20; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Definimos un vector con las imagenes de la función esperada en el infinito&lt;br /&gt;
soluciones1=zeros(1,length(rx));&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    soluciones1(i)=(-1/2)*log(rx(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%mostramos el último valor.&lt;br /&gt;
soluciones(100,100)'&lt;br /&gt;
soluciones1(100)&lt;br /&gt;
}}&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71460</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71460"/>
				<updated>2024-04-19T14:51:40Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* El problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:41ot.png|600px|thumb|center|Solución discontinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:412ot.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:4212ot.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:421ot.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Para este apartado evaluamos soloamente en el punto (r, theta) = (0.9, pi/4)&lt;br /&gt;
%de nuevo con la fórmula de Poisson y esta vz comparamos con la solución&lt;br /&gt;
%exacta xy también evaluda en el punto&lt;br /&gt;
&lt;br /&gt;
%condición frontera en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x); &lt;br /&gt;
R = 1;&lt;br /&gt;
imagen_u = 0.9^2*sin(pi/4)*cos(pi/4);&lt;br /&gt;
max_exp =8;&lt;br /&gt;
errores = zeros(1,max_exp); cota_error_teorico = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %para la regla del trapecio&lt;br /&gt;
    N=10^n;                         %número de puntos&lt;br /&gt;
    a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
    h=(b-a)/N;                      %incremento&lt;br /&gt;
    u=a:h:b; &lt;br /&gt;
    w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
   &lt;br /&gt;
    %fórmula de Poisson en el punto&lt;br /&gt;
    r = 0.9;&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos &lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log10(abs(evaluacion - imagen_u));&lt;br /&gt;
&lt;br /&gt;
    %acotación de la estimación teórica del error&lt;br /&gt;
    cota_error_teorico(1,n) = log10(232*(pi)^3*10^6/(3*N^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Errores según el exponente del número de puntos de la discretización')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
ylim([-20,10])&lt;br /&gt;
xlabel('exponente del número de puntos de la discretización (10^n)')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^{-n}, \pi/4) &amp;lt;/math&amp;gt;. En consecuancia, la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinito y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:422ot.png|600px|thumb|center|Error calculado y cota del error estimado cuando r tiende a 1]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código&lt;br /&gt;
% Fijamos ahora el número de puntos en la fórmula del trapecio en 100 y&lt;br /&gt;
% dibujamos la gráfica del error cuando nos acercamos a la frontera, es decir, para puntos&lt;br /&gt;
% de la forma (r, θ) = (1 − 10^−n, π/4). &lt;br /&gt;
&lt;br /&gt;
%condicion frontera (R =1) en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x);&lt;br /&gt;
R = 1;&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=100;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%comparación de las evaluaciones&lt;br /&gt;
max_exp =10;&lt;br /&gt;
errores = zeros(1,max_exp);cota_error_teorico2 = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %fórmula de Poisson para cada r en el punto&lt;br /&gt;
    r = 1 - 10^(-n);&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);  %de nuevo tien que ser vector&lt;br /&gt;
    imagen_u = r^2*g(pi/4);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos&lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f  ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log(abs(evaluacion - imagen_u));&lt;br /&gt;
    cota_error_teorico2(1,n) = log10(232*(pi)^3*10^(6*n-4)/3);&lt;br /&gt;
end&lt;br /&gt;
%la cota del error teorico no nos sirve cuando r se aproxima a&lt;br /&gt;
%1 poeque el denominador de la cota f'' tiende a 0&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico2, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Error y cota estimada del error a medida que r se acerca 1')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
xlabel('n que hace que r tienda a 1')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{-M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Pero, al ser una ecuación lineal, si cambiamos el signo de la solución habremos obtenido la solución con f cambiada de signo, y puesto que nuestra función f es la característica queda igual. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{-1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej555poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej55tab.png|500px|thumb|center|Comparación de la solución con el comportamiento esperado.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%Igual que el programa anterior.&lt;br /&gt;
%Variando rxf podemos ver la solución en valores mayores de x&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10^20; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Definimos un vector con las imagenes de la función esperada en el infinito&lt;br /&gt;
soluciones1=zeros(1,length(rx));&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    soluciones1(i)=(-1/2)*log(rx(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%mostramos el último valor.&lt;br /&gt;
soluciones(100,100)'&lt;br /&gt;
soluciones1(100)&lt;br /&gt;
}}&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej555poison.jpg&amp;diff=71459</id>
		<title>Archivo:Ej555poison.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej555poison.jpg&amp;diff=71459"/>
				<updated>2024-04-19T14:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71452</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71452"/>
				<updated>2024-04-19T14:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* El problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:41ot.png|600px|thumb|center|Solución discontinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:412ot.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:4212ot.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:421ot.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Para este apartado evaluamos soloamente en el punto (r, theta) = (0.9, pi/4)&lt;br /&gt;
%de nuevo con la fórmula de Poisson y esta vz comparamos con la solución&lt;br /&gt;
%exacta xy también evaluda en el punto&lt;br /&gt;
&lt;br /&gt;
%condición frontera en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x); &lt;br /&gt;
R = 1;&lt;br /&gt;
imagen_u = 0.9^2*sin(pi/4)*cos(pi/4);&lt;br /&gt;
max_exp =8;&lt;br /&gt;
errores = zeros(1,max_exp); cota_error_teorico = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %para la regla del trapecio&lt;br /&gt;
    N=10^n;                         %número de puntos&lt;br /&gt;
    a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
    h=(b-a)/N;                      %incremento&lt;br /&gt;
    u=a:h:b; &lt;br /&gt;
    w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
   &lt;br /&gt;
    %fórmula de Poisson en el punto&lt;br /&gt;
    r = 0.9;&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos &lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log10(abs(evaluacion - imagen_u));&lt;br /&gt;
&lt;br /&gt;
    %acotación de la estimación teórica del error&lt;br /&gt;
    cota_error_teorico(1,n) = log10(232*(pi)^3*10^6/(3*N^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Errores según el exponente del número de puntos de la discretización')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
ylim([-20,10])&lt;br /&gt;
xlabel('exponente del número de puntos de la discretización (10^n)')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^{-n}, \pi/4) &amp;lt;/math&amp;gt;. En consecuancia, la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinito y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:422ot.png|600px|thumb|center|Error calculado y cota del error estimado cuando r tiende a 1]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código&lt;br /&gt;
% Fijamos ahora el número de puntos en la fórmula del trapecio en 100 y&lt;br /&gt;
% dibujamos la gráfica del error cuando nos acercamos a la frontera, es decir, para puntos&lt;br /&gt;
% de la forma (r, θ) = (1 − 10^−n, π/4). &lt;br /&gt;
&lt;br /&gt;
%condicion frontera (R =1) en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x);&lt;br /&gt;
R = 1;&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=100;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%comparación de las evaluaciones&lt;br /&gt;
max_exp =10;&lt;br /&gt;
errores = zeros(1,max_exp);cota_error_teorico2 = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %fórmula de Poisson para cada r en el punto&lt;br /&gt;
    r = 1 - 10^(-n);&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);  %de nuevo tien que ser vector&lt;br /&gt;
    imagen_u = r^2*g(pi/4);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos&lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f  ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log(abs(evaluacion - imagen_u));&lt;br /&gt;
    cota_error_teorico2(1,n) = log10(232*(pi)^3*10^(6*n-4)/3);&lt;br /&gt;
end&lt;br /&gt;
%la cota del error teorico no nos sirve cuando r se aproxima a&lt;br /&gt;
%1 poeque el denominador de la cota f'' tiende a 0&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico2, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Error y cota estimada del error a medida que r se acerca 1')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
xlabel('n que hace que r tienda a 1')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{-M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Pero, al ser una ecuación lineal, si cambiamos el signo de la solución habremos obtenido la solución con f cambiada de signo, y puesto que nuestra función f es la característica queda igual. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{-1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{-1}{2\pi}log(|x-y|)dy= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{-1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej5poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej55tab.png|500px|thumb|center|Comparación de la solución con el comportamiento esperado.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%Igual que el programa anterior.&lt;br /&gt;
%Variando rxf podemos ver la solución en valores mayores de x&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10^20; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Definimos un vector con las imagenes de la función esperada en el infinito&lt;br /&gt;
soluciones1=zeros(1,length(rx));&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    soluciones1(i)=(-1/2)*log(rx(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%mostramos el último valor.&lt;br /&gt;
soluciones(100,100)'&lt;br /&gt;
soluciones1(100)&lt;br /&gt;
}}&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71447</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71447"/>
				<updated>2024-04-19T14:39:15Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de Poisson en  \mathbb{R}^2 . */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:41ot.png|600px|thumb|center|Solución discontinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:412ot.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:4212ot.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:421ot.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Para este apartado evaluamos soloamente en el punto (r, theta) = (0.9, pi/4)&lt;br /&gt;
%de nuevo con la fórmula de Poisson y esta vz comparamos con la solución&lt;br /&gt;
%exacta xy también evaluda en el punto&lt;br /&gt;
&lt;br /&gt;
%condición frontera en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x); &lt;br /&gt;
R = 1;&lt;br /&gt;
imagen_u = 0.9^2*sin(pi/4)*cos(pi/4);&lt;br /&gt;
max_exp =8;&lt;br /&gt;
errores = zeros(1,max_exp); cota_error_teorico = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %para la regla del trapecio&lt;br /&gt;
    N=10^n;                         %número de puntos&lt;br /&gt;
    a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
    h=(b-a)/N;                      %incremento&lt;br /&gt;
    u=a:h:b; &lt;br /&gt;
    w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
    w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
   &lt;br /&gt;
    %fórmula de Poisson en el punto&lt;br /&gt;
    r = 0.9;&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos &lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log10(abs(evaluacion - imagen_u));&lt;br /&gt;
&lt;br /&gt;
    %acotación de la estimación teórica del error&lt;br /&gt;
    cota_error_teorico(1,n) = log10(232*(pi)^3*10^6/(3*N^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Errores según el exponente del número de puntos de la discretización')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
ylim([-20,10])&lt;br /&gt;
xlabel('exponente del número de puntos de la discretización (10^n)')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^{-n}, \pi/4) &amp;lt;/math&amp;gt;. En consecuancia, la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinito y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:422ot.png|600px|thumb|center|Error calculado y cota del error estimado cuando r tiende a 1]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código&lt;br /&gt;
% Fijamos ahora el número de puntos en la fórmula del trapecio en 100 y&lt;br /&gt;
% dibujamos la gráfica del error cuando nos acercamos a la frontera, es decir, para puntos&lt;br /&gt;
% de la forma (r, θ) = (1 − 10^−n, π/4). &lt;br /&gt;
&lt;br /&gt;
%condicion frontera (R =1) en polares&lt;br /&gt;
g =@(x) sin(x).*cos(x);&lt;br /&gt;
R = 1;&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=100;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%comparación de las evaluaciones&lt;br /&gt;
max_exp =10;&lt;br /&gt;
errores = zeros(1,max_exp);cota_error_teorico2 = zeros(1,max_exp);&lt;br /&gt;
for n=1:max_exp&lt;br /&gt;
    %fórmula de Poisson para cada r en el punto&lt;br /&gt;
    r = 1 - 10^(-n);&lt;br /&gt;
    z = (pi/4).*ones(1,N+1);  %de nuevo tien que ser vector&lt;br /&gt;
    imagen_u = r^2*g(pi/4);&lt;br /&gt;
    f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';%funcion que integramos&lt;br /&gt;
    evaluacion = ((R^2 - r^2)/(2*pi))*h*w'*f  ;%formula de poisson para coordenadas polares&lt;br /&gt;
    errores(1,n) = log(abs(evaluacion - imagen_u));&lt;br /&gt;
    cota_error_teorico2(1,n) = log10(232*(pi)^3*10^(6*n-4)/3);&lt;br /&gt;
end&lt;br /&gt;
%la cota del error teorico no nos sirve cuando r se aproxima a&lt;br /&gt;
%1 poeque el denominador de la cota f'' tiende a 0&lt;br /&gt;
figure(1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:max_exp, errores, 'b')&lt;br /&gt;
plot(1:max_exp, cota_error_teorico2, 'r')&lt;br /&gt;
hold off&lt;br /&gt;
title('Error y cota estimada del error a medida que r se acerca 1')&lt;br /&gt;
legend(&amp;quot;error calculado&amp;quot;, &amp;quot;cota error teórico&amp;quot;)&lt;br /&gt;
xlim([1,max_exp])&lt;br /&gt;
xlabel('n que hace que r tienda a 1')&lt;br /&gt;
ylabel('errores')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{-M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Por ello, podremos usar la solución mencionada, pero cancelando el signo negativo que aparece en el factor &amp;lt;math&amp;gt; \frac{-1}{2\pi} &amp;lt;/math&amp;gt;. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej5poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej55tab.png|500px|thumb|center|Comparación de la solución con el comportamiento esperado.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
%Igual que el programa anterior.&lt;br /&gt;
%Variando rxf podemos ver la solución en valores mayores de x&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10^20; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Definimos un vector con las imagenes de la función esperada en el infinito&lt;br /&gt;
soluciones1=zeros(1,length(rx));&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    soluciones1(i)=(-1/2)*log(rx(i));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%mostramos el último valor.&lt;br /&gt;
soluciones(100,100)'&lt;br /&gt;
soluciones1(100)&lt;br /&gt;
}}&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej55tab.png&amp;diff=71446</id>
		<title>Archivo:Ej55tab.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej55tab.png&amp;diff=71446"/>
				<updated>2024-04-19T14:38:59Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej5tab.png&amp;diff=71438</id>
		<title>Archivo:Ej5tab.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej5tab.png&amp;diff=71438"/>
				<updated>2024-04-19T14:25:37Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej55poison.jpg&amp;diff=71411</id>
		<title>Archivo:Ej55poison.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej55poison.jpg&amp;diff=71411"/>
				<updated>2024-04-19T13:35:41Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71408</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71408"/>
				<updated>2024-04-19T13:33:25Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* El problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución discontiinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
=== Código ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Resumen de código: &lt;br /&gt;
%Crearemos un malla de puntos en coordenadas polares y en cada punto&lt;br /&gt;
%evaluaremos usando la fórmula de Poisson, realizando la integral con la&lt;br /&gt;
%regla del trapecio. Sin embargo, en la frontera (r=1) evaluaremos&lt;br /&gt;
%directamente la función g definida a continuación&lt;br /&gt;
&lt;br /&gt;
%condicion frontera&lt;br /&gt;
g =@(x) max(0,1-(2/pi).*abs(x-pi));&lt;br /&gt;
&lt;br /&gt;
%dimensión de la malla&lt;br /&gt;
Q = 100;&lt;br /&gt;
&lt;br /&gt;
%coordenadas polares para construir la malla&lt;br /&gt;
R = 1;&lt;br /&gt;
D = linspace(0,R,Q);%radios&lt;br /&gt;
Z = linspace(0, 2*pi,Q);%ángulos&lt;br /&gt;
evaluaciones = zeros(Q,Q);%matriz malla&lt;br /&gt;
&lt;br /&gt;
%para la regla del trapecio&lt;br /&gt;
N=1000;                         %número de puntos&lt;br /&gt;
a=0; b=2*pi;                    %extremos del intervalo&lt;br /&gt;
h=(b-a)/N;                      %incremento&lt;br /&gt;
u=a:h:b; &lt;br /&gt;
w=ones(N+1,1);                  %vector de pesos&lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
&lt;br /&gt;
%imponemos la condición frontera (r = 1) evaluando en g&lt;br /&gt;
for j = 1:Q&lt;br /&gt;
    evaluaciones(Q,j) = g(Z(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%fórmula de Poisson en el interior&lt;br /&gt;
for i =1:Q-1 %hasta Q-1 para no aplicarla en la frontera&lt;br /&gt;
    r = D(i);&lt;br /&gt;
    for j = 1:Q&lt;br /&gt;
        z = Z(j).*ones(1,N+1);  %tenemos que convertirlo en vector para poder operar con u&lt;br /&gt;
        f = (g(u)./(R^2 + r^2 - (2*R*r).*cos(z - u)))';  %funcion que integramos&lt;br /&gt;
        int = h*w'*f;      %resultado de la integral                                  &lt;br /&gt;
        evaluaciones(i,j) = ((R^2 - r^2)/(2*pi))*int;   %formula de poisson en coordenadas polares&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%pasamos a cartesianas para hacer la gráfica&lt;br /&gt;
X = D'*cos(Z);&lt;br /&gt;
Y = D'*sin(Z);&lt;br /&gt;
&lt;br /&gt;
%representación 3D&lt;br /&gt;
surf(X,Y,evaluaciones)&lt;br /&gt;
title('Imponiendo la condición frontera')&lt;br /&gt;
xlabel('X')&lt;br /&gt;
ylabel('Y')&lt;br /&gt;
zlabel('u')&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^n, \pi/4) &amp;lt;/math&amp;gt;. Como consecuancia la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinita y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Error (f) según la discretización]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Por ello, podremos usar la solución mencionada, pero cancelando el signo negativo que aparece en el factor &amp;lt;math&amp;gt; \frac{-1}{2\pi} &amp;lt;/math&amp;gt;. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej5poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Creamos los vectores donde evaluaremos, tanto para x como para y.&lt;br /&gt;
&lt;br /&gt;
Nx=100; Ny=100;&lt;br /&gt;
rxi=0; rxf=10; Oxi=0; Oxf=2*pi; ryi=0; ryf=0.9999; Oyi=0; Oyf=2*pi;&lt;br /&gt;
rx=linspace(rxi,rxf,Nx); Ox=linspace(Oxi,Oxf,Nx); ry=linspace(ryi,ryf,Ny); Oy=linspace(Oyi,Oyf,Ny);&lt;br /&gt;
[RRy,OOy]=meshgrid(ry,Oy);&lt;br /&gt;
&lt;br /&gt;
soluciones=zeros(length(rx),length(Oy));&lt;br /&gt;
&lt;br /&gt;
%fijámos las x, y para cada valor resolvemos la integral bidimensional&lt;br /&gt;
%resultante&lt;br /&gt;
for i=1:length(rx)&lt;br /&gt;
    for j=1:length(Ox)&lt;br /&gt;
        soluciones(i,j)=(-1/(4*pi))*integral2( @(rry,OOy) rry.*log(rx(i).^2+rry.^2-2.*rx(i).*rry.*cos(OOy-Ox(j))) ,ryi,ryf,Oyi,Oyf); &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
%Pasamos a cartesianas y ploteamos.&lt;br /&gt;
x1=rx'*cos(Ox);&lt;br /&gt;
x2=ry'*sin(Ox);&lt;br /&gt;
surf(x1,x2,soluciones)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71404</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71404"/>
				<updated>2024-04-19T13:25:29Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* El problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución discontiinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera en la frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^n, \pi/4) &amp;lt;/math&amp;gt;. Como consecuancia la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinita y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Error (f) según la discretización]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas y desarrollando los cálculos, se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    valores_inferiores = zeros(1,num); valores_superiores = zeros(1,num);   % Vector donde se almacena los valores de las cotas inferiores y superiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        valores_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        valores_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(valores_inferiores);&lt;br /&gt;
    valores_inferiores = log10(valores_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    valores_superiores = log10(valores_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,valores_inferiores,'r')&lt;br /&gt;
    plot(D, valores_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 + 3Rr}{(R+r)^2} \leq u(x) \leq M\frac{r^2 - 3Rr}{(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo el valor del mínimo M, nos queda lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{-R^2r(r + 3R)}{2(R+r)^2} \leq u(x) \leq \frac{R^2r(3R-r)}{2(R-r)^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos ver que las cotas solo dependen del radio &amp;lt;math&amp;gt; r \in [0,R)&amp;lt;/math&amp;gt; y que la cota inferior toma valores negativos.&lt;br /&gt;
&lt;br /&gt;
Modificamos el código anterior para representar la región dada por las desigualdades de Harnack para las bolas de radio 1, 2 y 10 pero esta vez en dimensión 3.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = (-(R(k)^2*D(i))*(D(i)+3*R(k)))/(2*(R(k)+D(i))^2);  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = ((R(k)^2*D(i))*(3*R(k)-D(i)))/(2*(R(k)-D(i))^2);  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio13D.png|400px|thumb|center|Región para la bola de radio 1 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio23D.png|400px|thumb|center|Región para la bola de radio 2 en dimensión 3]]&lt;br /&gt;
[[Archivo:Radio103D.png|400px|thumb|center|Región para la bola de radio 10 en dimensión 3]]&lt;br /&gt;
&lt;br /&gt;
Volvemos a desplazar los valores para poder graficar en escala logarítmica ya que los valores de la cota inferior son negativos. En las gráficas podemos ver que tienen la misma forma que en dos dimensiones. Sin embargo, esto es engañoso ya que la solución depende de tres variables, el radio, el ángulo azimutal y el ángulo longitudinal. Entonces en dos dimensiones, la región sería rotar las curvas de las cotas alrededor del eje z; pero en 3 dimensiones, habría que rotarla también alrededor del eje x hasta 180º.&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Por ello, podremos usar la solución mencionada, pero cancelando el signo negativo que aparece en el factor &amp;lt;math&amp;gt; \frac{-1}{2\pi} &amp;lt;/math&amp;gt;. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ej5poison.jpg|500px|thumb|center|Representación gráfica de la solución.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej5poison.jpg&amp;diff=71402</id>
		<title>Archivo:Ej5poison.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ej5poison.jpg&amp;diff=71402"/>
				<updated>2024-04-19T13:23:29Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71389</id>
		<title>Ecuación de Laplace. Otelo, Yan y Mika</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace._Otelo,_Yan_y_Mika&amp;diff=71389"/>
				<updated>2024-04-19T11:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;M.cazorla: /* Ecuación de Poisson en  \mathbb{R}^2 . */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoEDP | Ecuación de Laplace. Grupo 9 | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Miguel Cazorla Pedraza &lt;br /&gt;
Otelo Gallego Ayala &lt;br /&gt;
Yan Wang}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Introducción  ==&lt;br /&gt;
En este articulo  estudiaremos la ecuación de Laplace en la bola unidad de dimensión dos con diferentes condiciones frontera. En concreto, analizaremos la fórmula de Poisson y los errores cometidos al aproximar la integral de esta mediante la regla del trapecio con varias discretizaciones del dominio. Además, estudiaremos el error cometido al fijar una discretización e ir tomando puntos que se acercan a la frontera. También estudiaremos  la solución por serie de Fourier y la desigualdad de Harnack. Por último, aproximaremos la solución de la Ecuación de Poisson con el potencial logarítmico de dos dimensiones.&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace con la fórmula de Poisson y la regla del trapecio  ==&lt;br /&gt;
&lt;br /&gt;
Consideramos el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \left\{\Delta u =0,   \hspace{5mm}  x \in B_1\atop  \hspace{5mm} u = g \hspace{5mm} x\in\partial B_1 \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde  g es la función de una variable &amp;lt;math&amp;gt;  g(\theta) = \max\{0, 1-\frac{2}{\pi}|\theta - \pi|\} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como la función está en polares, para hallar la solución del problema vamos a usar la fórmula de Poisson en polares:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  u(r, \theta) = \frac{R^2 - r^2}{2\pi} \int_{0}^{2\pi}\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta - \varphi)}d\varphi&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para resolver numéricamente la integral de la fórmula en MatLab usaremos la regla del trapecio. Esta regla consiste en dividir &amp;lt;math&amp;gt; [0,2\pi] &amp;lt;/math&amp;gt;  en N subintervalos para después realizar la media de los valores del integrando en los dos extremos de cada subintervalo y multiplicarla por la longtitud de estos.&lt;br /&gt;
&lt;br /&gt;
Si aplicamos la fórmula sobre la adherencia de la bola obtenemos discontinuidad en la frontera. Esto se muestra en la gráfica a continuación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución discontiinua]]&lt;br /&gt;
&lt;br /&gt;
Para solucionar esto, imponemos directamente la condición frontera en la frontera y aplicamos la fórmula en el interior de la bola. De esta manera, eliminamos la discontinuidad y conseguimos la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución tras imponer la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
==  Limitaciones de la fórmula de Poisson relacionadas con la regla del trapecio ==&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado en la introducción, las limitaciones de la fórmula de Poisson provienen principalmente de la aproximación de la integral. En concreto, la fórmula de trapecio que utilizamos incorpora un error en la aproximación y en este apartado vamos a analizar cómo varía en función de la discretización, es decir, en función del número de subintervalos que tomemos para dividir &amp;lt;math&amp;gt; [0,2\pi]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para ello, vamos a considerar el mismo problema pero esta vez con la condición frontera&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(x,y) = xy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Además, vamos a considerar como solución exacta la misma función &amp;lt;math&amp;gt; u(x,y) = xy &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Solución exacta del problema]]&lt;br /&gt;
&lt;br /&gt;
Con ella calcularemos el error que obtenemos al usar la fórmula de trapecio en un punto lejos de la frontera, en concreto, en &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;.&lt;br /&gt;
Para poder apreciarlo mejor, lo calculamos en escala logarítmica, es decir, si el número de subintervalos es &amp;lt;math&amp;gt; N = 10^n &amp;lt;/math&amp;gt; y denotamos &amp;lt;math&amp;gt; u_N &amp;lt;/math&amp;gt; la solución obtenida para esta discretización, el error será&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(n) = \log_{10} error(10^n) = \log_{10} |u - u_N|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para asegurarnos de que los errores cometidos en la aproximación no son muy grandes y todo va como se espera, vamos a usar una estimación del error de la fórmula del trapecio de Wikipedia. Esta nos dice que, si utilizamos la regla del trapecio para integrar una función  &amp;lt;math&amp;gt; f&amp;lt;/math&amp;gt; en el intervalo  &amp;lt;math&amp;gt; [a,b]&amp;lt;/math&amp;gt; con una división en &amp;lt;math&amp;gt; N&amp;lt;/math&amp;gt; subintervalos, el error estimado para un valor &amp;lt;math&amp;gt; c \in [a,b]&amp;lt;/math&amp;gt; es&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \left|-\frac{(b-a)^3}{12N^2}f''(c)\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, para nuestro caso tomaremos el valor absoluto y tendremos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) = \frac{(2\pi)^3}{12N^2}\left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right|&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \theta^*&amp;lt;/math&amp;gt; es una constante.&lt;br /&gt;
&lt;br /&gt;
Hemos hecho una acotación del valor absoluto de la doble derivada&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left|\frac{\partial^2}{\partial \varphi^2}\left(\frac{G(\varphi)}{R^2 + r^2 - 2Rr\cos(\theta^* - \varphi)}\right)_{\varphi = c}\right| \leq \frac{116}{(1-r)^6} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^6}{3N^2}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra la representación gráfica del error calculado y el error estimado en el punto &amp;lt;math&amp;gt; (r, \theta) = (0.9, \pi/4) &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Error calculado y cota del error estimado seún la discretizaión de la fórmula del trapecio]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
&lt;br /&gt;
Ahora, vamos a calcular el error en distintos puntos. Para ello, fijamos &amp;lt;math&amp;gt; N =100 &amp;lt;/math&amp;gt; para la fórmula del trapecio y hacemos que los puntos en los que aplicamos la fórmula de Poisson se vayan acercando a la frontera definiéndolos en coordenadas polares como &amp;lt;math&amp;gt; (r, \theta) = (1 - 10^n, \pi/4) &amp;lt;/math&amp;gt;. Como consecuancia la cota estimada del error pasa  tener esta forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(c) \leq \frac{116(2\pi)^3}{12N^2(1-r)^6} = \frac{232\pi^310^{6n - 4}}{3}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, a medida que &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; se acerca a 1, la cota de la estimación teórica tiende a infinita y la gráfica anteriormente realizada queda así:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:estacionary.png|600px|thumb|center|Error (f) según la discretización]]&lt;br /&gt;
&lt;br /&gt;
===Código===&lt;br /&gt;
&lt;br /&gt;
==  Solución de la Ecuación de Laplace por serie de Fourier ==&lt;br /&gt;
&lt;br /&gt;
==  Desigualdad de Harnack ==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a analizar lo que nos dice las desigualdades de Harnack. Esta es la siguiente: Sea &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; una función armónica y no negativa, &amp;lt;math&amp;gt;u(x)\geq 0&amp;lt;/math&amp;gt; en un dominio &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\mathbb{B}_R(z) \in \Omega&amp;lt;/math&amp;gt;. Entonces, para todo &amp;lt;math&amp;gt;x \in \overline{\mathbb{B}_R(z)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{R^{n-2}(R-r)}{(R+r)^{n-1}}u(z) \leq u(x) \leq \frac{R^{n-2}(R+r)}{(R-r)^{n-1}}u(z)&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; r = |x-z| &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como la función &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; es claramente armónica falta comprobar que es no negativa. Para asegurar que es no negativa, vamos a considerar la función armónica y no negativa &amp;lt;math&amp;gt;v(x,y) = u(x,y) - M &amp;lt;/math&amp;gt;, donde M es el mínimo de &amp;lt;math&amp;gt;g(x,y) = xy&amp;lt;/math&amp;gt; en la frontera &amp;lt;math&amp;gt;\partial \mathbb{B}_1(0)&amp;lt;/math&amp;gt;. Se calcula el mínimo M de la función &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; para cualquier radio R y se obtiene lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación, aplicamos las desigualdades de Harnack a la función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en la bola &amp;lt;math&amp;gt;\mathbb{b}_R(0)&amp;lt;/math&amp;gt; para acotarla de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{(R-r)}{(R+r)}v(0) \leq v(x) \leq \frac{(R+r)}{(R-r)}v(0)&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deshaciendo el cambio para encontrar las cotas de las soluciones armónicas, sustituyendo el valor de M y desarrollando los cálculos; se obtiene: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;M\frac{2r}{R+r} \leq u(x) \leq -M\frac{2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, sustituyendo el valor de la M, la región donde deben estar las soluciones armónicas en la bola &amp;lt;math&amp;gt;\mathbb{B}_R(0)&amp;lt;/math&amp;gt; es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{R^2r}{R+r} \leq u(x) \leq \frac{R^2r}{R-r} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que las cotas solo depende del radio &amp;lt;math&amp;gt;r \in [0,R)&amp;lt;/math&amp;gt;.Además, se tiene que la cota inferior dada por la desigualdad de Harnack es siempre negativa.&lt;br /&gt;
&lt;br /&gt;
Vamos a dibujar estas regiones con el siguiente código de matlab para las bolas &amp;lt;math&amp;gt; \mathbb{B}_1(0) &amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt; \mathbb{B}_2(0)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; \mathbb{B}_{10}(0) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%En este código vamos a representar la región donde deben estar las soluciones a partir de las desigualdades de Harnack para las bolas de radio 1, 2 y 10. &lt;br /&gt;
&lt;br /&gt;
g =@(x,y) y^2.*sin(x).*cos(x);   % Condición frontera &lt;br /&gt;
R = [1,2,10];    % Radios de las bolas&lt;br /&gt;
&lt;br /&gt;
for k=1:3&lt;br /&gt;
    M = -R(k)^2/2;  % Mínimo de la función de la condición frontera&lt;br /&gt;
    rmax = R(k)-0.01; num = 100; % rmax es el valor máximo del radio cercano a la frontera y num el número de puntos de la discretización&lt;br /&gt;
    D = linspace(0, rmax, num); % Vector de la discretización&lt;br /&gt;
    matriz_inferiores = zeros(1,num); matriz_superiores = zeros(1,num);   % Matrices donde se almacena los valores de las cotas inferiores y seperiores&lt;br /&gt;
    for i=1:num&lt;br /&gt;
        matriz_inferiores(i) = -(R(k)^2*D(i))/(R(k)+D(i));  % Cota inferior dada por la desigualdad de Harnack&lt;br /&gt;
        matriz_superiores(i) = (R(k)^2*D(i))/(R(k)-D(i));  % Cota superior dada por la desigualdad de Harnack&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    % Desplazamos los valores de obtenidos para poder aplicar la escala logarítmica&lt;br /&gt;
    m = min(matriz_inferiores);&lt;br /&gt;
    matriz_inferiores = log10(matriz_inferiores - (m-1).*ones(1,num));&lt;br /&gt;
    matriz_superiores = log10(matriz_superiores - (m-1).*ones(1,num));&lt;br /&gt;
    &lt;br /&gt;
    % Representación gráfica&lt;br /&gt;
    figure(k)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(D,matriz_inferiores,'r')&lt;br /&gt;
    plot(D, matriz_superiores, 'g')&lt;br /&gt;
    xlabel('Radios(r)')&lt;br /&gt;
    ylabel('Cota')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','northwest')&lt;br /&gt;
    title(&amp;quot;Región para la bola de Radio &amp;quot; + num2str(R(k)))&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Radio1.png|400px|thumb|center|Región para la bola de radio 1]]&lt;br /&gt;
[[Archivo:Radio2.png|400px|thumb|center|Región para la bola de radio 2]]&lt;br /&gt;
[[Archivo:Radio10.png|400px|thumb|center|Región para la bola de radio 10]]&lt;br /&gt;
&lt;br /&gt;
Nótese que como nuestro objetivo es representarlo en escala logarítmica, ya que se aprecia mejor, y la cota inferior siempre toma valores negativo; desplazamos los valores para hacerlos todos positivos y poder reescalar de forma logarítmica. A los valores calculados por la desigualdad de Harnack les restamos el mínimo de ellos, de esta forma son todos positivos.&lt;br /&gt;
&lt;br /&gt;
La región que queda entre las cotas superiores e inferiores proporcionadas por las desigualdades de Harnack es donde deben estar las soluciones armónicas. Se observa que a medida que aumenta el radio de la bola, la cota inferior se va ampliando.&lt;br /&gt;
&lt;br /&gt;
A continuación, vamos a repetir lo anterior pero para dimensión 3. Tomando las mismas funciones &amp;lt;math&amp;gt;u(x,y,z) = xy&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;g(x,y,z)=xy&amp;lt;/math&amp;gt; anteriores pero en dimensión 3, se obtiene el mismo mínimo anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M = -\frac{R^2}{2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con este mínimo y en dimensión 3, las desigualdades de Harnack son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M\frac{r^2 - 3Rr}{(R+r)^2} \leq M\frac &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;. ==&lt;br /&gt;
En este apartado daremos solución a un caso concreto de la Ecuación de Poisson. Previamente, mostramos algunas nociones teóricas que serán utilizadas en la resolución del problema.&lt;br /&gt;
&lt;br /&gt;
LLamamos solución fundamental del Laplaciano en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; a la función que viene dada por la expresión &amp;lt;math&amp;gt; \phi (x)=\frac{-1}{2\pi}log(|x|)&amp;lt;/math&amp;gt;,&lt;br /&gt;
donde &amp;lt;math&amp;gt; log(|x|) &amp;lt;/math&amp;gt; recibe el nombre de potencial logarítmico. En clase hemos visto que, utilizando esta expresión, podemos encontrar una única solución para el problema&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\{  -\Delta u=f \hspace{4mm} x\in\mathbb{R}^2         \atop   \lim_{|x|\to\infty} u(x)=\frac{M}{2\pi}log(|x|) + o (\frac{1}{(|x|)}), \hspace{6mm} \text{ donde} \hspace{3mm} M=    \int_{\mathbb{R}^2} f(y) dy        \right. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que será de la forma  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== El problema   ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este apartado, intentaremos encontrar una solución para la siguiente ecuación:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; \{\hspace{2mm}  \Delta u=\mathbb{1}_{\mathbb{B}(0,1)}, \hspace{4mm} x\in\mathbb{R}^2. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación es prácticamente idéntica a la descrita arriba, salvo por un signo negativo. Por ello, podremos usar la solución mencionada, pero cancelando el signo negativo que aparece en el factor &amp;lt;math&amp;gt; \frac{-1}{2\pi} &amp;lt;/math&amp;gt;. La función solución resultante es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2} \phi(x-y)f(y) dy = \int_{\mathbb{R}^2} \frac{1}{2\pi}log(|x-y|) \cdot \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Puesto que esta es una integral irresoluble analíticamente, hallaremos una solución numérica. Para ello, primero haremos un cambio de variable para &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y pasaremos a coordenadas polares la integral, que después de simplificar resulta: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; \left\{ x=(r_xcos(\theta_x),r_xsen(\theta_x))   \atop  y=(r_ycos(\theta_y),r_ysen(\theta_y))     \right. \longrightarrow \int_{\mathbb{B}(0,1)} \frac{1}{2\pi}log(|x-y|)dy= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y. &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la función solución en polares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;  &amp;lt;math&amp;gt; U(r_x,\theta_x)= \frac{1}{4\pi}\int_{0}^{2\pi} \int_{0}^1 r_ylog(r_x^2+r_y^2+cos(\theta_y-\theta_x) dr_y d\theta_y, &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuya representación gráfica hecha por Matlab es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por último, podemos comprobar que la solución obtenida tiene el comportamiento esperado en el infinito. Teniendo en cuenta que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt; M= \int_{\mathbb{R}^2} \mathbb{1}_{\mathbb{B}(0,1)} (y) dy = \pi &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
se tiene que cuando &amp;lt;math&amp;gt; |x|\to\infty &amp;lt;/math&amp;gt; nuestra función debería tener valores prácticamente iguales a &amp;lt;math&amp;gt; \frac{1}{2}log(|x|) &amp;lt;/math&amp;gt;. Tomando valores de &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; muy altos y utilizando Matlab obtenemos los siguientes resultados&lt;br /&gt;
&lt;br /&gt;
verificando así que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>M.cazorla</name></author>	</entry>

	</feed>