Índice
- O Curso R
-
- Tutoriais
-
- Apostila
-
- 6. Testes de Hipótese (em preparação!)
- Exercícios
-
- Material de Apoio
-
- Área dos Alunos
-
- Cursos Anteriores
-
IBUSP
Outras Insitutições
Linques
Visitantes
Outras Insitutições
Trabalho final
Aluno Caian Souza Gerolamo
Área de Estudo: Anatomia funcional vegetal
CÓDIGO DA FUNÇÃO
##Codigo da Função## ###Trabalho Final### ##objetivo da funcao: A função fornece a porcentagem de afunilamento e as variaveis biomecânicas: segundo momento de area, rigidez a flexão e o modulo de young para cada amostra de caule coletado e mensurado. Bem como um grafico que sintetize as informações mais relevantes sobre como esta variando a flexibilidade das amostras com relação ao diametro da amostra, como visto na literatura.### ###Resumo: Com a entrada de dados organizado na forma de uma tabela1 de força (Newtons) e deflecção (em milimetros) e outra tabela2 com a identificação das amostras e as medidas de diametro horizontal e vertical (em milimetros) em três porções da amostra. Região apical, região mediana e região basal. Sendo Dh. prox, Dh.med,Dh.base, Dv.prox, Dv.med e Dv.base os valores respectivos de diametros horizontais do apice, meio e base e de diametros verticais do apice, meio e base de cada amostra; e Span o comprimento em milimetros da amostra. O argumeto N é referente ao numero de amostras das tabelas. A função primeiramente separa da tabela1 as linhas de cada amostra, e cria para cada nova tabela (separada por amostra) tres novas colunas: D. acumulativa referente a deflexão acumulativa; M. acumulativa referente a massa acumulativa; colna de força referente as massas acumulativas multiplicadas pela força da gravidade (0.00981). Posteriormente calcula-se o coeficiente de deflecção da reta de regressão, referente as colunas de força por deflexão. Se o R² for maior que 0.98 utiliza-se o valor do coeficiente de inclinação, este coeficiente vai ser utilizado para o calculo da Rigidez a Flexão, junto com comprimento da amostra (Span). A tabela 2, com os diametros horizontais e verticais, calculamos a porcentagem do afunilamento da amostra para podermos dar continuidade aos calculos de flexibilidade. Se a porcentagem for superior a 10% a amostra não fornece valores confiaveis para os calculos de flexibilidade. Posteriormente calcula-se o segundo momento de area com base nas formulas geometricas da circunferencia, calcula-se a rigidez a flexão com base na formula da literatura (Rowe et al 2006) e por ultimo o Modulo de young.A função finaliza com um gráfico do Modulo de flexibilidade (Modulo de Young) pelo Segundo momento de area, que mostra a relação da flexibilidade com o diametro da amostra para cada amostra### biomecanic.test= function(tabela1, tabela2, N) ###Entrada da função com duas tabelas e um argumento referente ao numero de amostras.A primeira tabela é referente aos dados organizado na forma de uma tabela com duas colunas: força (Newtons) e deflecção (em milimetros).A outra tabela (tabela 2) com a identificação das amostras e as medidas de diametro horizontal e vertical (em milimetros) em três porções da amostra.Sendo Dh. prox, Dh.med,Dh.base, Dv.prox, Dv.med e Dv.base os valores respectivos de diametros horizontais do apice, meio e base e de diametros verticais do apice, meio e base de cada amostra; e Span o comprimento em milimetros da amostra.O argumeto N é referente ao numero de amostras das tabelas## { for(i in 1:N) ## Primeiro ciclo que vai de 1 até o numero de amostras { T.segmento= tabela1[tabela1$segmento==i,] ## Seleção de todas as linhas de cada amostra com base na tabela 1 n=length(T.segmento[,1]) ##Numero de linhas de cada amostra T.segmento$D.acumulativa= rep(0,n) ## Criação da coluna Deflexão acumulativa for(z in 2:n) ## Segundo ciclo para o calculo dos valores da coluna Deflexão acumulativa { tab=T.segmento[z,2]+T.segmento$D.acumulativa[z-1] ##calculo dos valores da coluna Deflexão acumulativa T.segmento$D.acumulativa[z]=tab ## Confecção da coluna de deflexão acumulativa } T.segmento$M.acumulativa= rep(0,n) ## Criação da coluna Massa acumulativa for(j in 2:n) ## Terceiro ciclo para o calculo da Massa acumulativa { tab.=T.segmento[j,3]+T.segmento$M.acumulativa[j-1]## Calcula da Massa acumulativa T.segmento$M.acumulativa[j]=tab. ## Confecção da coluna de Massa acumulativa T.segmento$force=rep(0,n) ## Criação da coluna Força T.segmento$force= T.segmento$M.acumulativa*0.00981 ## Confecção da coluna Força com base na coluna Massa acumulativa } cf=lm(T.segmento[,6]~T.segmento[,4]) ## Calculo do coeficiente de regressão linear com base nas colunas de força por deflexão acumlativa r=summary(cf)$r.squared ## Seleção do valor de R² if (r>0.98) ##Seleção dos valores de R² maiores que 0.98 {coef(cf) ## Calculo do coeficiente a=tabela2[i,2] ## Criando vetor Diametro horizontal apical para os valores da tabela 2 b=tabela2[i,3] ## Criando vetor Diametro horizontal mediano para os valores da tabela 2 d=tabela2[i,4] ## Criando vetor Diametro horizontal basal para os valores da tabela 2 e=tabela2[i,5] ## Criando vetor Diametro vertical apical para os valores da tabela 2 f=tabela2[i,6] ## Criando vetor Diametro vertical mediano para os valores da tabela 2 g=tabela2[i,7] ## Criando vetor Diametro vertical basal para os valores da tabela 2 second.moment= mean(c(((pi/4)*((a/2)^3/2)*e),((pi/4)*((b/2)^3/2)*f),((pi/4)*((d/2)^3/2)*g)))## Calculo do sugundo momento de area com base na literatura Rig.Flex= ((tabela2[i,8]^3*coef(cf)[2])/48) ## Calculo da Rigidez a flexão com base na literatura e utilizando os valores do coeficiente de inclinação da reta e o comprimento da amostra (Span) M.Young= (Rig.Flex/second.moment) ## Calculo do Modulo de Young referente ao modulo de flexibilidade com base na literatura } else {cat("\n", "Inclinação da reta fora do limite R² < 0.98","\n")} ## Se o R² for inferior a 0.98 retorna essa frase que não é possivel calcular as variaveis biomecanicas media.h=mean(c(a,b,d)) ## Calculo da media dos valores de diametro horizontal media.v=mean(c(e,f,g))##Calculo das medias dos valores de diametro verticias h.prox=(abs(((media.h-a)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro horizontal apical com relação a media h.med=(abs(((media.h-b)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro horizontal mediano com relação a media h.base=(abs(((media.h-d)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro horizontal basal com relação a media v.prox=(abs(((media.v-e)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro vertical apical com relação a media v.med=(abs(((media.v-f)/media.h)*100))## Calculo da porcentagem de afunilamento do diametro vertical mediano com relação a media v.base=(abs(((media.v-g)/media.v)*100))## Calculo da porcentagem de afunilamento do diametro vertical basal com relação a media segmento=i ##separação de cada amostra cat("\n","\n","Porcentagem de afunilamento:","\t", "\t", "amostra >>>>>>>", segmento,"<<<<<<<", "\n","\n","\t", "-Diametro horizontal proximal",h.prox,"%","\n","\t", "-Diametro horizontal mediano",h.med,"%","\n","\t", "-Diametro horizontal distal",h.base,"%","\n", "\t","-Diametro vertical proximal",v.prox,"%","\n","\t", "-Diametro vertical mediano",v.med,"%","\n", "\t","-Diametro vertical distal",v.base,"%","\n") ##Retorna a tela os valores de porcentagem de afunilamento de cada amostra if (h.prox >10 | h.med>10 | h.base>10 |v.prox >10 | v.med>10 |v.base>10) ## Se a porcentagem de afunilamento de cada amostra for superior ao maximo permitido de 10% retorna um aviso dizendo que o afunilamento é superior ao limite { cat("\n","\t","\t","\t",">>>>>>>>>>>>>>> O AFUNILAMENTO É SUPERIOR QUE O PERMITIDO DE 10% <<<<<<<<<<<<<<<<") ## Aviso de retorno sobre o afunilamento } else {cat ("\n", "\n", "\t","SECOND MOMENT OF AREA ->", second.moment, "mm^4","\n", "\n", "\t", "FLEXURAL STIFFNESS ->",Rig.Flex,"Nmm^2", "\n", "\n", "\t", "MODULO DE YOUNG ->", M.Young,"MNm-2","\n") ##Se o afunilamento esta dentro do limite (menor que 10%), retorna na tela as variaveis de biomecânica calculadas plot(second.moment,M.Young, ylim=c(0,10000), xlim=c(0,100),ylab= "Young's Modulus (NMm-²)", xlab="Second Moment of Area (mm^4)", bty="l", tcl=0.3, cex=1.2, pch= (14+i) ) ## Construção do grafico referente aos valores encontrados de Modulo de Young com os valores de Segundo momento de area de cada amostra par(new=TRUE) ## Permite a plotagem de mais pontos no mesmo grafico } } }
HELP DA FUNÇÃO
biomecanic.test package:nenhum R Documentation ~~Calculo das variaveis biomecânicas: Modulo de Young, Rigidez a Flexão e Segundo momento de area~~ Description:A função fornece a porcentagem de afunilamento de cada amostra e as variáveis biomecânicas: Segundo momento de área, Rigidez a flexão e o Modulo de young para cada amostra de caules coletados e mensurados. Bem como um gráfico que sintetize as informações mais relevantes sobre como esta variando a flexibilidade de cada amostras com relação ao diametro da amostra. Usage: biomecanic.test(table1, table2, N) Arguments: table1 Data.frame contendo o numero de observações em cada amostra e três variáveis: Amostra, Deflexão (milimetros), Massa (gramas) respectivamente, referente aos valores das colunas. table2 Data.frame contendo o numero de amostras e oito variaveis referente, respectivamente, a: amostra, diametros horizontais do apice, meio e base e de diametros verticais do apice, meio e base de cada amostra e a oitava conula referente ao comprimento em milimetros da amostra. N Valor numerico referente ao numero de amostras. Details: As variaveis biomecânicas:Segundo momento de area, Rigidez a flexão e o Modulo de young, são calculadas com base na literatura (Rowe et al 2006) e são utilizadas para determinar os valores de flexibilidade e Rigidez da amostra. Porem para utlizarmos essas variaveis biomecênicas é necessario que nossa amostra não esteja afunilando a ponto de interferir no resultado final de Flexibilidade e induzir a interpretações erroneas sob a flexibilidade da amostra. Por isso calculamos tambem a porcentagem de afunilamento de cada porção da amostra com base nos diametros horizontais apicais, medianos e basais e diametros verticais apicais, medianos e basais. O limite proposto de 10% de afunilamento permitido foi feito sob orientação do especialista em biomecânica Nick Rowe. Assim como a seleção de valores do coeficiente de regressão em que o r² seja maior que 0.98. Esta função depende da entrada dessa duas tabelas organizadas conforme especificado nos argumentos. Value: A função Retorna na tela, para cada amostra, os valores de Porcentagem de afunilamento de cada porção (apical, mediano e basal). Bem como o Segundo momento de area, Rigidez a flexão e o Modulo de young para cada amostra. Porcentagem de afunilamento Refere-se a medida de afunilamento de cada porção. Calculada pela divisão do diametrode cada porção pela media, dividido pelo diametro e multiplicado por cem. -> ((D - media horizontal ou vertical/D)*100) onde o D é cada valor de diametro de cada porção. Segundo momento de area Refere-se a medida geometrica transversal da amostra. Para uma elipse temos: (pi/4)* (a^3)*(c), onde a e c são respectivamente os raios horizontias e verticais da amostra. Rigidez a Flexão Refere-se a rigidez a flexão da amostra com base na formula: ((l^3)*b)/48, onde l e b são respectivamente os valores de comprimento da amostra e coeficiente de inclinação da reta de regressão. Modulo de Young Referente a Flexibilidade da amostra. Calculada dividindo a Rigidez a flexão pelo segundo momento de area. Author(s): Caian Souza Gerolamo caiansg@gmail.com References: Rowe NP, Isnard S, Gallenmüller F, Speck T. Diversity of mechanical architectures in climbing plants: an ecological perspective. In: Herrel A, Speck T, Rowe NP, editors. Ecology and biomechanics: a mechanical approach to the ecology of animals and plants. Boca Raton, FL: Taylor & Francis; 2006. Examples: table1= read.csv("tabela 1 para R.csv", header=T, sep =";")## Chamando a tabela de deflexão e massa ## Exemplo de tabela 1 ## segmento Deflection.microscope.units..mm. Masses.added..g. 1 1 0.0 0.00 2 1 0.5 15.70 3 1 0.5 15.70 4 1 0.5 16.00 5 1 0.5 16.00 6 1 1.0 26.98 7 1 2.0 50.30 8 1 1.0 50.50 9 1 2.0 52.40 10 1 3.0 52.20 11 1 1.0 15.09 12 1 0.5 14.56 13 1 1.5 50.74 14 2 0.0 0.00 15 2 0.5 15.70 16 2 0.0 16.00 17 2 0.5 16.00 18 2 0.5 15.70 19 2 1.5 52.40 20 2 1.0 52.20 21 2 1.5 50.50 22 2 0.5 26.98 23 2 2.0 50.30 24 2 1.0 29.65 25 3 0.0 0.00 26 3 1.0 14.56 27 3 1.0 15.09 28 3 1.0 12.20 29 3 3.0 15.70 30 3 1.0 15.70 31 3 1.0 16.00 32 3 2.0 16.00 33 3 3.0 26.98 table2= read.csv("tabela 2 para R.csv", header=T, sep =";")##chamando a tabela de diametros horizontais e verticais de cada porção da amostra e o comprimento da amostra ##Exemplo de tabela 2## segmento DH..prox DH..Med DH..Base DV..Prox DV..Med DV..Prox.1 Span 1 1 5 4.9 4.9 5.0 4.9 4.8 160 2 2 9 8.0 7.5 8.5 8.0 7.5 220 3 3 3 3.0 2.9 3.0 3.0 2.8 200 biomecanic.test(table1, table2, 3)