











Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
- - - - - - -
Tipologia: Notas de estudo
1 / 19
Esta página não é visível na pré-visualização
Não perca as partes importantes!












Ma To Fu
LabMAC-UEM 1998
(www.geocities.com/cnumap)
Apresentação Cap. 1 - Primeiros Passos Cap. 2 - Cálculo Diferencial e Integral Cap. 3 - Gráficos em 2 e 3 Dimensões Cap. 4 - Programação Básica Cap. 5 - Dicas e Referências
O Maple V é um sistema de computação algébrica bastante popular nos meios acadêmicos e científicos. Similarmente ao sistema Mathematica, é capaz de efetuar operações simbólicas e cálculos complexos de uma maneira simples e também possui recursos para programação. Há contudo algumas limitações para cálculos numéricos de grande porte, onde o Fortran continua a imperar.
Nestas notas apresentamos apenas um pequeno tutorial dos comandos básicos do Maple V. O objetivo é tornar o leitor capaz de fazer cálculos simples e programação elementar, bem como plotar gráficos 2D e 3D. Esperamos que o leitor, após ter utilizado estas notas, sinta-se encorajado a explorar por si mesmo as outras possibilidades do Maple V. Os interessados em tópicos avançados tais como Álgebra Linear, Equações Diferencias, Progamação Linear ou Estatística, poderão encontrar referências e links no final do texto.
Este texto é uma versão simplificada e adaptada para a Release 4 das notas de minicursos realizados pelo autor na Universidade Estadual de Maringá entre 1993 e 1997, e no Laboratório Nacional de Computação Científica (LNCC/CNPq) em 1995. O autor aproveita para agradecer os professores Doherty Andrade (Maringá) e Jaime Muñoz Rivera (Rio de Janeiro) pelas sugestões e correções apresentadas. O autor também agradece a hospitalidade do LNCC (Petrópolis) onde estas notas foram preparadas.
Petrópolis, 18/12/98.
(modificado em 24/01/2000)
Nesta primeira parte, através de exemplos, discutiremos alguns comandos que são absolutamente indispensáveis. Toda instrução Maple inicia-se após o sinal ( > ) e termina com o sinal ( ; ) ou ( : ).
As operações aritméticas básicas são feitas com os seguintes símbolos:
A multiplicação e divisão são efetuadas antes da adição e subtração e potências são efetuadas antes da multiplicação. Para evitar confusões podemos utilizar parênteses () para agrupar expressões. Porém colchetes [] e chaves {} não devem ser utilizados para este fim.
Operações Básicas
53+9;*
Vejamos o que acontece quando esquecemos o sinal de ponto e vírgula ( ; ).
2*
Warning, incomplete statement or missing semicolon
O sistema reclama em azul dizendo que a instrução 23* está incompleta ou que falta um ponto e vírgula. Neste caso devemos voltar e corrigir o problema.
A Representação Decimal
Podemos usar o comando evalf (avaliar com ponto flutuante) para se obter uma representação decimal de um número. Normalmente, o sistema utiliza dez algarismos significativos.
evalf(176/47);
25sqrt(2);*
evalf(");
f(Pi/4);
g := exp + f;
g(-x);
h := (x,y) -> x^2-5y^3;*
h(s,t);
Funções definidas por duas ou mais expressões podem ser definidas com o uso de procedimentos proc. Veremos um exemplo no Capítulo 4 onde estudaremos a programação em Maple.
Resolução de Equações e Sistemas
O comando solve (resolver), serve para resolver equações diversas. No exemplo abaixo resolveremos uma equação na variável x.
equa1 := x^3+3x^2-4=0;*
solve(equa1);
Quando a equação possui mais de uma variável, é fundamental indicar ao sistema a incógnita do problema.
equa2 := 2x+y=0;*
solve(equa2, x);
solve(equa2, y);
O comando solve resolve também equações com raízes complexas. A letra ( I ) representa a unidade imaginária dos números complexos.
solve(z^2+1,z);
Se o comando solve não conseguir apresentar exatamente as raízes desejadas, podemos então executar o comando fsolve (resolver com ponto flutuante) para se obter raízes aproximadas.
equa3 := x^6 - 2x^2 + 2x;**
solve(equa3,x);
fsolve(equa3,x);
Por questões práticas, a função fsolve não mostra automaticamente as raízes complexas. É preciso adicionar a opção complex.
fsolve(equa3,x,complex);
Os comandos solve e fsolve também funcionam com sistemas. A sintaxe é a seguinte:
solve( { equações },{ incógnitas } ).
Observe a utilização das chaves {} para representar conjunto de equações e de incógnitas.
equa4 := x + 2y + 3z = 7;**
equa5 := 5x - 2y = 12;**
equa6 := 2x - y + 3z = -6;**
sol := solve( {equa4,equa5,equa6} , {x,y,z} );
evalf(sol,13);
Operações com Polinômios
Em computação algébrica também podemos operar polinômios simbolicamente. Consideremos os dois polinômios abaixo.
p := x^4 - x^3 - 10x^2 + 10x + 6;**
q := x^3 - 4x^2 + x + 6;*
Escrevendo p ( x ) em fatores primos:
factor(p);
Dividindo p ( x ) por q ( x ):
p/q;
Normalizando (simplificando) a expressão racional acima:
normal(");
Ainda podemos converter a expressão racional acima em frações parciais:
convert(p/q, parfrac, x);
Comandos Diversos
Agora veremos mais alguns comandos que poderão ser úteis. Observe que o símbolo ( # ) é um sinal de comentário e o que vem depois não é levado em consideração pelo Maple.
33!; # fatorial de 33
f1 := x-> (x^2+5)/(x^3); # definindo uma função.
limit(f1(x), x=1); # limite para x tendendo a 1.
limit(f1(x), x=infinity); # limite para x tendendo a infinito.
f2 := sin(x)/x; # definindo uma expressão contendo x.
Observe que não é uma função para o Maple, mas tão somente uma expressão contendo a variável x. Portanto no comando limit escrevemos f2 e não
f2(x).
limit(f2, x=0);
limit(f2(x),x=0); # não faz sentido.
Para se calcular limites laterais basta acrescentar as opções left (esquerda) ou right (direita). Vejamos um exemplo com a função tangente tan.
limit(tan(x), x=Pi/2, left);
limit(tan(x), x=Pi/2, right);
Se desejamos apenas indicar um limite, então podemos utilizar o comando Limit com a letra L maiúscula. A sintaxe é a mesma.
Limit(x^2sin(1/x), x=0, right);*
value(");
Cálculo de Integrais
As integrais indefinidas ou definidas são obtidas através do comando int (com letras minúsculas). Também podemos usar o comando Int (com letra i maiúscula) no caso de querermos a integral apenas indicada.
f3 := x -> ax^2; # definindo uma função.*
Int(f3(x), x);
int(f3(x), x);
int(ln(x),x);
Para se calcular integrais definidas precisamos fornecer os limites de integração. A notação x=a..b significa que o x varia de a até b.
Área := Int(f3(x), x=0..1);
value(Área);
f4 := 1/x^2; # definindo uma expressão.
Int(f4, x=1..infinity);
value(");
Int(Int(x^2+y^2, x=1..2), y=0..3);
value(");
Derivadas
Existem duas maneiras de se derivar funções no Maple. Uma delas se faz com o uso do operador diferencial D. Aqui daremos exemplos através da função diff (diferenciar).
f5 := x^2+sin(x);
diff(f5, x);
diff(f5, x,x); # derivando f5 duas vezes.
f6 := x^3+y^2;
diff(f6, x);
diff(f6, y);
diff(u(x)v(x),x);*
Séries de Taylor
diff int Int limit Limit series unapply dsolve
Existem muitos outros comandos para o cálculo de derivadas e integrais. Explore os tutoriais contidos em ?contents ou ?introduction , conforme o caso. Para se fazer trabalhos mais específicos com equações diferenciais é fundamental consultar os textos especializados. O leitor poderá começar por experimentar ?dsolve.
Os gráficos de funções de uma ou duas variáveis são produzidos através das funções plot e plot3d. Algumas expressões de três variáveis podem ser plotadas utilizando-se a opção implicit.
restart;
Funções de uma Variável
A sintaxe básica de plot é a seguinte:
plot( função , domínio , contra-domínio , opções ).
O domínio de uma função é indicada por. O uso do contra-domínio não é obrigatório e serve para fazer um controle vertical do gráfico.
Entre as opções do comando plot usaremos o title (título) , o color (cor) e o discont=true (funções com descontinuidades).
plot(sin(2x), x=0..4);*
plot(ln(x), x = 0..3, title=
Logaritmo Natural);
f1 := xsin(x);*
plot(f1, x=0..10, color=blue); # cor azul.
A função possui uma descontinuidade (de segunda espécie) em x= 0. Vejamos o seu gráfico com a imagem (eixo vertical) variando de a
plot(1/x^2, x=-3..3, 0..10, discont=true);
Para se plotar dois gráficos simultaneamente escreve-se as duas funções entre chaves {}.
plot( {x,sqrt(x)}, x=0..1, title=
2 gráficos);
Gráficos de Funções de Duas Variáveis
Os gráficos de funções reais de duas variáveis são tridimensionais. O comando Maple utilizado neste caso é o plot3d.
plot3d(xsin(y), x=0..4, y=0..10);*
Todos os comandos contidos em plots podem ser usados diretamente sem executar o with(plots). Basta saber o nome do comando desejado e executá-lo da seguinte forma: plots[nome]. Vamos ver um exemplo com gradplot (campo gradiente).
plots[gradplot](x^2+y^2, x=-1..1, y=-1..1, color = x^2+y^2);
Plotando Pontos
Em experimentos científicos é comum querermos plotar gráficos a partir dos dados obtidos. Esses dados em geral vem em forma de um conjunto finito de pontos. No Maple os dados são inseridos com o comando seq (sequências) ou simplesmente colocados em colchetes [].
Dados := [ [0,1], [1,1], [2,2], [3,2], [4,3], [5,3], [6,2] ];
plot(Dados); # sem parâmetros extras.
plot(Dados, style=point, symbol=circle, color=blue);
Notas Finais
A produção de gráficos em 2D e 3D é um dos pontos fortes do Maple V. O leitor interessado não deve deixar de consultar o tutorial em ?plots.
?plots
Atualmente todos os sistemas de computação algébrica possuem recursos para programação. A estrutura básica de programação no Maple é derivado do Algol e do Pascal.
O nosso objetivo é apresentar os elementos essenciais em programação Maple de forma que o leitor possa prosseguir por si mesmo para programas mais avançados. A nossa abordagem não fará uso de nenhum conhecimento prévio em linguagens de programação. Entretanto algum conhecimento em algoritmos matemáticos facilitará a compreenção dos exemplos apresentados.
restart;
Comandos de Entradas e Saídas
Um programa deve começar por ler os dados e terminar por escrever os resultados. Durante as sessões interativas do Maple, a leitura de dados é feita através do comando de atribuição ( := ). Tabelas de dados armazenados em arquivos também podem ser lidas, com o uso do comando read. Execute ?read para se saber como funciona.
Os comandos específicos para escrever na tela são o print (imprimir) e o lprint. Esses comandos possuem a seguinte estrutura: print( expressão1 , expressão2 , etc... ). As expressões podem ser valores numéricos ou comentários. Em caso de comentários, esses devem estar entre aspa simples ( ` ).
print(
O valor do pi é quase, evalf(Pi,17));
m := 2x;*
print(
O cubo m é, m^3);
lprint(
O cubo m é, m^3); # usando lprint.
O cubo m é 8*x^
O comando lprint possui a mesma sintaxe que o print mas escreve os resultados alinhados à esquerda e só usa caracteres ASCII.
Comandos de Repetição e Iteração
Durante a concepção de um algoritmo deparamo-nos muitas vezes com situações onde uma certa instrução é repetida várias vezes. Para isso temos o comando for. A sua utilização segue um equema for-do-od da seguinte forma:
for j from início to fim do
expressões a serem repetidas
od
O esquema é bastante legível se adotarmos as seguintes traduções: for (para), from (a partir de), to (preposição a) e do (faça). Como exemplo vamos calcular os quadrados de 1, 2, 3 ,4 e 5.
for j from 1 to 5 do
j^
od;
sqrt(11.3);
Comandos de Seleção
Os comandos de seleção (ou de desvio) são utilizados para se decidir se um certo valor satisfaz ou não uma certa condição. Essas condições são determinadas pelas relações = (igualdade), < (menor que), > (maior que), <= (menor ou igual), >= (maior ou igual) e <> (diferente). Os operadores lógicos são: if (se), elif (ou se), else (ou então) e then (então). Trabalha-se com o seguinte esquema: if-then-elif-then-else-fi.
if 1 = 2 then AZUL
else VERMELHO
fi;
if 1 > 10 then print(GRANDE)
elif 1 < -10 then print(PEQUENO)
else print(MEDIO)
fi;
Procedimentos Maple
Veremos agora uma forma muito prática de se construir pequenos programas "executáveis". No Maple são chamados procedure (procedimento). A sintaxe para se contruir procedimentos é a seguinte:
Nome := proc( argumentos )
instruções contendo os argumentos
end.
É claro que existem muitas outras opções a serem consideradas. O leitor poderá consultar o tutorial em ?proc. O primeiro procedimento que escreveremos mostra a soma de 2 números dados.
Soma := proc(x,y)
print(
A soma procurada é, x+y)
end;
Soma(2,2);
Soma(alpha, beta);
Definindo Funções com Procedimentos
Os procedimentos Maple são na verdade funções dos argumentos de entrada. Logo também podemos utilizar o comando proc para definir funções
matemáticas. Vejamos como definir a função de duas maneiras diferentes.
f1 := x -> x^3sqrt(x); # maneira usual.*
f1(7);
f2 := proc(x) x^3sqrt(x) end;*
f2(7);
Certas funções podem exigir algum conhecimento em programação para serem definidas. Vamos construir uma função que vale 1 para e
para.
f3 := proc(x)
if evalf(x) < 0 then 1
else cos(10.0x)*
fi
end;
f3(-1);
f3(1);
plot(f3, -1..1);
Comentários Finais
As técnicas de programação são geralmente objetos de muitos livros e manuais. Entretanto, esperamos que o leitor acredite que a programação Maple é acessível e bastante intuitiva. Veja as referências do Capítulo 5.
Funções Especiais (Pacotes)
Os comandos específicos para Equações Diferenciais, Álgebra Linear, Estatística, Gráficos, etc... estão colecionados separadamente em pacotes ( bibliotecas de funções ). Uma lista completa pode ser vista executando-se ?index[package]. Esses pacotes são carregados com auxílio do comando with. Veremos a seguir alguns exemplos do pacote linalg , que são específicos para matrizes, vetores e transformações lineares.
restart:
with(linalg);
Warning, new definition for norm
Warning, new definition for trace
R. J. Lopez , Maple V: Mathematics and Its Application , Birkhäuser, 1994. (ISBN 0-8176-3791-5).
Lista de Comandos (em inglês)
Aqui incluímos uma lista de funções e comandos Maple que foi obtida executando-se ?index[functions]. Cada ítem listado está ligado automaticamente ao seu correspondente tutorial através de hyperlinks.
AFactor AFactors AiryAi AiryBi AngerJ Berlekamp BesselI BesselJ BesselK BesselY Beta C Chi Ci CompSeq Content D DESol Det Diff Dirac DistDeg Divide Ei Eigenvals EllipticCE EllipticCK EllipticCPi EllipticE EllipticF EllipticK EllipticModulus EllipticNome EllipticPi Eval Expand FFT Factor Factors FresnelC FresnelS Fresnelf Fresnelg Frobenius GAMMA GaussAGM Gaussejord Gausselim Gcd Gcdex HankelH1 HankelH2 Heaviside Hermite Im Indep Interp Inverse Irreduc Issimilar JacobiAM JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiSC JacobiSD JacobiSN JacobiTheta1 JacobiTheta2 JacobiTheta3 JacobiTheta4 JacobiZeta KelvinBei KelvinBer KelvinHei KelvinHer KelvinKei KelvinKer LambertW Lcm LegendreE LegendreEc LegendreEc1 LegendreF LegendreKc LegendreKc1 LegendrePi LegendrePic LegendrePic1 Li Linsolve MOLS Maple_floats MeijerG Norm Normal Nullspace Power Powmod Prem Primfield Primitive Primpart ProbSplit Product Psi Quo RESol Randpoly Randprime Ratrecon Re Rem Resultant RootOf Roots SPrem Searchtext Shi Si Smith Sqrfree Ssi StruveH StruveL Sum Svd TEXT Trace WeberE WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta Zeta abs add addcoords addressof algebraic algsubs alias allvalues anames antisymm applyop arccos arccosh arccot arccoth arccsc arccsch arcsec arcsech arcsin arcsinh arctan arctanh argument array assign assigned asspar assume asubs asympt attribute bernstein branches bspline cat ceil chrem close close coeff coeffs coeftayl collect combine commutat comparray compoly conjugate content convergs convert coords copy cos cosh cost cot coth csc csch csgn dawson define degree denom depends diagonal diff dilog dinterp disassemble discont discrim dismantle divide dsolve eliminate ellipsoid entries eqn erf erfc eulermac eval evala evalapply evalb evalc evalf evalfint evalgf evalhf evalm evaln evalr exp expand expandoff expandon extract factor factors fclose feof fflush filepos fixdiv float floor fnormal fopen forget fortran fprintf frac freeze fremove frontend fscanf fsolve galois gc gcd gcdex genpoly harmonic has hasfun hasoption hastype heap history hypergeom iFFT icontent identity igcd igcdex ilcm ilog ilog10 implicitdiff indets index indexed indices inifcn ininame initialize insert int interface interp invfunc invztrans iostatus iperfpow iquo iratrecon irem iroot irreduc iscont isdifferentiable isolate ispoly isqrfree isqrt issqr latex lattice lcm lcoeff leadterm length lexorder lhs limit ln lnGAMMA log log10 lprint map map2 match matrix max maximize maxnorm maxorder member min minimize minpoly modp modp1 modp2 modpol mods msolve mtaylor mul nextprime nops norm normal numboccur numer op open optimize order parse pclose pclose pdesolve piecewise plot plot3d plotsetup pochhammer pointto poisson polar polylog polynom powmod prem prevprime primpart print printf procbody procmake product proot property protect psqrt quo radnormal radsimp rand randomize randpoly range rationalize ratrecon readbytes readdata readlib readline readstat realroot recipoly rem remove residue resultant rhs root roots round rsolve savelib scanf searchtext sec sech select seq series setattribute shake showprofile showtime sign signum simplify sin singular sinh sinterp solve sort sparse spline split splits sprem sprintf sqrfree sqrt sscanf ssystem stack sturm sturmseq subs subsop substring sum surd symmdiff symmetric system table tan tanh testeq testfloat thaw thiele time translate traperror trigsubs trunc type typematch unames unapply unassign unload unprotect updatesR4 userinfo value vector verify whattype with writebytes writedata writeline writestat writeto zip ztrans
# FIM