BÖLÜM III LĠTERATÜR TARAMASI
3.2. Çelik lifli SertleĢmiĢ Betonun Özellikleri
Embora tenhamos estudado diversas estruturas, todas elas possuem a mesma sintaxe, que nem sempre fica vis´ıvel ao usu´ario. Toda express˜ao no Mathema- tica ´e da forma
Nome[ arg1 , arg2 , ... ]
onde Nome ´e o nome de uma fun¸c˜ao e arg1, arg2, ..., s˜ao os seus argumentos. Esta estrutura pode ser visualizada com o comando
5.13 Estrutura das express˜oes 111
FullForm[ estrutura ]
Exemplo 5.18 Vamos observar a estrutura de uma lista, de uma soma e um produto Comande: Clear[ a, b, c, f ] Comande: FullForm[ { a, b, c } ] Resposta: List[ a , b , c ] Comande: FullForm[ a + b + c ] Resposta: Plus[ a , b , c ] Comande: FullForm[ a * b * c ] Resposta: Times[ a , b , c ] Comande: FullForm[ f[ a , b , c ] ] Resposta: f[ a , b , c ]
Retornando aos comandos Apply e Map, percebemos que o primeiro troca o nome da estrutura por f enquanto o segundo aplica f a cada argumento da estrutura. Podemos redefinir estes comandos escrevendo
Apply[ f , Nome[ a , b , c ] ] = f[ a , b , c ]
Map[ f , Nome[ a , b , c ] ] = Nome[ f[ a ] , f[ b ] , f[ c ] ]
Exemplo 5.19 Observe os resultados. Limpe os valores de a e b e Comande: Apply[ Plus , { a , b } ]
Resposta: a + b
Comande: Apply[ Times , a + b ] Resposta: a b
Exemplo 5.20 Vamos calcular a m´edia aritm´etica e geom´etrica da lista = { 1, 2, 3, 4, 5, 6 }
Comande: lista = { 1, 2, 3, 4, 5, 6 } ;
Comande: arit = Apply[ Plus, lista ] / Length[ lista ] Resposta: 7 / 2
Comande: geo = Apply[ Times, lista ]ˆ( 1 / Length[ lista ] ) //N Resposta: 2.9938
Como desafio, solicitamos ao leitor que generalize este exemplo, definindo uma fun¸c˜ao que calcule a m´edia aritm´etica e outra que calcule a m´edia geom´etrica de uma lista qualquer.
5.14
Fun¸c˜ao anˆonima
Quando necessitamos usar uma fun¸c˜ao diversas vezes, n´os a definimos atribuin- do-lhe um nome. Com este procedimento, poderemos cham´a-la sempre que for necess´ario. Em determinadas ocasi˜oes, precisamos da fun¸c˜ao uma ´unica vez. Eventualmente, este ´e o caso quando usamos as fun¸c˜oes Array, Apply, Fold, Map, Nest, FixedPoint, Outer, Inner. Quando tal fato ocorrer, ´e vantajoso usar uma fun¸c˜ao anˆonima. Para aplicar uma fun¸c˜ao anˆonima nos valores val1, val2, ..., use
Function[ { x1 , x2 , ... } , express˜ao ] [ val1 , val2 , ... ]
onde x1, x2, ..., s˜ao os argumentos da fun¸c˜ao anˆonima que aparecem na express˜ao. A Function substitui as ocorrˆencias de x1, x2, ..., por val1, val2, ... e calcula a express˜ao resultante. Se a fun¸c˜ao possuir uma ´unica vari´avel, pode-se omitir as chaves que envolveriam esta vari´avel. Pode-se tamb´em usar a sintaxe
5.14 Fun¸c˜ao anˆonima 113 Os parˆenteses s˜ao dispens´aveis devido a baixa prioridade do &. Todavia, iremos inclui-lo quando houver d´uvida quanto `a prioridade dos operadores envolvidos. Com esta ´ultima forma de apresenta¸c˜ao de uma fun¸c˜ao anˆonima, os argumentos devem ser denotadas pelos s´ımbolos abaixo
# representa a primeira vari´avel #n representa a n-´esima vari´avel ## representa todas as vari´aveis ##n representa todas as vari´aveis,
a partir da n-´esima
Exemplo 5.21 Observem os resultados obtidos com os comandos deste exem- plo.
Comande: Clear[ a , b ]
Comande: a[ # ] + b[ # ] & [ xˆ2 ] Resposta: a[ x2 ] + b[ x2 ]
Comande: Function[ a , 2 * a + Cos[ a ] ] [ Exp[ x ] ] Resposta: 2 Ex + Cos[ Ex ]
Comande: lis1 = { { a, b }, { x, y } } Resposta: {{a,b},{x,y}}
Comande: lis2 = Map[ { #[[2]], #[[1]] }&, lis1 ] Resposta: {{b,a},{y,x}}
Exemplo 5.22 Vamos eliminar os termos que contˆem x e selecionar os ter- mos contendo xˆ2 no polinˆomio
Queremos alertar o leitor de que existem comandos que efetuam estas tarefas de modo direto e que foram descritos no cap´ıtulo que trata da ´Algebra. Comande: x + y + xˆ2 + yˆ2 + x*y + x*yˆ2 + xˆ2*y
Resposta: x + x2+ y + x y + x2y + y2 + x y2
Comande: poli = Collect[ % , x ]
Resposta: y + y2 + x2(1 + y) + x (1 + y + y2)
Comande: Select[ poli , FreeQ[ # , x ] & ] Resposta: y + y2
Comande: Select[ poli , MatchQ[ # , xˆ2 ] & ] Resposta: x2(1 + y)
Observamos que xˆ2 (observe a sublinha) ´e um pattern (padr˜ao). O co- mando est´a pedindo que sejam selecionados todos os termos do polinˆomio que contˆem o padr˜ao xˆ2 .
5.15
Comando de repeti¸c˜ao Do
Vimos diversos comandos que executam tarefas repetidas, que se repetem `a medida que v˜ao modificando um parˆametro. Um comando repetitivo bastante importante ´e o
Do[ com1 ; com2 ; .... , { i , imin , imax , di } ]
Ele executa os comandos com1, com2, ..., nesta seq¨uˆencia, enquanto o parˆa- metro i recebe sucessivamente os valores
imin, imin + di, imin + 2 di, imin + 3 di, ..., imin + k di sendo k o maior inteiro para o qual imin + k di ≤ imax.
A lista que fornece a varia¸c˜ao do parˆametro i pode receber uma das formas simplificadas
5.16 Interpola¸c˜ao 115 cujos significados explicamos anteriormente.
Podemos emitir o Do com dois ou mais parˆametros.
Do[ com1; com2; .... , { i, imin, imax, di }, { j, jmin, jmax, dj } ]
Exemplo 5.23 Vamos calcular os polinˆomios de Legendre correspondentes a n=1, n=2, n=3, definidos pela f´ormula de Rodrigues
Pn(x) = 1 n!2n dn dxn [(x 2 − 1)n] , n = 0, 1, 2, . . . Comande: plegendre[ n , x ] := D[ ( xˆ2 – 1 )ˆn , {x , n} ] / ( n! 2ˆn) Comande: Do[ Print[ Simplify[ plegendre[ n, x ] ] ] , { n, 1, 3 } ] Resposta: 2x −1 + 3x 2 2 x(−3 + 5x2) 2
5.16
Interpola¸c˜ao
Consideremos a lista dados = { { x1, y1 } , { x2, y2 } , ..., { xn, yn } } A fun¸c˜ao InterpolatingPolynomial[ dados , x ]gera um polinˆomio do grau n-1, y = P (x), que interpola os dados, isto ´e, yk = P[ xk ], k=1, 2, ..., n. A fun¸c˜ao
gera uma InterpolatingFunction que pode interpolar os valores dos dados no intervalo [xmin, xmax ], onde xmin = min{ x1, x2, ..., xn } e xmax = max{ x1, x2, ..., xn }
Exemplo 5.24 Vamos trabalhar com estas fun¸c˜oes.
Comande: dados = { { 1 , 1}, { 2 , 2 } , { 4 , 4 } , { 6 , 6 } , { 7 , 1 } , { 8 , 8 } }
Resposta: { { 1 , 1 }, { 2 , 2 } , { 4 , 4 } , { 6 , 6 } , { 7 , 1 } , { 8 , 8 } } Comande: poli[ x ] = Expand[
InterpolatingPolynomial[ dados, x ] ] Resposta: −(1285 ) + 799 15x − 36 x 2+32 3 x 3 − 75x4+ 1 15x 5
Comande: interpol = Interpolation[ dados ] Resposta: InterpolatingFunction[ { 1 , 8 } , < > ] Comande: poli[ 5 ] //N
Resposta: 7.4
Comande: interpol[ 5 ] //N Resposta: 6.2
Observe que as interpola¸c˜oes geradas s˜ao diferentes. O InterpolatingFunc- tion gera uma interpola¸c˜ao local. Em cada intervalo ele gera um poli- nˆomio interpolador (esta fun¸c˜ao gera um ”spline”). O Interpolating- Polynomial gera um ´unico polinˆonio que interpola os dados em todo o intervalo que vai desde o menor at´e o maior valor de x. Para patentear esta observa¸c˜ao,
Comande: Plot[ poli[ x ] , { x , 1, 8 } ,
PlotRange − > { { 0 , 10 } , { 0 , 10 } } ,
Ticks − > { { 1 , 2 , 4 , 6 , 8 , 10 } , { 2 , 4 , 6 , 8 , 10 } } ]
5.16 Interpola¸c˜ao 117 Resposta: 1 2 4 6 8 10 2 4 6 8 10 12
Comande: Plot[ interpol[x] , { x , 1 , 8 } ,
PlotRange − > { { 0 , 12 } , { 0 , 12 } } , Ticks − > { { 1 , 2 , 4 , 6 , 8 , 10 } , { 2 , 4 , 6 , 8 , 10 , 12 } } ] 1 2 4 6 8 10 2 4 6 8 10 12
Cap´ıtulo 6
Equa¸c˜oes
Este cap´ıtulo se destina ao estudo da solu¸c˜ao de equa¸c˜oes alg´ebricas.
6.1
Teste de igualdade
No Mathematica existe uma diferen¸ca entre os sinais
= e = =
Quando escrevemos
x = y
estamos atribuindo `a vari´avel x o valor y. Exemplo 6.1 Siga as orienta¸c˜oes
Comande: var = 2 y + 3 Resposta: var = 3 + 2 y
Observe que a resposta foi uma repeti¸c˜ao do comando emitido. Apenas se atribuiu o valor 2y+3 `a vari´avel var.
x = = y
estamos solicitando que o Mathematica verifique se x ´e ou n˜ao igual a y. Se forem iguais, o resultado da verifica¸c˜ao ser´a True (verdadeiro). Se n˜ao forem iguais, o resultado ser´a False (falso).
Exemplo 6.2 Desenvolva o exemplo Comande: 2 + 3 = = 5 Resposta: True Comande: 2 + 3 = = 6 Resposta: False Comande: x = = 3 Resposta: x = = 3
Como n˜ao atribu´ımos valor a x, a equa¸c˜ao pode ser ou n˜ao verdadeira. Neste caso, o Mathematica devolve o comando digitado.
Comande: x = 3 Resposta: 3
Observe que a resposta repetiu o valor de x. Comande: x = = 3
Resposta: True
Como agora x = 3, a equa¸c˜ao x = = 3 ´e verdadeira.
Para evitar que o x continue valendo 3 durante toda a sess˜ao do Mathematica, limpe este valor.
Comande: Clear[ x ] Comande: x
Resposta: x
6.2 Equa¸c˜oes alg´ebricas 121
6.2
Equa¸c˜oes alg´ebricas
Uma equa¸c˜ao alg´ebrica deve ser colocada na forma
lado esquerdo = = lado direito
onde o sinal de = usado na linguagem comum ´e substitu´ıda por um duplo sinal de igualdade (= =). Usamos um ´unico sinal de igualdade = para atribuir valor a uma vari´avel ou definir uma fun¸c˜ao.
Exemplo 6.3 No Mathematica, as equa¸c˜oes x2 + 1 = 0 e ex = 1 + x s˜ao
escritas na forma xˆ2 + 1 = = 0 Exp[ x ] = = 1 + x
Quando se tem uma equa¸c˜ao como as deste exemplo, o que se deseja ´e determinar que valores de x tornam a igualdade verdadeira. A busca destes valores se restringe a algum conjunto que, em geral, s˜ao os conjuntos dos n´umeros reais ou complexos. Tais valores s˜ao chamados de solu¸c˜oes da equa¸c˜ao. A primeira equa¸c˜ao tem duas solu¸c˜oes complexas x = i = √−1 e x = −i = −√−1. No conjunto dos n´umeros reais, a segunda tem uma ´unica solu¸c˜ao x = 0.
6.3
Inequa¸c˜ao
Uma inequa¸c˜ao ´e uma express˜ao do tipo
lado esquerdo .op. lado direito
onde .op. ´e um dos operadores relacionais
! = > ≥ < ≤
Exemplo 6.4 S˜ao inequa¸c˜oes xˆ2 + yˆ2 < 1
x + y > 2
Resolver uma inequa¸c˜ao consiste em determinar os valores das vari´aveis que tornam a rela¸c˜ao que tornam a inequa¸c˜ao verdadeira. A busca destes valores se restringe a algum conjunto. Os valores que tornam a inequa¸c˜ao verdadeira s˜ao chamados de solu¸c˜oes da inequa¸c˜ao.