Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:alunos2012:alunos:trabalho_final:lucianafranci:start

Luciana de Campos Franci

dsc07389.jpg Aluna de doutorado em Ecologia. Departamento de Botânica, Instituto de Biologia, UNICAMP.

Título do projeto de pesquisa: Estrutura populacional e história de vida da espécie de liana Bignonia campanulata Cham. (Bignoniaceae) em um fragmento de Floresta Estacional Semidecídua no Sudeste do Brasil

Orientador: Fernando Roberto Martins

Meus exercícios

Proposta de Trabalho Final

Código da Função (Plano A)

Uma função para analisar o design mecânico de plantas utilizando o cálculo do fator de segurança. O fator de segurança é a razão entre o diâmetro observado (Dobs) e o diâmetro crítico. O diâmetro crítico (Dcrit) é calculado pela fórmula Dcrit = 0,109H3/2, onde H é a altura e 0,109 é produto da constante de proporcionalidade (0,792) multiplicada pela razão entre o módulo de elasticidade (E) e a densidade da madeira (ρ). Portanto, se os dados de E e ρ não estiverem disponíveis para a espécie é recomendável usar o valor 0,109, calculado por McMahon (1973), pois segundo e Niklas (1993) E. ρ-1 é constante em gimnospermas e dicotiledôneas arbóreas. A entrada dos dados seria um data frame composto por: Dobs, Dcrit, H, E e ρ. O default será para considerar como existentes os dados de E e ρ , caso eles não existam será utilizada na equação a constante 0,109. O output da análise deverá resultar nos valores de fator de segurança para cada indivíduo e em um gráfico de dispersão no qual a variável independente deverá ter a altura e na variável dependente, o fator de segurança, ambos logaritmizados.

Plano B

Uma função para dividir uma população em classes de tamanho. Para isso será utilizada a regra de Sturges: k= 1+ 3,322(log10n), onde n é o número de indivíduos, para se saber o número de classes. A amplitude das classes será calculada através da fórmula ac= At.k-1, sendo At o número de classes. A entrada dos dados deverá ser um data frame com as altura de cada indivíduo em cada linha. O output deverá resultar nas classes já divididas e um histograma com as classes no eixo x.

Comentários

Ótimas propostas: gerais, factíveis mas não triviais. Para a primeira (que prefiro), considere que o usuário pode querer fazer o cálculo para uma única árvore, então a entrada não precisa ser necessariamente um dataframe. Muitas funções tem argumentos de entrada alterantivos, como cor. Outro aprefeiçoamento (se vc tiver tempo) é não repetir o valor da densidade para indivíduos da mesma espécie.

Código da Função (Plano A)

safety.factor <- function (h, d, E = NULL, ro = NULL) {

  if(!is.numeric(h)&!is.integer(h)){ # Verificando se h é inteiro ou numérico
    stop("h não é númerico ou inteiro")
  }
  
  if(!is.numeric(d)&!is.integer(d)){ # Verificando se d é inteiro ou numérico
    stop("d não é númerico ou inteiro")
  }
  
  if(!is.null(E) & !is.null(ro)){ # se E e ro não são nulos verificar se são numéricos ou inteiros
    if(!is.numeric(E)&!is.integer(E)){ # Verificando se E é inteiro ou numérico
      stop("E não é númerico ou inteiro")
    }
    if(!is.numeric(ro)&!is.integer(ro)){ # Verificando se ro é inteiro ou numérico
      stop("ro não é númerico ou inteiro")
    }
  }
  
  if(is.null(E) & !is.null(ro)){ # Verificar se a pessoa informou o E e o ro.
    stop("Valores de E estão informados mas valores de ro não estão informados")
  }
  
  if(is.null(ro) & !is.null(E)){ # Verificar se a pessoa informou o E e o ro.
    stop("Valores de ro estão informados mas valores de E não estão informados")
  }
  
  if(is.null(E) & is.null(ro)){ # comparando os comprimentos de h e d quando não tem valores de E e ro
    if(length(h) != length(d)){
      stop("vetores h e d não tem mesmo comprimento")
    } 
  }
  
  if(!is.null(E) & !is.null(ro)){ # comparando os comprimentos de h e d quando tem valores de E e ro
    if(length(E) != length(ro)){
      stop("Vetores E e ro não tem mesmo comprimento")
    }
    if(length(E) != length (h)){ # Comparando se E tem o mesmo comprimento de h e d
      stop("Vetor E não tem mesmo comprimento de h e d")
    }
    if(length(ro) != length(h)){ # Comparando se ro tem o mesmo comprimento de h e d
      stop("Vetor ro não tem mesmo comprimento de h e d")
    }
  }
  
  if(is.null(E) & is.null(ro)) { # se os valores de E e ro não existirem
    dcrit <- 0.109*(h^1.5) # vetor do diâmetro crítico
  }
  
  if(!is.null(E) & !is.null(ro)){
    dcrit  <- 0.792*(E/ro)*(h^1.5) # vetor do diâmetro crítico quando existe E e ro no dataframe
  }
  
  dif <- d - dcrit # verificando se há valores observados menores que os valores críticos
  
  if(sum(dif < 0) > 0){ # somando quantos valores são menores que zero
    cat("Há valores de diâmetro observado menores que valor de diâmetro crítico calculado")
  }
  
  bending <- d/dcrit # cálculo do fator de segurança  
  windows()
  plot(h, bending, xlab = "Altura", ylab = "Fator de segurança", ylim = c(0,max(bending)))
  abline(h=1, col = "red")
  return(bending)
}

Página de Ajuda

safety.factor				package: nenhum					R Documentation


Função para análise da estabilidade mecânica de plantas


Description:

	Calcula o fator de segurança para plantas considerando o diâmetro crítico e observado. Plota 
	um gráfico do fator de segurança em função da altura das árvores. 


Usage:

	## Default method:
	safety.factor(x, y, E = NULL, ro = NULL)


Arguments:

	x	Altura de cada indivíduos em metros.
	y	Diâmetro de cada indivíduos em centímetros.
	E 	módulo de elasticidade de cada indivíduo.
	ro	densidade da madeira de cada indivíduo.


Details:

	A função é aplicável apenas quando a altura está em metros e o diâmetro em centímetros. 
	Se os valores de E e ro não estiverem disponíveis a função utilizará a constante 0.109, a qual é
	produto da constante de proporcionalidade (0,792) multiplicada pela razão entre o módulo de 
	elasticidade (E) e a densidade da madeira (ro). Quandos os dados de E e ρ não estão disponíveis
	para a espécie é recomendável usar o valor 0,109, calculado por McMahon (1973), pois segundo
	Niklas (1993) E.(ro^-1) é constante em gimnospermas e dicotiledôneas arbóreas. 
	A função retorna um vetor com os valores do fator de segurança (razão entre diâmetros observados
	e diâmetros críticos).
	A linha plotada no gráfico indica o limite crítico de tombamento elástico.


Author (s):

	Luciana de Campos Franci
	Aluna de Doutorado em Ecologia na Universidade Estadual de Campinas, Campinas, Brasil.


References:

	McMahon, T. 1973. Size and Shape in Biology. Science 179:1201-1204.
	Niklas, K. J. 1993. The scaling of plant height: a comparison among major plant clades and 
	anatomical grades. Annal of Botany 72:165-172.


Examples:

# Cálculo do fator de segurança quando os valores de E e ro não estão disponíveis. (Dados fictícios)
diametro <- c(0.9, 2, 2, 2.07, 2.71, 1.3, 2.05, 1.7, 1.08, 0.8) # Diâmetros dos indivíduos
altura <- c(0.66, 2.2, 1.46, 1.7, 1.78, 1.16, 1.8, 1.02, 0.71, 0.47) # Alturas dos indivíduos
safety.factor(h = altura, d = diametro)

# Cálculo do fator de segurança quando os valores de E e ro estão disponíveis. (Dados fictícios)
diametro <- c(0.9, 2, 2, 2.07, 2.71, 1.3, 2.05, 1.7, 1.08, 0.8) # Diâmetros dos indivíduos
altura <- c(0.66, 2.2, 1.46, 1.7, 1.78, 1.16, 1.8, 1.02, 0.71, 0.47) # Alturas dos indivíduos
elas <- c(0.2, 0.5, 0.6, 0.6, 0.5, 0.4, 0.5, 0.3, 0.2, 0.5) # Módulo de elasticidade dos indivíduos
densi <- c(0.7, 0.6, 0.6, 0.5, 0.5, 0.4, 0.6, 0.8, 0.7, 0.6) # Densidade da madeira dos indivíduos
p.decrit <- safety.factor(h = altura, d = diametro, E = elas, ro = densi)

Arquivo da função

Arquivo da função funcao_fator_de_seguranca.r Arquivo contendo a ajuda da função help_da_funcao.txt

05_curso_antigo/alunos2012/alunos/trabalho_final/lucianafranci/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)