ARCHIVOS TEÓRICOS DEL MUSEO MATEMÁTICO.
ÁREA- ANÁLISIS-
TEMA-SUPERFICIES MÍNIMAS Y CON CURVATURA PRESCRIPTA.
![[Maple Bitmap]](images/supmn1.gif) 
//////Superficie de área mínima en dominio
de contorno cuadrado de lado L , partido
en n partes////////////
Autor- Leonard Echagüe- Mate UBA Museum-
Dado un dominio cuadrado con valores predeterminados
de la función en su contorno, nulos en el caso plano y
de altura de un tetraedro en el caso de Schwarz, a partir
de una reticulación del dominio, se expresa el área de la
superficie por formulas en función de los valores de las funciones
en los puntos de la malla reticular, luego de lo cual se procede,
mediante un algoritmo de gradiente descendente ,a encontrar
discretamente los valores de las funciones que minimizan el área.
OBSERVAR LAS COINCIDENCIAS CON LO OBTENIDO EN
LOS OTROS ARCHIVOS DEL TEMA SUPERFICIES MÍNIMAS.
LAS ANIMACIONES DEL WORKSHEET ESTÁN ACTIVAS.
EN LOS ARCHIVOS COMPRIMIDOS HAY MÁS INFORMACIÓN DE RESULTADOS
inicial para todos los casos
Esquema de reticulado y cálculo de áreas

Dar entrada desde aqui hasta el aviso///////////////////////////////////////////
> restart;
> u:=L/n;
![[Maple Math]](images/supmn3.gif) 
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
> n:=5;L:=5;u;
> h:=array(0..n,0..n,[]);
![[Maple Math]](images/supmn4.gif) 
![[Maple Math]](images/supmn5.gif) 
![[Maple Math]](images/supmn6.gif) 
![[Maple Math]](images/supmn7.gif) 
> for i from 0 by 1 to n do
> for j from 0 by 1 to n do
> A[i,j]:=[i*u,j*u,h[i,j]];
> od;od;
> Area:=0;
![[Maple Math]](images/supmn8.gif) 
> for i from 0 by 1 to n-1 do
> for j from 0 by 1 to n-1 do
> pepe1:=crossprod((A[i,j+1]-A[i,j]),(A[i+1,j+1]-A[i,j]));
> pepe2:=crossprod((A[i+1,j]-A[i,j]),(A[i+1,j+1]-A[i,j]));
> Area:=0.5*sqrt(pepe1[1]^2+pepe1[2]^2+pepe1[3]^2)+0.5*sqrt(pepe2[1]^2+pepe2[2]^2+pepe2[3]^2)+Area;
> od;od;
> gradArea:=array(1..n-1,1..n-1,[]);
![[Maple Math]](images/supmn9.gif) 
> for i from 1 by 1 to n-1 do
> for j from 1 by 1 to n-1 do
> gradArea[i,j]:=diff(Area,h[i,j]);
> od:od:
USAR EVAL PARA QUE EVALUE EN ARRAY
> matgrad:=eval(gradArea):
>
intermedio para plano
chequeo inicial
> h:=array(0..5,0..5,[[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]]):
> evalm(convert(h,matrix));
![[Maple Math]](images/supmn10.gif) 
> h[2,2];
![[Maple Math]](images/supmn11.gif) 
> print(evalf(Area));
![[Maple Math]](images/supmn12.gif) 
>
comienzo
> with(plots):
> h1:=array(1..6,1..6,[]);
![[Maple Math]](images/supmn13.gif) 
> h:=array(0..5,0..5,[[1,1,1,1,1,1],[1,1,2,3,1,1],[1,-1,1,1,2,1],[1,2,1,1,4,1],[1,1,2,3,1,1],[1,1,1,1,1,1]]):
> evalm(convert(h,matrix));print(evalf(Area));
![[Maple Math]](images/supmn14.gif) 
![[Maple Math]](images/supmn15.gif) 
ver que aquí en lo ultimo sustituye bien el Area.
> for i from 0 by 1 to n do
> for j from 0 by 1 to n do
> h1[i+1,j+1]:=h[i,j]:
> od:od:
> evalm(h1);
![[Maple Math]](images/supmn16.gif) 
> alpha:=0.5;
![[Maple Math]](images/supmn17.gif) 
programa para plano
ojo al evalf necesario
> i:=1;j:=1;
> h[i,j]:=h[i,j]-alpha*matgrad[i,j];
> h1[i+1,j+1]:=h[i,j];
![[Maple Math]](images/supmn18.gif) 
![[Maple Math]](images/supmn19.gif) 
![[Maple Math]](images/supmn20.gif) 
![[Maple Math]](images/supmn21.gif) 
>
>
>
> for k from 1 by 1 to 80 do
> for i from 1 by 1 to n-1 do
> for j from 1 by 1 to n-1 do
> h[i,j]:=evalf(h[i,j]-alpha*matgrad[i,j]):
> h1[i+1,j+1]:=h[i,j]:
> od:od:
> print(evalf(Area)):
> convert(h1,matrix):
> p.k:=matrixplot(h1):
> #print(evalf(evalm(convert(h,matrix)))):
> convert(h,matrix):
> od:
> display([seq(p.k,k=1..80)],insequence=true);
![[Maple Plot]](images/supmn22.gif) 
>
intermedio para Schwarz
chequeo inicial
> h:=array(0..5,0..5,[[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]]):
> evalm(convert(h,matrix));
![[Maple Math]](images/supmn23.gif) 
> h[2,2];
![[Maple Math]](images/supmn24.gif) 
> print(evalf(Area));
![[Maple Math]](images/supmn25.gif) 
>
comienzo
> with(plots):
> h1:=array(1..6,1..6,[]);
![[Maple Math]](images/supmn26.gif) 
> h:=array(0..5,0..5,[[0,0.2,0.4,0.6,0.8,1],[0.2,0.4,0.6,0.8,1,0.8],[0.4,0.6,0.8,1,0.8,0.6],[0.6,0.8,1,0.8,0.6,0.4],[0.8,1,0.8,0.6,0.4,0.2],[1,0.8,0.6,0.4,0.2,0]]):
> evalm(convert(h,matrix));print(evalf(Area));
![[Maple Math]](images/supmn27.gif) 
![[Maple Math]](images/supmn28.gif) 
ver que aquí en lo ultimo sustituye bien el Area.
> for i from 0 by 1 to n do
> for j from 0 by 1 to n do
> h1[i+1,j+1]:=h[i,j]:
> od:od:
> evalm(h1);
![[Maple Math]](images/supmn29.gif) 
> ps:=matrixplot(h1):matrixplot(h1);
> alpha:=0.5;
![[Maple Plot]](images/supmn30.gif) 
![[Maple Math]](images/supmn31.gif) 
>
programa para Schwarz
>
> for k from 1 by 1 to 40 do
> for i from 1 by 1 to n-1 do
> for j from 1 by 1 to n-1 do
> h[i,j]:=evalf(h[i,j]-alpha*matgrad[i,j]):
> h1[i+1,j+1]:=h[i,j]:
> od:od:
> print(evalf(Area)):
> convert(h1,matrix):
> p.k:=matrixplot(h1):
> #print(evalf(evalm(convert(h,matrix)))):
> convert(h,matrix):
> od:
> display([ps,seq(p.k,k=1..40)],insequence=true);
![[Maple Plot]](images/supmn32.gif) 
>