====== 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|}}