ARCHIVOS TEÓRICOS DEL MUSEO MATEMÁTICO.

ÁREA- ANÁLISIS-

TEMA-SUPERFICIES MÍNIMAS Y CON CURVATURA PRESCRIPTA.

[Maple Bitmap]

//////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]

> 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]

[Maple Math]

[Maple Math]

[Maple Math]

> 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]

> 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]

> 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]

> h[2,2];

[Maple Math]

> print(evalf(Area));

[Maple Math]

>

comienzo

> with(plots):

> h1:=array(1..6,1..6,[]);

[Maple Math]

> 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]

[Maple Math]

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]

> alpha:=0.5;

[Maple Math]

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]

[Maple Math]

[Maple Math]

[Maple Math]

>

>

>

> 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]

>

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]

> h[2,2];

[Maple Math]

> print(evalf(Area));

[Maple Math]

>

comienzo

> with(plots):

> h1:=array(1..6,1..6,[]);

[Maple Math]

> 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]

[Maple Math]

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]

> ps:=matrixplot(h1):matrixplot(h1);

> alpha:=0.5;

[Maple Plot]

[Maple Math]

>

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]

>