150 100 50 0 Caméfitos/Chamaephytes Fanerófitos escandentes/liana-phanerophytes Geófitos/Geophytes Helófitos/Helophytes Hemicriptófitos/Hemicryptophytes Hidrófitos/Hydrophytes Macrofanerófitos/Macrophanerophytes Mesofanerófitos/Mesophanerophytes Microfanerófitos/Microphanerophytes Nanofanerófitos/Nanophanerophytes Proto-hemicriptófitos/Protohemicryptophytes Terófitos/Therophytes
Aceraceae Alismataceae Amaryllidaceae Anacardiaceae Apocynaceae Aquifoliaceae Araceae Araliaceae Aristolochiaceae Asclepiadaceae Aspidiaceae Aspleniaceae Athyriaceae Betulaceae Blechnaceae Boraginaceae Callitrichaceae Campanulaceae Cannabaceae Caprifoliaceae Caryophyllaceae Cistaceae Compositae Convolvulaceae Crassulaceae Cruciferae Cucurbitaceae Cupressaceae Cyperaceae Dioscoreaceae Dipsacaceae Droseraceae Ericaceae Euphorbiaceae Fagaceae Gentianaceae Geraniaceae Gramineae Guttiferae Hemionitidaceae Hypolepidaceae Iridaceae Juglandaceae Juncaceae Labiatae Lauraceae Leguminosae Lentibulariaceae Liliaceae Lythraceae Malvaceae Moraceae Myrtaceae Oleaceae Onagraceae Orchidaceae Orobanchaceae Osmundaceae Papaveraceae Pinaceae Plantaginaceae Plumbaginaceae Polygalaceae Polygonaceae Polypodiaceae Portulacaceae Potamogetonaceae Primulaceae Rafflesiaceae Ranunculaceae Resedaceae Rhamnaceae Rosaceae Rubiaceae Rutaceae Salicaceae Santalaceae Saxifragaceae Scrophulariaceae Sinopteridaceae Solanaceae Thymelaeaceae Ulmaceae Umbelliferae Urticaceae Valerianaceae Violaceae Vitaceae 0 10 20 30 40 50 60
αβγ αβ γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
α β γ
A B C
B C B A A B D C E
A B C B A B C D E
f(x,y) f(x,y) xy f(x,y) f(x,y) f(x,y) x y x x x x x + ˆ ˆ y y y y y + ˆ ˆ x x x x x + ˆ ˆ y y y y y + ˆ ˆ
x/y f(x,y) x/y f(x,y)x ± y x f(x,y) y EAM x + EAM y EAM x + EAM y 1 n 1 xˆ i EAM x + EAM 2 y n i= 1 yˆ i yˆ i 1 n xˆ i + EAM x xˆ i n i= 1 yˆ i EAM y yˆ i xyixyi xˆ i, yˆ i n EQM x + EQM y EQM x + EQM n 2 1 1 xˆ i EQM x + EQM 2 4 y n i= 1 yˆ i yˆ i 2 1 n ˆ ˆ = 1 ˆ ˆ xi + EQM x xi n i y yi i EQM y ( y 2 )
#vert Vértices do envolvente convexo. #Descrição: Devolve um vector com os índices das colunas de M1 que são vértices # do envolvente convexo das colunas de M1 (a cada coluna de M1 # corresponde uma coordenada). #Uso: vert (M1) #Argumentos: M1 Matriz de coordenadas. function (M1) { nl<-dim(m1)[1] nc<-dim(m1)[2] if (nc==1) { vertices<-c(1) } else { M1.exp<-rbind(M1,1) obj<-rep(1,nc-1) sentido<-rep("=",nl+1) vertices<-null j<-1 while (j <= nc){ M1.bar<-M1.exp[,j] resultado<-lp("min",obj,m1.exp[,-j],sentido,m1.bar)$status if (resultado==2) vertices<-c(vertices,j) j<-j+1 } } return(vertices) } #envol Vértices dos sucessivos envolventes convexos. #Descrição: Devolve uma lista em que cada componente corresponde a um vector com # os índices das colunas de M1 que são vértices dos sucessivos # envolventes convexos das colunas de M1 (a cada coluna de M1 # corresponde uma coordenada). Os envonventes convexos sucessivos são # calculados retirando da matriz M1 as coordenadas que são vértices do # envolvente convexo anterior. O número de componentes corresponde ao # número de envolventes convexos encontrados, sendo apresentados, na # lista, do mais exterior para o mais interior.
#Uso: envol (M1) #Argumentos: M1 Matriz de coordenadas. function (M1){ ind<-c(1:dim(m1)[2]) envolventes<-list() oqfalta<-m1 while (dim(oqfalta)[2]>0) { aux<-vert(oqfalta) envolventes<- c(envolventes,list(ind[aux])) ind<-ind[-aux] oqfalta<-as.matrix(oqfalta[,-aux]) } return(envolventes) } #pert Se pertence ao envolvente convexo. #Descrição: Devolve TRUE (FALSE) se o vector p (não) pertence ao envolvente # convexo das colunas de M1. #Uso: pert (M1,p) #Argumentos: M1 Matriz de coordenadas. # p Vector com as coordenadas do ponto que se pretende testar. function (M1,p){ p<-as.vectorp<-p\na p<-c(p,1) nl<-dim(m1)[1] nc<-dim(m1)[2] pertence<-true obj<-rep(1,nc) sentido<-rep("=",nl+1) resultado<-lp("min",obj,rbind(m1,1),sentido,p)$status if (resultado==2) pertence<-false return(pertence) } #ord1 Ordem do envolvente convexo mais interior (ponto). #Descrição: Devolve a ordem do envolvente convexo mais interior que inclui o # ponto p. A ordem zero significa que não pertence a nenhum envolvente # convexo da lista l.envol. A ordem devolvida corresponde à ordem das # componentes da lista l.envol. #Uso: ord1 (M1,l.envol,p) #Argumentos: M1 Matriz de coordenadas. # l.envol Lista do tipo da produzida pela função envol. # p Vector com as coordenadas do ponto que se pretende testar. function (M1,l.envol,p) { ordem<-0 if (pert(as.matrix(m1[,l.envol[[1]]]),p)) { esq<-1 dir<-length(l.envol) while(esq<dir-1) { meio<-(esq+dir)%/%2 if (pert(m1[,l.envol[[meio]]],p)) esq<-meio else dir<-meio } ordem<-esq if (esq==dir-1) { if (pert(as.matrix(m1[,l.envol[[dir]]]),p)) ordem<-dir }
} return(ordem) } #M.ord Ordem do envolvente convexo mais interior (várias matrizes). #Descrição: Devolve uma matriz com a ordem do envolvente convexo mais interior # que inclui cada uma das colunas da matriz M2.A ordem zero significa # que não pertence a nenhum envolvente convexo. Cada linha da matriz # devolvida refere-se a cada uma das componentes da lista L1. #Uso: M.ord (L1,M2) #Argumentos: L1 Lista com matrizes de coordenadas em cada componente. # M2 Matriz com a colecção das coordenadas dos pontos que se # pretendem testar com as várias matrizes de L1. function (L1,M2) { M.ordem<-NULL for (k in c(1:length(l1))) { l.envol<-envol(l1[[k]]) V.ordem<-NULL for (i in c(1:dim(m2)[2])) { V.ordem<-c(V.ordem,ord1(L1[[k]],l.envol,M2[,i])) } M.ordem<-rbind(M.ordem,V.ordem) } return(m.ordem) }
A B C D E hewlettiano... 58 hortoniano... 58 F G H I
L M N P R abdutivo...36 dedutivo...36 indutivo...36 abductive... 36 deductive... 36 inductive... 36 Hewlettian... 58 Hortonian... 58 S T V Z