\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\usepackage{listings}
\date{\today}
\title{}
\author{}
\begin{document}



Trabalho final 

Aluno Caian Souza Gerolamo 

Área de Estudo: Anatomia funcional vegetal 

CÓDIGO DA FUNÇÃO\lstset{frame=single}
\begin{lstlisting}

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

}


\end{lstlisting}



HELP DA FUNÇÃO \lstset{frame=single}
\begin{lstlisting}



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)

\end{lstlisting}



\href{media/bie5782/01_curso_atual/alunos/trabalho_final/caian.gerolamo/funcao_biomec._test_final._comentado_.r}{funcao\_biomec.\_test\_final.\_comentado\_.r}

\href{media/bie5782/01_curso_atual/alunos/trabalho_final/caian.gerolamo/help_da_funcao_biomecanic.test_.r}{help\_da\_funcao\_biomecanic.test\_.r}

\end{document}
