====== Luciana de Campos Franci ======
{{:bie5782:01_curso_atual:alunos:trabalho_final:lucianafranci:dsc07389.jpg?200|}}
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 =====
[[.:exec]]
===== 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 {{:bie5782:01_curso_atual:alunos:trabalho_final:lucianafranci:funcao_fator_de_seguranca.r|}}
Arquivo contendo a ajuda da função {{:bie5782:01_curso_atual:alunos:trabalho_final:lucianafranci:help_da_função.txt|}}