Вы находитесь на странице: 1из 211

Universidade Federal de Uberlandia

Faculdade de Matematica
Calculo 2 com Scilab
-6
2.0
-4
1.5
-2
Z
1.0
0
0.5
2
0.0 Y
4
-0.5
6
-1.0
-1.5
2.0
1.5
-2.0
1.0
0.5
X
Uberlandia 2009
Projeto PIBEG 09-1
Coordenador:
Santos Alberto Enriquez Remigio
Colaboradores:
Prof. Alessandro Alves Santana
Profa. Ana Maria Amarillo Bertone
Alunos Participantes
Isaas Jose dos Reis Marques,
Isis de Almeida Reis,
J ulia Borges dos Santos,
Nadia Moraes Verdun,
T ulio Portes Quaresma
Segundo Semestre 2009
2
Sumario
1 Introducao 1
2 Ferramentas basicas do Scilab 5
2.1 Conhecendo o Scilab . . . . . . . . . . . . . 5
2.1.1 O Help do Scilab . . . . . . . . . . . 7
2.1.2 O Demos do Scilab . . . . . . . . . . 7
2.1.3 Declara cao de vetores e matrizes . . . 12
2.1.4 Polinomios . . . . . . . . . . . . . . 21
2.2 Scipad e comandos de programa cao no Scilab 23
2.2.1 Salvando arquivo no Scipad . . . . . 23
2.2.2 Programa cao . . . . . . . . . . . . . 26
2.3 Fun coes e esbo co dos gracos no Scilab . . . 41
2.3.1 Graco de uma fun cao . . . . . . . . 41
3 Integral de Riemann 54
3.1 A Soma de Riemann . . . . . . . . . . . . . 54
3.2 Aplica coes da integral denida . . . . . . . . 61
3.2.1 Calculo da area limitada pelo graco de duas fun c oes 61
3.2.2 O Teorema do Valor Medio . . . . . 68
4 Curvas no plano e no espaco 83
4.1 Curvas no plano . . . . . . . . . . . . . . . . 83
3
4.1.1 O vetor tangente a uma curva no plano 86
4.2 Curvas no espa co . . . . . . . . . . . . . . . 94
4.2.1 Triedo de Frenet . . . . . . . . . . . 99
5 Funcoes de varias variaveis 100
5.1 Fun coes de duas variaveis . . . . . . . . . . 100
5.1.1 Curvas de nvel . . . . . . . . . . . . 114
5.2 Fun coes de tres variaveis . . . . . . . . . . . 122
5.2.1 Superfcies de nvel . . . . . . . . . . 149
5.3 Diferenciabilidade de fun coes . . . . . . . . . 149
5.3.1 Derivadas direcional e parcial . . . . 151
5.3.2 Aproxima cao linear para fun coes diferenciaveis155
5.3.3 Propriedades geometricas do gradiente161
6 Apendice A 167
6.1 Plot2d . . . . . . . . . . . . . . . . . . . . . 167
6.2 Plot2d1 . . . . . . . . . . . . . . . . . . . . 171
6.3 Plot2d2 . . . . . . . . . . . . . . . . . . . . 172
6.4 Plot2d3 . . . . . . . . . . . . . . . . . . . . 175
6.5 Plot2d4 . . . . . . . . . . . . . . . . . . . . 175
6.6 fplot2d . . . . . . . . . . . . . . . . . . . . . 175
6.7 Argumentos adicionais associados ao plot2d 177
6.8 Resumo - comandos plot2d . . . . . . . . . . 185
7 Apendice B 186
7.1 Plot3d . . . . . . . . . . . . . . . . . . . . . 186
7.2 Argumentos opicionais relacionados ao plot3d 190
7.3 Plot3d1 . . . . . . . . . . . . . . . . . . . . 196
7.4 Plot3d2 . . . . . . . . . . . . . . . . . . . . 199
7.5 Plot3d3 . . . . . . . . . . . . . . . . . . . . 201
7.6 fplot3d . . . . . . . . . . . . . . . . . . . . . 201
4
Captulo 1 - Introdu cao 0
7.7 fplot3d1 . . . . . . . . . . . . . . . . . . . . 203
7.8 Resumo - comandos plot3d . . . . . . . . . . 205
Captulo 1
Introducao
As universidades p ublicas brasileiras, de um modo geral,
carecem de recursos nanceiros para atender a grande de-
manda por aquisi cao de softwares pagos voltados para pes-
quisa e ensino. Felizmente, existe hoje `a disposi cao da co-
munidade academica uma grande quantidade de aplicativos
computacionais gratuitos que permitem produzir ciencia
com qualidade a custo zero, tanto em termos de sistemas
operacionais como em aplicativos. Dentre esses aplicativos
existe o Scilab.
O Scilab e um software cientco, gratuito, para com-
puta cao numerica que fornece um poderoso ambiente com-
putacional aberto para aplica coes cientcas.

E semelhante
ao Matlab, que e um software pago de elevado custo nan-
ceiro. O Scilab, desenvolvido desde 1990 pelos pesquisa-
dores do INRIA (Institut National de Recherche en Infor-
matique et en Automatique) e do ENPC (

Ecole Nationale
des Ponts et Chaussees), e agora mantido e desenvolvido
pelo Consorcio Scilab desde sua cria cao em Maio de 2003.
Distribudo gratuitamente via Internet desde 1994, o Sci-
lab e atualmente usado em diversos ambientes industriais
1
Captulo 1 - Introdu cao 2
e educacionais pelo mundo.
Na literatura podem-se encontrar muitas apostilas e li-
vros, alguns pagos, mostrando o uso do software Scilab de
forma geral e/ou aplicado na area de metodos numericos.
Mas muito pouco e mostrado sobre o uso do Scilab como
ferramenta auxiliar de ensino para Calculo diferencial e in-
tegral 2. Situa cao essa que precisa ser mudada com o uso
gratuito do Scilab em sala de aula para ilustrar conceitos
matematicos.
Muitas vezes o material de pesquisa disponvel para alu-
nos e professores na biblioteca ou em outros meios, apre-
senta guras (e ideias) elaboradas por terceiros de difcil
compreensao ou por softwares pagos (Matlab , Mathema-
tica ou Maple) de difcil experimenta cao no computador
devido `a necessidade de pagamento pelo uso do software.
Isso resulta no uso de metodos nao visuais para resolu cao de
exerccios, baseados em memoriza cao mecanica que nao e
adequada para a assimila cao das ideias intuitivas e geometricas
envolvidas nos topicos em questao.
Alguns autores de livros de Calculo 2 mostram que o
uso de material didatico do tipo visual no ensino da disci-
plina de Calculo Diferencial e Integral 2 permite refor car
os conceitos teoricos apresentados em sala de aula.
A UFU, consciente de seu papel como provedora de conhe-
cimento para o avan co da ciencia, criou um projeto de apoio
`a pesquisa e desenvolvimento de material didatico para o
ensino denominado PIBEG. Um dos objetivos do PIBEG
e apoiar alunos de gradua cao nodesenvolvimento de pes-
quisas e gera cao de conhecimentos sob a orienta cao de um
professor, permitindo melhoras na qualidade de ensino na
Captulo 1 - Introdu cao 3
Universidade.
O presente trabalho foi desenvolvido gra cas ao apoio da
UFU seguindo sua losoa de trabalho e com os objetivos
denidos conforme mostrado abaixo
Para com a comunidade dicente e docente
1. Fornecer aos professores da disciplina de Calculo 2, ro-
tinas computacionais em forma de apostila, para serem
usadas em sala de aula e em casa pelo aluno.
2. Fornecer material didatico computacional de uso p ublico
para apoio ao ensino de Calculo Diferencial e Integral
2, usando-se recursos computacionais gratuitos.
3. Apresentar, mediante exemplos de rotinas computa-
cionais a constru cao e a visualiza cao de conceitos ma-
tematicos de calculo 2, facilitando a compreensao e
aprendizado dos alunos.
4. Disponibilizar rotinas computacionais geradas com o
software livre Scilab para os alunos de Calculo 2 expe-
rimentarem em casa, como refor co do que foi aprendido
em sala de aula.
5. Apresentar `a comunidade discente e docente da UFU
uma introdu cao `a programa cao basica do software Sci-
lab e uso desse material didatico computacional em
sala de aula.
Para com os alunos bolsistas
1. Aprimorar o conhecimento de Calculo Diferencial e In-
tegral 2 dos alunos bolsistas, com o intuito de torna-los
Captulo 1 - Introdu cao 4
potenciais colaboradores em: a) proximos semestres,
incentivando a exposi cao do que foi apreendido sobre
o uso desse material computacional aos demais estu-
dantes e professores envolvidos com Calculo 2; b) fu-
turos projetos.
2. Introduzir os alunos bolsistas no desenvolvimento de
rotinas computacionais usando alguma linguagem de
programa cao.
3. Instruir os bolsistas no aprendizado de recursos compu-
tacionais gratuitos usados neste projeto, permitindo-
lhes que obtenham a devida prepara cao para uma car-
reira promissora cientca e academica.
4. Fomentar o trabalho em equipe, ensinando que o uso
da criatividade e o pensamento individual em fun cao de
um proposito em comum permite atingir os objetivos
planejados.
Agradecimentos
A equipe que desenvolveu o presente trabalho agradece `a
UFU e a todos os diferentes autores de apostilas por todo
o apoio recebido.
Captulo 2
Ferramentas basicas do
Scilab
2.1 Conhecendo o Scilab
O Scilab e um software livre que foi desnvolvido para criar
um ambiente computacional de resolu cao de problemas numericos
em aplica coes cientcas e de engenharia e que pode ser
baixado diretamente do site ocial www.scilab.org. Ele
foi elaborado dentro da DIGITEO- centro de pesquisa si-
tuado na Ilha de Fran ca (Ile-de-France) e voltado `as ciencias
informacionais e tecnologicas (www.digiteo.fr) -pelo Scilab
Consortium- possuindo atualmente 18 membros ligados `a
ind ustria e educa cao.
A home pagedo Scilab - disponvel nas lnguas inglesa,
francesa, chinesa e japonesa - traz notcias sobre aprimora-
mentos no software, seu uso recente em diferentes projetos,
alem de possuir um link no qual direciona o usuario a ou-
tros sites nos quais este usuario pode participar ajudando a
aprimorar o software e divulgar as modica coes, sem qual-
quer restri cao.
5
Captulo 2 - Ferramentas b asicas do Scilab 6
Assim, ao fazer uso do Scilab, e possvel ter a certeza de
que se esta tendo acesso a informa coes de alta qualidade
e, ao mesmo tempo, participando de uma comunidade que
visa uma difusao irrestrita do conhecimento.
A maioria dos manuais referentes ao Scilab podem ser
baixados gratuitamente pela internet e sao desenvolvidos
por professores e alunos de entidades educacionais. Abaixo
tem-se uma rela cao de alguns sites:
* www.scilab.org/download/5.1.1/manual_scilab-5.1.1_pt_BR.ps;
* www.dca.ufrn.br/~pmotta/;
* www.swik.net/Manual+scilab;
* www.people.ufpr.br/~meleiro/soft_livre/Saiba_Mais_a_Respeito.htm;
* xingu.deq.ufscar.br/~ajgcruz/ASPQ/Apostila_Scilab.pdf;
* http://www.scilab.org/publications/index_publications.php?page=freebooks
* www.infoclearinghouse.com/files/scilab/scilab01.pdf
Ha tambem livros pagos que podem ser encontrados em
www.scilab.org/publications, escritos em frances, ingles, ita-
liano, espanhol, alemao, chines e polones.
Ja na area academica, softwares como o Scilab sao utili-
zados em pesquisas geralmente voltadas ao aprimoramento
da didatica em aulas, alem de possibilitar que alunos usu-
fruam de softwares para, nao so possuir uma melhor com-
preensao da materia ensinada, como tambem se familiari-
zarem com as linguagens de programa cao.
Captulo 2 - Ferramentas b asicas do Scilab 7
2.1.1 O Help do Scilab
O Scilab dispoe de um manual denominado Help Brow-
ser, que pode ser acessado tanto no Console quanto no Sci-
pad (Editor de comandos do Scilab). O Help serve para in-
formar diversos comandos do software, alem de trazer uma
breve descri cao do comando seguida de exemplo de como
tal comando pode ser utilizado em uma programa cao (Veja
Figura 2.1.1). O browser possui, ainda, umcone que fa-
cilita a pesquisa de um determinado comando (search), e
atraves dele, pode-se procurar um comando digitando uma
palavra relacionada ao mesmo (Veja Figura 2.1.1).
Os itens estao organizados em pastas para facilitar a
pesquisa. Quando uma das pastas e aberta, tem-se pri-
meiramente uma rela cao de comandos, e assim que se clica
em um deles, uma pagina com sua descri cao e exemplos e
aberta.
2.1.2 O Demos do Scilab
O Scilab possui um determinado n umero de Demos para
mostrar as abilidades do software. Os Demos podem ser
acessados clicando no ? do Console, e posteriormente no
item Scilab Demonstrations. Uma janela denominada
Demos sera aberta com op coes tais como- Introduction,
Dynamic Link, GUI, etc. A seguir apresenta-se a Figura
2.1.2 onde mostram-se as janelas abertas quando escolhe-se
a op cao Graphics do Demos.
Usando o Introduction: ao clicar no item, um arquivo
com comandos do Scilab serao carregados na memoria. Vol-
tando no Console e apertando Enter e possvel visualizar
Captulo 2 - Ferramentas b asicas do Scilab 8
Figura 2.1: Localiza cao do Help na consola do Scilab.
Figura 2.2: Procurando informa cao no Help do Scilab.
Captulo 2 - Ferramentas b asicas do Scilab 9
Figura 2.3: Demos do Scilab.
Figura 2.4: Janelas abertas na escolha da op cao Graphics do Demos.
Captulo 2 - Ferramentas b asicas do Scilab 10
as linhas com os comandos. Alem disso, comentarios irao
aparecer. Abaixo, tem-se uma parte desse demo:
Captulo 2 - Ferramentas b asicas do Scilab 11
-->// SCILAB OBJECTS
-->// 1. SCALARS
-->a=1 //real constant
a =
1.
-->1==1 //boolean
ans =
T
-->string //character string
ans =
string
-->z=poly(0,z) // polynomial with variable z and with one root at zero
z =
z
-->p=1+3*z+4.5*z^2 //polynomial
p =
2
1 + 3z + 4.5z
-->r=z/p //rational
r =
z
-------------
2
1 + 3z + 4.5z
-->// 2. MATRICES
-->A=[a+1 2 3
--> 0 0 atan(1)
--> 5 9 -1] //3 x 3 constant matrix
A =
! 2. 2. 3. !
! 0. 0. 0.7853982 !
! 5. 9. - 1. !
-->b=[%t,%f] //1 x 2 boolean matrix
b =
! T F !
Captulo 2 - Ferramentas b asicas do Scilab 12
-->Mc=[this,is;
--> a ,matrix] //2 x 2 matrix of strings
Mc =
!this is !
! !
!a matrix !
-->Mp=[p,1-z;
--> 1,z*p] //2 x 2 polynomial matrix
Mp =
! 2 !
! 1 + 3z + 4.5z 1 - z !
! !
! 2 3 !
! 1 z + 3z + 4.5z !
Ao ir analisando esse Demo, e possvel ter no coes basicas
de opera coes executaveis pelo Scilab. Alem disso, e impor-
tante prestar mais aten cao `a parte matricial, uma vez que
o Scilab e um sistema baseado em matrizes.
Para fazer uso dos outros Demos, basta clicar na op cao
desejada e uma segunda lista sera aberta com subtopicos
referentes ao escolhido.
2.1.3 Declaracao de vetores e matrizes
Desde ja, e de extrema importancia compreendermos como
trabalha o Scilab para nao existir diculdades nos topicos.
O Scilab identica as variaveis que sao informadas em forma
de matrizes. Por exemplo, um escalar a = 1 e uma matriz
1x1. Com isso, ja devemos ter em mente quais opera coes
sao possveis com matrizes, como e quando realiza-las, e
alem disso quais opera coes nao sao possveis, exigindo do
usuario (programador) uma habilidade a mais para fazer
que deseja.
Captulo 2 - Ferramentas b asicas do Scilab 13
O Scilab distingue entre letras mai usculas e min usculas.
Por exemplo, o valor de um escalar a e diferente do valor
A. A fun cao cos(x) e diferente da fun cao Cos(x).
Opera c oes
O Scilab funciona como uma especie de calculadora avan cada,
entao e possvel fazer todas a opera coes basicas associadas
a n umeros reais e/ou complexos. A seguir, apresenta-se
uma Tabela com alguns comandos do Scilab para realizar
opera coes basicas de calculo
Comandos operacionais
+ Soma
- Subtrac c ao
Multiplica c ao
/ Divis ao
Potencia
< Menor que
<= Menor ou igual que
> Maior que
>= Maior ou igual que
<> ou = Diferente de
== Igualdade de compara c ao
conj(a) Calcula o conjugado de um n

complexo a
A seguir mostram-se alguns exemplos de uso dos coman-
dos operacionais do Scilab:
a = 7; //O uso de ; somente armazenou o resultado
b = 5 //Sem o uso de ; o ScilaB apresenta o que foi informado
b =
5.
-->a + b
Captulo 2 - Ferramentas b asicas do Scilab 14
ans =
12.
-->a - b
ans =
2.
-->a*b
ans =
35.
-->a/b
ans =
1.4
-->2^3
ans =
8.
-->3 < 2
ans =
F
-->3 > 2
ans =
T
-->3 <= 3
ans =
T
-->3 <> 3.1
ans =
T
-->sqrt(3)
ans =
1.7320508
-->sqrt(-3)
ans =
1.7320508i
Observe no calculo acima que o Scilab calcula raiz qua-
Captulo 2 - Ferramentas b asicas do Scilab 15
drada de n umeros negativos.
Tambem e possvel fazer opera coes com n umeros com-
plexos, basta usar a simbologia % i para representar a
parte imaginaria. O que se segue mostra algumas opera coes
com n umeros complexos no Scilab:
a = 3 - 7*%i
a =
3. - 7.i
-->conj(a)
ans =
3. + 7.i
b = -1 + 2*%i;
-->a+b
ans =
2. - 5.i
-->a-b
ans =
4. - 9.i
-->a*b
ans =
11. + 13.i
-->a/b
ans =
- 3.4 + 0.2i
Na tabela seguinte, apresentam-se outros smbolos e/ou
operadores a serem usados nos proximos captulos.
Captulo 2 - Ferramentas b asicas do Scilab 16
Comandos pr oprios do Scilab
% i Raiz quadrada de -1
% pi 3.1415927
% e 2.7182818
format(n) n= n umero de casas depois da vrgula (mn=2,max=25)
sqrt Raiz quadrada de
abs Valor absoluto ou o modulo
Vetores
Os vetores em Scilab podem ser do tipo linha ou coluna e
sao criados da seguinte forma, respectivamente
NomeDoVetorLinha = [a
1
a
2
. . . a
n
].
NomeDoVetorColuna = [a
1
; a
2
; . . . ; a
n
].
Podemos utilizar espa co ou vrgula para separar os ele-
mentos de um vetor linha, e ponto-e-vrgula para os ele-
mentos de um vetor coluna.
-->A = [ 1 3 5 ] // vetor linha - matriz (1xn)
A =
1. 3. 5.
ou
-->A = [ 1, 3, 5 ]
A =
1. 3. 5.
-->B = [1;3;5] // vetor coluna - matriz (nx1)
B =
Captulo 2 - Ferramentas b asicas do Scilab 17
1.
3.
5.
Observe a diferen ca entre os vetores A e B. As compo-
nentes sao as mesmas, mas os vetores sao completamente
diferentes, pois ao usar ; estamos criando uma nova coluna
(um novo elemento do vetor coluna).
Na pratica a declara cao acima acerca das componentes
do vetor, se referem a vetores de tamanho pequeno. De-
pendendo do problema podem-se usar outras maneiras de
indicar os elementos do vetor. Por exemplo, o uso de : cria
vetores com elementos igualmente espa cados. Se nao infor-
mamos o espa camento, o programa entende que o espa co e
1. A declara cao com o smbolo ::
NomeDoVetor = [vini : espacamento : vfinal]
onde vini, vnal, espacamento, sao, respectivamente, o pri-
meiro elemento, o ultimo elemento e o espa camento entre
as componentes do vetor.
Quando usamos a expressao NomeDoVetor(n), onde
NomeDoVetor e o nome do vetor criado anteriormente, isto
se refere ao valor da componente do vetor NomeDoVetor
localizado na posi cao n. A seguir denimos tres vetores
na consola do Scilab com os nomes x, x1 e x2 conforme
pode ser visto abaixo.
-->x1 = 1:0.2:2
x1 =
1. 1.2 1.4 1.6 1.8 2.
-->x(2)
Captulo 2 - Ferramentas b asicas do Scilab 18
ans =
1.2
-->x(6)
ans =
2.
-->x2 = 1:5
x2 =
1. 2. 3. 4. 5.
-->x2(2)
ans =
2.
Para o vetor com nome x2, x2(2) = 2 porque coinci-
dentemente o n umero 2 esta na posi cao 2 do vetor. Ja no
vetor x1, o valor 1.2 esta localizado na posi cao n=2.
Matrizes
As matrizes sao declaradas da mesma forma que os vetores,
usando-se vrgulas para separar elementos de uma mesma
linha e ponto-e-vrgula para separar colunas. Opera coes de
soma, resta, multiplica cao, multiplica cao elemento a ele-
mento, entre matrizes possuem comandos especiais, conforme
se pode ver na tabela a seguir:
Captulo 2 - Ferramentas b asicas do Scilab 19
Comandos para matrizes
\ Divis ao direita de uma matriz
. Multiplica c ao elemento a elemento
./ Divis ao elemento a elemento
.\ Divis ao direita elemento a elemento
det(A) determinante da matriz quadrada A
inv(A) matriz inversa da matriz quadrada A
zeros(n,m) matriz de zeros n x m
ones(n,m) matriz unit aria n x m
eye(n,m) matriz identidade n x m
diag(A) informa os elementos da diagonal principal de A
A tranposta da matriz A
size(A) mostra n

linhas e n

colunas da matriz A
A(linha,coluna) acessa o elemento desejado da matriz A
Devemos lembrar que soma e subtra cao de matrizes so e
possvel entre matrizes do mesmo tamanho. Exemplos:
-->A = [2 4; 6 8] // matriz 2x2
A =
2. 4.
6. 8.
-->size(A)
ans =
2. 2.
-->B = [1 3; 5 7] // matriz 2x2
B =
1. 3.
5. 7.
-->A+B
ans =
3. 7.
11. 15.
-->C = [5 7] // matriz 1x2
C =
Captulo 2 - Ferramentas b asicas do Scilab 20
5. 7.
-->size(C)
ans =
1. 2.
-->A+C
!--error 8
Inconsistent addition.
Para multiplicar duas matrizes A * B, por exemplo, o n

de colunas de A deve ser igual ao n

de linhas de B.
-->A = [1 2 3; 4 5 6] //matriz 2x3
A =
1. 2. 3.
4. 5. 6.
-->B = [1 2 3 4; 5 6 7 8; 9 10 11 12] //matriz 3x4
B =
1. 2. 3. 4.
5. 6. 7. 8.
9. 10. 11. 12.
-->A*B
ans =
38. 44. 50. 56.
83. 98. 113. 128.
-->B*A
!--error 10
Inconsistent multiplication.
-->A.*B // multiplicac~ao elemento a elemento nao e possivel
!--error 9999
inconsistent element-wise operation
Captulo 2 - Ferramentas b asicas do Scilab 21
-->C = [2 4 3; 2 1 2] // matriz 2x3
C =
2. 4. 3.
2. 1. 2.
-->A*C
!--error 10
Inconsistent multiplication.
-->A.*C // multiplicac~ao elemento a elemento agora e poss vel
ans =
2. 8. 9.
8. 5. 12.
Como A tem 3 colunas e B tem 3 linhas, e possvel fazer
a multiplica cao, porem a recproca nao e verdadeira (neste
caso), pois B tem 4 colunas e A tem 2 linhas.
A multiplica cao elemento a elemento consiste na mul-
tiplica cao do elemento de uma matriz pelo respectivo ele-
mento da outra matriz do mesmo tamanho e e um recurso
muito utilizado na programa cao do Scilab,mas para ma-
trizes de diferentes tamanhos isto nao e possvel.
2.1.4 Polinomios
Os polinomios podem ser criados atraves dos comandos:
NomeDoPolinomio = poly([coeficientes],

V arInd

coeff

),
NomeDoPolinomio = poly([raizes],

V arInd

),
Captulo 2 - Ferramentas b asicas do Scilab 22
Observe a diferen ca entre as duas forma de criar um
polinomio. O primeiro comando gera a forma:
-->x1=poly([1 2 3 4], y)
x1 =
2 3 4
24 - 50y + 35y - 10y + y
e o segundo comando gera a forma
-->roots(x) // conferindo as razes de x
ans =
1.
2.
3.
4.
-->x2 = poly([1 2 3 4], y, coeff)
x2 =
2 3
1 + 2y + 3y + 4y
-->roots(x)
ans =
- 0.0720852 + 0.6383267i
- 0.0720852 - 0.6383267i
- 0.6058296
-->horner(x2,0)
ans =
1.
O comando roots(x) calcula as razes do polinomio, e o
comando horner(p,0) calcula o valor do polinomio para um
valor indicado.
Captulo 2 - Ferramentas b asicas do Scilab 23
Os comandos +, - e * de soma, de substra cao e mul-
tiplica cao do Scilab, respectivamente, tambem sao validos
para os polinomios.
2.2 Scipad e comandos de programa cao no Scilab
Scipad e um editor de texto incorporado do Scilab que pode
ser usado para digitar, corrigir e modicar textos. Ele pode
ser iniciado pressionando o botao de Editorna parte su-
perior da janela principal do Scilab ou digitando scipad()
ou editor() na linha de comando do scilab.
Alem disso, o editor Scipad possui outros atalhos como:
Comando Fun c ao
< F2 > Salvar arquivo
< F5 > Salvar arquivo e execut a-lo em Scilab
< F6 > Mostrar buer anterior
< F7 > Buer pr oximo show
< Control F6 > Alterne para o buer visvel anterior
< Control F7 > Alterne para o buer visvel pr oximo
< double clickmouse button1 > Selecione a palavra
< triple clickmouse button1 > Selecione a linha
< Shift Control mouse button1 > Selecione um bloco
< mouse button2 > Colar sele c ao
< mouse button3 > Pop-up Editar menu ou menu debug se clicado durante uma
sess ao de depura c ao
< Shift mouse button3 > Menu de execu c ao de pop-up
< Control mouse button3 > No menu de op c oes de pop-up
< Shift Control mouse button3 > Abrir a fonte da fun c ao de biblioteca, sob o ponteiro
< Control plus > Aumente o tamanho da fonte
< Control minus > Diminuir o tamanho da fonte
< double button1 > Em um quadrado ttulo maximizar esse mosaico
< double button1 > Em um caixilho da Space sashes uniformemente (para esta
janela paineis)
2.2.1 Salvando arquivo no Scipad
Na pratica o Scipad e usado para digitar um conjunto de
comandos que permitem executar uma ou varias tarefas
especcas no Scilab. Para salvar esse arquivo de coman-
dos digitados pode-se usar as teclas de atalho, Ctrl+ S,
Captulo 2 - Ferramentas b asicas do Scilab 24
por exemplo. No Scipad existem diferentes extensoes para
salvar um arquivo: .sce, .sci, .tst, etc.
Segundo alguns autores a extensao .sci e usada para sal-
var arquivos que contenham deni cao de fun coes, enquanto
.sce serve para salvar arquivos que contenham diferentes
comandos, tais como, chamada de fun coes, visualiza cao de
gracos, etc. No presente trabalho vamos salvar arquivos
com extensao .sci que contem somente deni cao de fun c oes,
caso contrario usaremos a extensao .sce.
Uma vez criada uma fun cao no editor Scipad e salvada
com extensao .sci podemos chamar tal fun cao dentro de
outro arquivo usando os comandos:
getf(

NomeDoArquivo.sci

)
ou
exec(

NomeDoArquivo.sci

)
O comando getf(le.sci) ou getf(le.sce) e usado para
processar fun coes e nao mostra no console o que esta escrito
no Scipad, apenas armazena os dados.
O comando exec(le.sci) ou exec(le.sce) e usado para
processar scripts (arquivo de comandos) e fun coes, e mostra
no console o que esta escrito no arquivo.
Usando-se o comando exec para o arquivo testefunc,
que e somente uma fun cao, e para o arquivo testescript,
que e somente um script temos:
-->exec(F:\testefunc.sci)
-->function [y] = f(x)
--> y = x^2
-->endfunction
Captulo 2 - Ferramentas b asicas do Scilab 25
-->exec(F:\testefunc.sce)
-->function [y] = f(x)
--> y = x^2
-->endfunction
-->exec(F:\testescript.sce)
-->a = 1
a =
1.
-->b = 2
b =
2.
-->c = b-a;
-->exec(F:\testescript.sce)
-->a = 1
a =
1.
-->b = 2
b =
2.
-->c = b-a;
Independente do formato, o comando exec e realizado
sem problemas para uma fun cao e tambem para um script.
Usando-se o comando getf para os mesmos arquivos tem-
se que:
-->getf(F:\testefunc.sci)
Captulo 2 - Ferramentas b asicas do Scilab 26
-->
-->f(2)
ans =
4.
-->getf(F:\testefunc.sci)
-->
-->f(2)
ans =
4.
-->getf(F:\testescript.sce)
!--error 37
Incorrect function at line 1.
-->getf(F:\testescript.sci)
!--error 37
Incorrect function at line 1.
Da mesma forma que para o comando exec o comando
getf e realizado perfeitamente, porem somente para fun coes,
ao tentar usa-lo para scripts, ocorre erro.
Portanto nao existe diferen ca entre salvar os arquivos no
formato .sci ou .sce. A diferen ca existe apenas nos coman-
dos para executa-los no console.
2.2.2 Programacao
O Scilab e simples e disponibiliza a maioria das estruturas
das linguagens convencionais de programa cao. A principal
diferen ca e que nao ha a necessidade da declara cao previa
do tipo das variaveis. Os comandos que formam um pro-
Captulo 2 - Ferramentas b asicas do Scilab 27
grama podem ser escritos diretamente no prompt do Scilab
(consola) ou podem ser escritos em um arquivo texto que,
depois, e carregado no ambiente do Scilab.
Antes de mencionar as estructuras basicas do Scilab,
vamos comentar alguns aspectos basicos associados forte-
mente com a programa cao.
Algoritmo
Um algoritmo e um procedimento que descreve, sem ambi-
guidade, uma sequencia nita de passos a serem seguidos
em uma ordem especca. O objetivo do algoritmo e im-
plementar um procedimento para resolver um problema ou
aproximar uma solu cao do problema. Portanto, um algo-
ritmo deve retornar resultados (dados de sada) atraves de
um conjunto de dados processados (dados de entrada). Por
exemplo,
1. Receita de bolo: Dados de entrada: Produtos. Pro-
cesso:, Dados de sada: Bolo
2. Determinar um procedimento para saber se um n umero
natural e par ou mpar. Dados de entrada: n umero
natural; Processo: determinar o resduo do n umero por
2; Dados de sada: Resposta, mpar ou par
Algoritmo computacional e um algoritmo executado por
um computador e para isto precisamos:
1. de uma linguagem de programa cao;
2. transformar a ideia de solu cao (receita) em um pro-
grama
Captulo 2 - Ferramentas b asicas do Scilab 28
Linguagens de programa cao
Existem varias linguagens de programa cao,tais como: C,
Fortran, Pascal, Java, Scilab, etc. Ao inves de estudar C
ou outra linguagem de programa cao, vamos denir uma
linguagem padrao para construir algoritmos computacio-
nais chamada de Pseudo-codigo e usar esse pseudo-codigo
para apresentar os conceitos comuns `as linguagens de pro-
grama cao.
Pseudoc odigo
As vantagens de um Pseudocodigo sao:
1. Sintaxe mais exivel que a de uma linguagem de pro-
grama cao real
(a) Permite que pensemos nos passos das etapas pe-
las quais o algoritmo computacional deve passar
sem que tenhamos de nos preocupar demais com a
forma de escreve-los;
2.

Enfase nas ideias, e nao em detalhes que sejam rele-
vantes apenas a linguagem de programa cao
3. Poderemos facilmente construir um programa em uma
linguagem estruturada se tivermos um algoritmo em
pseudo-codigo estruturado adequadamente
(a) Os elementos do pseudo-codigo sao os mesmos das
linguagens de programa cao, isto e, depois de de-
senvolver as ideias, a tradu cao para linguagem de
programa cao e um processo simples e automatico.
Captulo 2 - Ferramentas b asicas do Scilab 29
Exemplo 1 de Pseudo-codigo
Determinar se um dado n umero dado e par ou mpar.
Um pseudo-codigo para resolver esse problema e:
1. Leia o n umero natural n (Dado de entrada)
2. Calcule o resto r de n por 2
3. Se r = 0, entao escreva que n e par (Dado de sada)
Senao, escreva que n e impar (Dado de sada)
Exemplo 2 de Pseudo-codigo
Calcular a soma

n
i=1
x
i
, onde n e os n umeros x
1
, x
2
, x
3
, . . . x
n
sao dados
Um pseudo-codigo para resolver o problema acima e:
Entrada: Leia n, x
1
, x
2
, x
3
, . . . . . . , x
n
Sada: A soma

n
i=1
x
i
Passo 1: Fa ca sma =0 (Inicializar o acumulador)
Passo 2: Para i = 1, 2, . . . , n fazer
Fa ca sma = sma + x
i
(Adicionar o proximo termo)
Passo 3. Escreva: A soma e sma
Comandos de programa cao do Scilab
Toda linguagem de programa cao possui comandos especcos
para representar processos iterativos e/ou condicionais. A
seguir apresenta-se a estructura dos comandos do Scilab
para executar tarefas de repeti cao e/ou condicionais.
Captulo 2 - Ferramentas b asicas do Scilab 30
Existem duas estruturas de controle iterativo, loops, no
Scilab : o loop implementado com o comando for e o loop
implementado com o comando while.
O loop for:
for variavel = vetor_linha
instrucao_1
instrucao_2
... ...
instrucao_n
end
O comportamento das itera coes e baseado no vetor linha
ou na lista. Se o vetor tem 3 elementos, existirao 3 itera c oes.
Ex.1 (usando variavel tipo vetor):
-->for x=0:3,y=x^2,end
y =
0.
y =
1.
y =
4.
y =
9.
Ex.2 (usando variavel tipo lista):
Captulo 2 - Ferramentas b asicas do Scilab 31
-->L=list(4,[2 2;5 4], teste)
L =
L(1)
4.
L(2)
2. 2.
5. 4.
L(3)
teste
-->for x=L, disp(x), end
4.
2. 2.
5. 4.
teste
O loop while
Forma Geral:
while condicao
instrucao_1
Captulo 2 - Ferramentas b asicas do Scilab 32
instrucao_2
... ...
instrucao_n
end
O loop while repete uma seq uencia de instru coes en-
quanto uma condi cao e satisfeita e e util quando nao se
sabe o n umero de itera coes.
Operadores permitidos no loop while:
Operadores Signicado
== ou = igual a
< menor do que
> maior do que
<= menor ou igual a
>= maior ou igual a
<> ou = diferente
Exemplo. Metodo de Newton
O metodo de Newton e uma das tecnicas mais populares
para se determinar razes de equa coes nao lineares, tais
como:
f(x) = 0,
onde f e uma fun cao de uma variavel real. O metodo de
Newton consiste em determinar uma sequencia de aproxima coes
dada por:
x
k+1
= x
k

f(x
k
)
f

(x
k
)
Captulo 2 - Ferramentas b asicas do Scilab 33
O processo iterativo acima pode ser nalizado quando o
erro relativo, denido por:
e = |
x
k+1
x
k
x
k+1
|,
for menor que algum valor especifcado.
A seguir vamos determinar, usando o metodo de Newton,
a menor raiz positiva da equa cao:
4cosx e
x
= 0,
com erro relativo inferior a 10
2
.
Um dos primeiros passos a ser desenvolvido antes de
aplicar-se o metodo de Newton e estimar um valor inicial
para a sequencia numerica que sera alvo de aproxima coes.
O processo mais simples para se obter um valor inicial e o
metodo graco. Para isso transformamos a equa cao inicial
f(x) = 0 em uma nova equa cao, que consiste em uma igual-
dade de duas fun coes y1 e y2, mais simples. Tomando:y1 =
4cosx , y2 = e
x
e colocando as duas fun coes no mesmo
graco:
Captulo 2 - Ferramentas b asicas do Scilab 34
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Grafico
// Dominio: R
clc;
clf;
// Intervalo de definicao da funcao
// [a, b]
a = input(a : );
b = input(b : );
n = input(n : );
dx = (b-a)/n;
t = [a: dx:b];
x = [t t];
// Calculando os yis
// f(x)= 0 ==> y1 = y2 (raiz da func~ao)
// Exemplo: f(x) = 4*cos(x) - exp(x)==>
// 4*cos(x) = exp(x)
// Fazendo: y1 = 4*cos(x) e y2 = exp(x)
// y = [y1 y2];
y=[4*cos(t) exp(t)];
// Olhando os tamanhos dos vetores x e y
size(x)
size(y)
Captulo 2 - Ferramentas b asicas do Scilab 35
2.0 1.6 1.4 1.2 1.0 0.8 0.6 0.4 0.2 0.0
8
7
6
5
4
3
2
1
0
-1
-2
1.8
Figura 2.5: Esbo co do gr aco das fun coes: y1 = 4cos(x) e y2 = exp(x).
// Plotando os pontos (x,y)
plot2d(x,y,axesflag=4)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
O ponto de intersec cao das duas curvas e a solu cao x
procurada. Analisando a Figura 2.2.2, vemos que x esta
nas vizinhan cas do ponto 1.0 e por isso vamos tomar x0 =
1.0. Da equa cao original, obtemos: f(x) = 4cosx e
x
e
f

(x) = 4senx e
x
.
Captulo 2 - Ferramentas b asicas do Scilab 36
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Metodo de newton: xk+1= xk - f(xk)/f(xk)
//Exemplo: f(x)= 4*cos(x)- exp(x) e f(x)= -4*sen(x)- exp(x)
//xk (valor aproximado da raiz)
clc;
clf;
xk = input(xk :);
// Intervalo de definicao da funcao
// [a, b]
a = input(a : );
b = input(b : );
n = input(n : );
// Definindo o espacamento homogeneo entre os pontos xis
dt = (b-a)/n;
function [x]=IteracaoNewton_f(xk)
x= xk - ((4*cos(xk)- exp(xk))/(-4*sin(xk)- exp(xk)))
endfunction
t = [a:dx:b];
y = 4*cos(t) - exp(t);
// Grafico da func~ao f
Captulo 2 - Ferramentas b asicas do Scilab 37
plot2d(t,y,axesflag=4);
nm = 10;
e = 1.0;
n = 0;
// Processo iterativo do Metodo de Newton
while ( e > 0.01) and ( n< nm)
x = IteracaoNewton_f(xk);
e = abs((x - xk))/abs(x);
n = n+1;
xk, x, n, e
x1 = [xk, x];
y1 = [(4*cos(xk) - exp(xk)),0] ;
plot2d(x1,y1,axesflag=4)
x2 = [xk, xk];
y2 = [(4*cos(xk) - exp(xk)),0] ;
plot2d(x2,y2,axesflag=4)
xk = x;
end
x
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Compilando (executando) no ambiente Scilab:
Captulo 2 - Ferramentas b asicas do Scilab 38
xk :1
a : 0.5
b : 1
n : 20
ans =
T
xk =
1.
x =
0.9084390
n =
1.
e =
0.1007894
ans =
T
xk =
0.9084390
x =
0.9047941
n =
2.
e =
0.0040284
x =
0.9047941
Logo, a menor raiz positiva da equa cao 4cosx e
x
= 0,
com e < 0.01, e x = 0.9047941.
Na Figura 2.2.2, apresenta-se a representa cao geometrica
Captulo 2 - Ferramentas b asicas do Scilab 39
0.98 0.96 0.94 0.92 0.90
0.0
-0.1
-0.2
-0.3
-0.4
-0.5
1.00
Figura 2.6: Solu cao aproximada obtida pela aplica cao do metodo de Newton.
do uso do metodo de Newton para obter-se a solu cao aproxi-
mada da equa cao 4cosx e
x
= 0.
Comandos Condicionais
O Scilab implementa dois tipos de comandos condicionais
: if-then-else e select-case.
1. Comando if-then-else
Forma Geral:
if condicao_1 then
sequencia_de_instrucoes_1
elseif condicao_2
sequencia_de_instrucoes_2
... ... ... ... ... ...
Captulo 2 - Ferramentas b asicas do Scilab 40
elseif condicao_n
sequencia_de_instrucoes_n
else
sequencia_de_instrucoes_n+1
end
Se a condicao 1 for verdadeira, executa-se a sequen-
cia de instrucoes 1. Se a condicao 1 for falsa avalia a
condicao 2 e assim por diante. Se todas as condi coes
sao falsas, executa-se a sequencia de instrucoes n+1.
2. Comando select-case
Forma Geral:
select variavel_de_teste
case expressao_1
sequencia_de_instrucoes_1
case expressao_2
sequencia_de_instrucoes_2
... ... ... ... ... ... ... ...
case expressao_n
sequencia_de_instrucoes_n
else
sequencia_de_instrucoes_n+1
end
O valor da variavel de teste e comparado `as expressoes.
Se os valores obtidos sao iguais, a seq uencia correspon-
dente e executada.
Exemplos da aplica cao dos comandos condicionais serao
fornecidos na se cao seguinte.
Captulo 2 - Ferramentas b asicas do Scilab 41
2.3 Funcoes e esbo co dos gracos no Scilab
A declara cao de fun cao no Scilab segue a seguinte estrutura:
function [y1, y2, ....,yn] = nome funcao(x1, x2,...,xn)
instrucao 1
instrucao 2
.
.
.
instrucao n
endfunction
Existe o comando de para declarar fun coes, cuja sin-
taxe e
de ([y1,y2,...,yn] = nome funcao(x1,x2,...,xm),y1=regra1(x1,x2,...,xm),
y2=regra2(x1,x2,...,xm),...,yn=regran(x1,x2,...xm))
2.3.1 Graco de uma funcao
Seja f : A R R uma fun cao de uma variavel. Entao,
o graco da fun cao f e denido por:
Graf(f) = {(x, y)/x Domf = A y = f(x)} R
2
Seja g : A R
2
R uma fun cao de duas variaveis.
Entao, o graco de g e:
Graf(g) = {(x, y, z)/(x, y) Domf = B e z = g(x, y)} R
3
Se o domnio da fun cao e nito, entao o graco da fun c ao
e um conjunto nito.
Captulo 2 - Ferramentas b asicas do Scilab 42
Graco de dados numericos no Scilab
O Scilab esboca o graco de duas e de tres variaveis cujos,
tamanhos guardem uma rela cao coerente.
Para o esboco do graco de duas variaveis, usa-se o co-
mando plot2d conforme se segue:
plot2d(x, y)
onde x e y podem ser vetores ou matrizes. Se:
x e um vetor linha, isto e x M(1, n), entao y
M(n, m)
x e um vetor coluna,isto e x M(n, 1), entao y
M(m, n)
Exemplo 1. Dados x = [1:10]; y = [ 1 6 4 9 2 5 2 8 3.5
7]. Esbo cando o graco de x versus y no Scilab, usando-se
plot2d(x,y)
9 8 7 6 5 4 3 2 1
9
8
7
6
5
4
3
2
1
10
Captulo 2 - Ferramentas b asicas do Scilab 43
Como esbocar o graco de uma fun cao f : [a, b] R no
Scilab, cujo domnio f, Domf=[a,b], e innito?
Tal problema pode ser resolvido escolhendo-se um sub-
conjunto nito de pontos do graco da fun cao f. A seguir
Escolhem-se valores para x
i
[a, b], i 1, . . . , n e com
eles cria-se um vetor de tamanho n, x;
Avalia-se a fun cao f no vetor x, gerado no item ante-
rior, e com eles cria-se um vetor y
Exemplo 2. Esbo car o graco da fun cao f : [a, b] R.
Primeiramente, vamos escolher os pontos x
i
do intervalo
[a,b] e assim criar o vetor x, usando o conhecimento de
deni cao de vetores do Scilab para casos onde se conhece
o valor inicial, o valor nal e o tamanho do espa camento
entre os elementos do vetor. Sendo assim e bom lembrar
que uma forma de denir-se o espa camento a ser usado e
dx = (b a)/n,
sendo n o n umero de partes em que foi dividido o intervalo
[a, b]. Para criar o vetor x usamos a seguinte estrutura do
Scilab:
x = [a : dx : b]
O n umero de elementos do vetor x pode ser conhecido
usando-se o comando size(x). Neste caso, foi criado um
vetor linha de n + 1 elementos. Feito isso, calculam-se os
valores do vetor y, avaliando-se a fun cao f para os elemen-
tos do vetor x, isto e, y = f(x). Seguem-se abaixo alguns
exemplos.
Captulo 2 - Ferramentas b asicas do Scilab 44
Exemplo 1.
Gracar a fun cao
y = f(x) =

x + 1 x < 0
x + 2 x [0, 1]
x
2
1 x > 1
,
usando os valores extremos do intervalo [a, b] do graco,
n umero de pontos n do domnio da fun cao (observe que
quantos mais pontos, mais apurada sera a gura que que-
remos representar).
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc; //limpa a tela
clf;
// os proximos comandos irao pedir os dados
// a, b e n acima explicados
a= input(valor de a= );
b= input(valor de b= );
n= input(valor de n= );
dx=(b-a)/n;
x=[a:dx:b];
//armazena a dimensao do vetor criado em nl
[n,n1] = size(x);
//cria um vetor com a mesma dimensao do vetor do dominio
y = ones(1, n1);
Captulo 2 - Ferramentas b asicas do Scilab 45
// Definindo a funcao com nome func
function [y]= func(x)
if x < 0 then
y = x+1
elseif (x>= 0 & x <= 1) then
y = -x+2
else
y = x^2 -1
end
endfunction
//loop para calcular a imagem e armazena-la no vetor y
for i= 1:n1
y(i)=func(x(i));
end
size(y)
//Plotando o grafico
plot2d(x,y,0,axesflag=4)
Exemplo 2
Gracar a fun cao y =
1
x
.
Neste caso, a fun cao y = f(x) nao esta denida em x=0.
Para os casos de esboco do graco da fun cao y = f(x) para
x > 0 ou x < 0, podemos usar a ideia feita acima. No caso
Captulo 2 - Ferramentas b asicas do Scilab 46
3.0 2.0 1.5 1.0 0.5 0.0 -0.5 -1.0 -1.5
8
7
6
5
4
3
2
1
0
-1
2.5
Figura 2.7: Esbo co da fun cao descontnua y=f(x) do exemplo 1.
do esboco do graco para x tomando valores positivos e
negativos devemos usar algum mecanismo para que isso seja
possvel. O seguinte codigo (script) mostra um exemplo de
como esbocar o graco no ultimo caso indicado.
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clf;
// Intervalo de definicao da funcao
// [a, b]
a = input(a : );
b = input(b : );
n = input(c : );
Captulo 2 - Ferramentas b asicas do Scilab 47
dx = (b-a)/n;
if a*b > 0 then //n~ao divide por zero
x = [a: dx:b];
elseif a == 0 then //divide por zero em a
x = [+0.05: dx:b];
elseif b == 0 then //divide por zero em b
x = [a : dx: - 0.05];
else
// Considerando que o intervalo [-0.05, 0.05]
// n~ao pertence ao intervalo de definic~ao da funcao
x1= [a:dx:-0.05];
x2= [0.05:dx:b];
[nl1,nc1] = size(x1);
[nl2,nc2] = size(x2);
ntc = nc1 + nc2;
for i = 1:ntc
if i <= nc1 then
x(i) = x1(i);
else
x(i) = x2(i - nc1);
end
end
end
Captulo 2 - Ferramentas b asicas do Scilab 48
function [y1] = f1(x)
y1 = -x^-1
endfunction
// Calculando os yis
y = f1(x);
size(y)
// Plotando os pontos (x,y)
plot2d(x,y,0,axesflag=4)
3 1 0 -1 -2 -3 2
20
15
10
5
0
-5
-10
-15
-20
Figura 2.8: Esboco do gr aco da fun cao y = f(x) =
1
x
.
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 2 - Ferramentas b asicas do Scilab 49
Para esbocar o graco de fun coes de duas variaveis z =
f(x, y) no Scilab, pode-se usar o comando plot3d como se
segue:
plot3d(x, y, z.
Onde x e y sao vetores com nx e ny elementos e z e uma
matriz de nx ny elementos.
Como gerar a matriz z de tamanho nx ny? Uma forma
de se conseguir isto e seguindo-se os seguintes passos:
denir os vetores x e y de tamanho n e m, respectiva-
mente;
usar o comando meshgrid para criar as matrizes X e
Y de tamanho mn;
[X,Y] = meshgrid(x,y)
Finalmente avaliar a fun cao de duas variaveis, f, nas
matrizes X e Y. Neste caso, supoe-se que a fun cao f,
declarada no Scilab, usa a opera cao elemento a ele-
mento.
Vejamos um exemplo de esbo co do graco de fun cao de
duas variaveis.
Consideremos o vetor x = [1, 2, 3] e y = [-3,-2,-1, 0] e
seja a fun cao z = f(x, y) = x
2
+y
2
. O arquivo de comandos
e o seguinte:
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
Captulo 2 - Ferramentas b asicas do Scilab 50
function [z] = f(x,y)
z = x.^2 + y.^2
endfunction
// Definic~ao do vetor x e y
x = [1 2 3 ] // Tamanho n = 3
y = [-3 -2 -1 0]// Tamanho m = 4
// Definindo a matriz de tamanho mxn
[X, Y] = meshgrid(x,y);
// Mostrando a matriz X e Y
X
Y
z = f(X, Y);
// Matriz de tamanho nxm
Z = z
size(x), size(y), size(Z)
plot3d(x, y, Z);
Captulo 2 - Ferramentas b asicas do Scilab 51
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
A sada na consola do Scilab e que e produto da execu cao
do arquivo de comandos acima e
x =
1. 2. 3.
y =
- 3. - 2. - 1. 0.
X =
1. 2. 3.
1. 2. 3.
1. 2. 3.
1. 2. 3.
Y =
- 3. - 3. - 3.
- 2. - 2. - 2.
- 1. - 1. - 1.
0. 0. 0.
Z =
10. 5. 2. 1.
13. 8. 5. 4.
18. 13. 10. 9.
ans =
Captulo 2 - Ferramentas b asicas do Scilab 52
1. 3.
ans =
1. 4.
ans =
3. 4.
-->
E a sada graca do uso do plot3d e mostrada na gura a
seguir
Antes de passar ao proximo captulo vamos comentar
um pouco sobre a opera cao [X,Y] = meshgrid(x,y) usada
no arquivo de comandos acima. Para tal observamos a
sada na consola mostrada acima. Percebemos que x = [1
2 3] e y = [-3 -2 -1 0], entao as matrizes X e Y sao:
X =
1. 2. 3.
1. 2. 3.
1. 2. 3.
1. 2. 3.
Y =
- 3. - 3. - 3.
- 2. - 2. - 2.
- 1. - 1. - 1.
0. 0. 0.
Observe-se que:
Captulo 2 - Ferramentas b asicas do Scilab 53
0
-3.0
-2.5
-2.0
-1.5
Y
1.0
1.2 -1.0
1.4
1.6
1.8
2.0 -0.5
2.2
2.4 X
2.6
2.8
-0.0
3.0
2
4
6
8
Z
10
12
14
16
18
Figura 2.9: Sada gr aca do uso do comando plot3d(x,y,Z), onde x = [1 2 3
] e y = [-3 -2 -1 0].
Ambas as matrizes sao 4x3
Os elementos de todas as linhas da matriz X sao os
elementos do vetor x e, os elementos das colunas da
matriz Y sao os elementos do vetor y.
Mais exemplos do comando plot3d e/ou similares serao
apresentados nos captulos seguintes e no Apendice B.
Captulo 3
Integral de Riemann
Neste captulo exploramos principalmente a deni cao da In-
tegral de Riemann, tao importante para o desenvolvimento
historico desta ferramenta poderosa do calculo.
Para a integral unidimensional, o Teorema Fundamental
do Calculo foi a chave para a fusao de duas linhas historicas
de pesquisa: o estudo da antiderivadade uma fun cao e o
problema de calculo de areas nao tradicionais. Veremos
neste captulo uma aplica cao importante com o e o Teorema
do Valor Medio para Integrais.
3.1 A Soma de Riemann
Seja uma fun cao f : [a, b] R limitada, e n + 1 pontos x
i
ordenados do intervalo [a, b].
Deni cao 3.1.1 Denimos Soma de Riemann de f no in-
tervalo [a, b] a expressao
n

i=0
f()x
i
,
onde x
i
= [x
i+1
x
i
] e [a, b].
54
Captulo 3 - Integral de Riemann 55
Teorema 3.1.1 Integrabilidade de uma funcao contnua.
Dada uma funcao f : [a, b] R contnua, entao as
somas de Riemann convergem para um n umero real.
Tal n umero real e denominado de Integral denida de
f em [a, b] e denotamos por

b
a
f(x)dx. No caso em que f
nao e nao negativa, esse n umero representa a area da regiao
limitada pelo graco de f pelo eixo x e pelas retas verticais
x = a e x = b.
A rotina determina que segue os retangulosassociados
`a soma de Riemann e calcula o valor aproximado da integral
denida.
Captulo 3 - Integral de Riemann 56
Rotina 1
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Rotina 1
clc;
// Entrando com a func~ao
function [y]=f(x)
y=sin(x) //Func~ao a ser integrada
endfunction
// Pedindo dados de entrada
a=input ("Entre com o valor de a= ");
b=input ("Entre com o valor de b= ");
n=input ("Entre com o valor de n= ");
// Menu para escolher o tipo de aproximac~ao
op=4;
while ~(op>=1 & op<=3)
clc;
printf("Selecione o tipo de aproximac~ao \n\n")
printf("1) Aproximac~ao por cima \n")
printf("2) Aproximac~ao por baixo \n")
printf("3) Aproximac~ao intermediaria \n\n")
op=input ("Entre com a opc~ao: ");
end
Captulo 3 - Integral de Riemann 57
// Gerando o domnio da func~ao
dx=(b-a)/(10*n);
x=[a:dx:b];
// Gerando um vetor de dimens~ao n, cujos elementos
// s~ao numeros reais entre a e b, igualmente espacados
// e crescentes.
Xbarras=[a:(b-a)/n:b];
[Xc Xl]=size(Xbarras);
// Gerando o vetor que contem as alturas das barras
// a serem esbocadas, as quais est~ao de acordo com
// a opc~ao selecionada e a func~ao de estudo.
select op
case 1 // Aproximac~a por cima
for j=1:Xl-1
if f(Xbarras(j)) > f(Xbarras(j+1)) then //
Ybarras(j)=f(Xbarras(j));
else
Ybarras(j)=f(Xbarras(j+1));
end
end
case 2 // Aproximac~a por baixo
Captulo 3 - Integral de Riemann 58
for j=1:Xl-1
if f(Xbarras(j)) < f(Xbarras(j+1)) then //
Ybarras(j)=f(Xbarras(j));
else
Ybarras(j)=f(Xbarras(j+1));
end
end
case 3 // Aproximac~a intermediaria
for j=1:Xl-1
Ybarras(j)=f(((Xbarras(j+1)-Xbarras(j))/2)+Xbarras(j));
end
end
clf;
// Desenho das barras (ret^angulos), preenchidos com
// cor amarela, e calculo da area total
// (soma de Riemann)
area=0;
xset("color",32)
for k=1:Xl-1
xfpoly([Xbarras(k) Xbarras(k) Xbarras(k+1)...
Xbarras(k+1)],[0 Ybarras(k) Ybarras(k) 0]);
Captulo 3 - Integral de Riemann 59
area=area+(Xbarras(k+1)-Xbarras(k))*Ybarras(k);
end
area
// Desenhando contorno dos polgonos na cor preta
xset("color",1)
for k=1:Xl-1
xpoly([Xbarras(k) Xbarras(k) Xbarras(k+1) ...
Xbarras(k+1)],[0 Ybarras(k) Ybarras(k) 0]);
end
// Gerando a curva na cor azul com eixos cartesianos
plot2d(x,f(x),2,axesflag=4)
// Calculando a integral definida
intdef=intg(a,b,f);
// Inserindo valores e texto no grafico
xset("font",0,3)
xnumb(3.2,0.8,area)
xstring(2.85,0.8,["Area:"])
xnumb(3.4,0.85,intdef)
xstring(2.65,0.85,["Int. def.:"])
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 3 - Integral de Riemann 60
2
Area: 2.2
Int. def.:
1.0
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
0.8
0.6
0.4
0.2
0.0
-0.2
(a) Caption of subgure 1
2
Area: 1.8
Int. def.:
1.0
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
0.8
0.6
0.4
0.2
0.0
-0.2
(b) Caption of subgure 1
2
Area: 2
Int. def.:
1.0
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
0.8
0.6
0.4
0.2
0.0
-0.2
(c) Caption of subgure 1
Captulo 3 - Integral de Riemann 61
3.2 Aplica coes da integral denida
A integral denida tem muitas aplica coes, algumas delas
sao:
1. Calculo da area da regiao determinada pelo graco das
fun coes y = f
s
(x) e y = f
i
(x) e pelas retas x = a e
x = b, com f
s
(x) f
i
(x) x [a, b];
2. Valor medio de uma fun cao.
3. Calculo de volumes.
3.2.1 Calculo da area limitada pelo graco de duas func oes
Sejam y = f
s
(x) e y = f
i
(x) duas fun coes onde para todo
x [a, b], tem-se f
s
(x) f
i
(x) (Veja Figura abaixo).
Entao a area da regiao denida pelos gracos das fun coes
e pela retas x = a e x = b e dada por:
A(D) =

b
a
(f
s
(x) f
i
(x))dx (3.1)
A rotina a seguir cria os retangulos associados `a soma
de Riemann para a eq. 3.1
Captulo 3 - Integral de Riemann 62
Rotina 2
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Entrando com as func~oes
// Func~ao que define a curva superior
function [y]=f(x)
y=sin(x)
endfunction
// Func~ao que define a curva inferior
function [y]=g(x)
y=-sin(x)
endfunction
// Dados de entrada
a=input ("Entre com o valor de a= ");
b=input ("Entre com o valor de b= ");
n=input ("Entre com o valor de n= ");
// Menu para escolher o tipo de aproximac~ao
Captulo 3 - Integral de Riemann 63
op=4;
while ~(op>=1 & op<=3)
clc;
printf("Selecione o tipo de aproximac~ao \n\n")
printf("1) Aproximac~ao por externa \n")
printf("2) Aproximac~ao por interna \n")
printf("3) Aproximac~ao intermediaria \n\n")
op=input ("Entre com a opc~ao: ");
end
// Domnio
dx=(b-a)/(10*n);
x=[a:dx:b];
X=linspace(a,b,n+1);
// Gerando dados do Domnio
[Xc Xl]=size(X);
// Gerando a imagem
select op
case 1
// Aprocimac~ao por cima
for j=1:Xl-1
if f(X(j+1)) > f(X(j))
Ybarrasf(j)=f(X(j+1));
Captulo 3 - Integral de Riemann 64
Ybarrasg(j)=g(X(j+1));
else
Ybarrasf(j)=f(X(j));
Ybarrasg(j)=g(X(j));
end
end
// Aproximac~ao por baixo
case 2
for j=1:Xl-1
if f(X(j+1)) < f(X(j))
Ybarrasf(j)=f(X(j+1));
Ybarrasg(j)=g(X(j+1));
else
Ybarrasf(j)=f(X(j));
Ybarrasg(j)=g(X(j));
end
end
// Aprocimac~ao intermediaria
case 3
for j=1:Xl-1
Ybarrasf(j)=f(((X(j+1)-X(j))/2)+X(j));
Ybarrasg(j)=g(((X(j+1)-X(j))/2)+X(j));
end
end
// Desenhando polgonos preenchidos na cor amarela
for k=1:Xl-1
Xpo=[X(k) X(k) X(k+1) X(k+1)];
Captulo 3 - Integral de Riemann 65
Ypo=[Ybarrasg(k) Ybarrasf(k) Ybarrasf(k) Ybarrasg(k)];
xset("color",32)
xfpoly(Xpo,Ypo);
xset("color",1)
xpoly(Xpo,Ypo,"lines",1);
end
// Gerando a curva na cor azul com eixos cartesianos
plot2d(x,f(x),2,axesflag=4)
plot2d(x,g(x),2,axesflag=4)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 3 - Integral de Riemann 66
As guras a seguir sao produtos da execu cao da ro-
tina acima para o seguinte caso: f
s
(x) = sen(x), f
i
(x) =
sen(x) e n = 20
Captulo 3 - Integral de Riemann 67
1.0
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.8
-1.0
(d) Fs e Fi PE
1.0
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.8
-1.0
(e) Fs e Fi PI
1.0
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.8
-1.0
(f) Fs e Fi PM
Captulo 3 - Integral de Riemann 68
3.2.2 O Teorema do Valor Medio
Teorema 3.2.1 Dada uma funcao contnua f : [a, b] R,
entao existe um elemento c [a, b] tal que
f(c).(b a) =

b
a
f(x)dx (3.2)
Geometricamente, o teorema do Valor Medio signica
que a area (com sinal) de uma fun cao contnua denida em
um intervalo [a, b] e igual a area determinada pelo retangulo
cuja base tem medida (b a) e altura f(c), para algum
c [a, b]. O valor f(c) e denominado valor medio da fun cao
f.
Para algumas fun coes, o calculo do ponto c, onde acon-
tece o valor medio da fun cao, e de facil determina cao. Por
exemplo, consideremos a fun cao y = x
n
, onde n e um in-
teiro positivo. Suponhamos que estamos trabalhando no
intervalo [a, b]. Da equa cao 3.2, para f(x) = x
n
, tem-se:
Captulo 3 - Integral de Riemann 69
c
n
=

b
a
x
n
dx
(b a)
, (3.3)
logo
c = (

b
a
x
n
dx
(b a)
). (3.4)
Logo, o valor exato do ponto c associado `a fun cao f(x) =
x
n
, com x [a, b] e dado pela formula 3.4.
A rotina a seguir executa o calculo do valor c, dado
por Eq. 3.4, e esbo ca os gracos da fun cao y = x
n
e do
retanguloassociado ao valor medio dessa fun cao no inter-
valo [a, b].
Captulo 3 - Integral de Riemann 70
Rotina 3
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Func~ao x=x(t)
function [y]= funcao(x)
y= x^n; //Func~ao escolhida
endfunction
// Digite o valor do intervalo
a= input("Digite o valor do intervalo, a = ");
b= input("Digite o valor de intervalo, b = ");
// Digite o valor do expoente da func~ao
n= input("Digite o valor do expoente da funcao, n= ");
// Sabendo que a primitiva da func~ao e x^(n+1)/(n+1),
// temos:
r=(b^(n+1)/(n+1)) - (a^(n+1)/(n+1));
Captulo 3 - Integral de Riemann 71
q = r/(b-a);
// Ajeitando para raiz quadrada de numero negativo
if q < 0 then
c= - (-q )^(1/n)
else
c = q^(1/n)
end
// Calculando a area
area = c^n * (b-a)
// Criando o grafico
function [y]= d1(x)
y=x^(n+1)/(n+1);
endfunction
nx = 100;
dx = (b-a)/nx;
x = [a:dx:b];
[n0 n1] = size(x);
Captulo 3 - Integral de Riemann 72
y=ones(1,n1);
// Nomeando os eixos do grafico
xtitle("Grafico da funcao y=x^n", ...
"eixo das abcissas ","eixo das ordenadas")
for i= 1:n1
y(i)=funcao(x(i));
end
// Marcando a area equivalente `a da integral
xaux = [a a b b ];
yaux = [0 funcao(c) funcao(c) 0];
xaux2 = [c c];
yaux2 = [0 funcao(c)];
xaux3 = [a a];
yaux3 = [0 funcao(a)];
xaux4 = [b b];
yaux4 = [0 funcao(b)];
// Colorindo a area de amarelo
xset("color",32)
for k=1:n1
xfpoly([a a b b],[0 funcao(c) funcao(c) 0]);
Captulo 3 - Integral de Riemann 73
end
// Plotando a area marcada
plot2d(xaux, yaux);
plot2d(xaux2, yaux2);
plot2d(xaux3, yaux3);
plot2d(xaux4, yaux4);
plot2d(x,y,axesflag=4, style=[color("black")])
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 3 - Integral de Riemann 74
A rotina acima foi executada para as seguintes fun coes:
a) n = 2 e x [1, 1], isto e, f(x) = x
2
, x [1, 1];
b) n = 3 e x [2, 0], isto e, f(x) = x
3
, x [2, 0].
As sadas no caso a) e b) foram, respectivamente,
c = 0.5773503
area = 0.6666667
c = - 1.259921
area = -4.
As guras 3.1(g) e 3.1(h) mostram as curvas com seus
respectivos retangulos, para o caso a) e b).
Da equa cao 3.2, observa-se que uma vez determinada a
integral denida,

b
a
f(x)dx, para calcular o valor c precisa-
se resolver a sequinte equa cao:
f(c) =

b
a
f(x).dx
(b a)
(3.5)
Caso a fun cao possua uma inversa conhecida, entao c e
rapidamente calculada. Caso contrario, deve-se usar algum
metodo que permita resolver tal equa cao. Um dos metodos
que nos permite calcular aproximadamente a solu cao da
equa cao e o metodo de bissec cao.
O metodo de bissec cao e usado para resolver equa coes
do tipo:
F(x) = 0.
Captulo 3 - Integral de Riemann 75
1.0 0.6 0.4 0.2 0.0 -0.2 -0.4 -0.6 -0.8 -1.0
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.8
(g) y = x
2
-0.0 -0.4 -0.6 -0.8 -1.0 -1.2 -1.4 -1.6 -1.8 -2.0 -0.2
-0
-1
-2
-3
-4
-5
-6
-8
-7
(h) y = x
3
Figura 3.1: Esboco do ret angulo associado ao valor medio da fun cao.
Captulo 3 - Integral de Riemann 76
A explica cao deste metodo pode ser encontada no apendice
F. Neste caso, a fun cao F, para o calculo de c, onde se apli-
cou o algoritmo da bissec cao e obtida a partir da equa cao
3.5 conforme se pode ver abaixo
f(c)

b
a
f(x).dx
(b a)
= 0
ou
f(c)
A
b a
= 0,
onde A =

b
a
f(x).dx.
Entao, a fun cao de aplica cao do metodo de bissec cao e
F(x) = f(x)
A
b a
Observa-se que o calculo da integral denida acima, pode
ser calculada, aproximadamente, usando a soma de Rie-
mann. No Scilab, existe a fun cao predenida intg que
calcula a integral denida. Na rotina a seguir usamos tal
fun cao para calcular a integral denida.
Captulo 3 - Integral de Riemann 77
Rotina 4
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clear;
// Definic~ao da func~ao a ser integrada
function [y] = f1(x)
y = x^2; // Primeira func~ao de execuc~ao
// y = x - cos(x)// Segunda func~ao de execuc~ao
endfunction
// Definic~ao da func~ao onde sera aplicado
// o metodo de Bissecc~ao
function y = f2(a, b, A, x)
y = f1(x)- (A/(b-a)) // o x encontrado sera o c
endfunction
// Leitura dos dados
// Extremos do intervalo de integrac~ao
a = input(Limitante inferior do intervalo : );
b = input(Limitante superior do intervalo : );
// Numero de vezes da aplicac~ao do metodo de
Captulo 3 - Integral de Riemann 78
// Bissecc~ao
n = input(Numero de iterac~oes : );
// Aplicac~ao do metodo de bissecc~ao
// Inicializando o intervalo de calculo
ak = a;
bk = b;
for k = 0:n
xk = (ak+bk)/2;
aux = f2(a, b, Aintg, xk);
if (f2(a, b, Aintg, ak)* aux ) < 0 then
bk = xk;
elseif abs(aux) < 10^(-15) then
k = n;
else
ak = xk;
end
end
c = xk
Captulo 3 - Integral de Riemann 79
//

Area do ret^angulo associado ao valor medio
// da func~ao
Aretangulo = f1(c)*(b-a)
// Calculo do valor da integral definida usando-se
// o comando "intg" do Scilab
Aintg = intg(a,b,f1);
//
//
np = 100;
dx = (b-a)/ np;
x = [a:dx:b];
y = f1(x);
clf;
// Marcando a area equivalente `a da integral
xaux = [a a b b ];
yaux = [0 f1(c) f1(c) 0];
xaux2 = [c c];
yaux2 = [0 f1(c)];
Captulo 3 - Integral de Riemann 80
xaux3 = [a a];
yaux3 = [0 f1(a)];
xaux4 = [b b];
yaux4 = [0 f1(b)];
// Colorindo a area de amarelo
area=0;
xset("color",32)
for k=1:np
xfpoly([a a b b],[0 f1(c) f1(c) 0]);
end
// Plotando a area marcada
plot2d(xaux, yaux);
plot2d(xaux2, yaux2);
plot2d(xaux3, yaux3);
plot2d(xaux4, yaux4);
plot2d(x,y,axesflag=4, style=[color("black")])
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 3 - Integral de Riemann 81
A execu cao da rotina anterior para a fun cao f(x) = x
2
no
intervalo [a, b] = [1, 2] e considerando 20 vezes a aplica cao
do metodo de bissec cao, tem-se a seguinte sada:
A sada para a = -1, b = 2, f(x)= x^2
c =
0.9999995
Aretangulo =
2.9999971
Aintg =
3.
o graco de y = x
2
e mostrado na seguinte gura
Quando usamos a fun cao f(x) = x cos(x) com x
[0, ], obtemos a seguinte sada
c =
1.5707963
Aretangulo =
4.9348022
Aintg =
4.9348022
O graco e
Captulo 3 - Integral de Riemann 82
2.0 1.0 0.5 0.0 -0.5 -1.0 1.5
4.0
3.5
3.0
2.5
2.0
1.5
1.0
0.5
0.0
5
3.0 2.5 2.0 1.5 1.0 0.5 0.0 3.5
4
3
2
1
0
-1
Captulo 4
Curvas no plano e no espaco
Neste captulo mostraremos exemplos de como plotar cur-
vas no plano e no espa co.
4.1 Curvas no plano
Deni cao 4.1.1 Curvas planas sao as images de funcoes
: [a, b] R
2
.
Isto e, a cada t [a, b] corresponde um vetor (x(t), y(t))
de R
2
. Dizemos que e uma parametriza cao da curva no
plano.
A seguir apresentamos a rotina que esbo ca o graco da
seguinte circunferencia:
(x x
0
)
2
+ (y y
0
)
2
= R
2
Tal graco pode ser obtido, parametrizando-se a equa cao
da circunferencia. Neste caso, a expressao usada para pa-
rametrizar a circunferencia e:
x(t) = x
0
+ Rcos(t) (4.1)
y(t) = y
0
+Rsen(t) (4.2)
83
Captulo 4 - Curvas no plano e no espa co 84
Rotina 1 para curvas
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Leitura de dados de entrada
x0 = input ("Entre com o valor de x0 = ");
y0 = input ("Entre com o valor de y0 = ");
R = input ("Entre com o valor de R = ");
// Intervalo considerado para t e [a,b] = [0, 2pi]
// Numero de partes em que sera dividido o intervalo
nt = 100;
// Espacamento entre os pontos do intervalo [a,b]
dt = (2*%pi - 0)/ nt;
// Gerac~ao dos pontos do intervalo [a,b]
t = (0:dt:2*%pi);
// Equac~oes parametrizadas da circunfer^encia
Captulo 4 - Curvas no plano e no espa co 85
x = (x0 + R * cos(t));
y = (y0 + R * sin(t));
// Plotando o grafico
// comando axesflag=1 gera um ret^angulo ao redor do grafico
plot2d(x,y,axesflag=1)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
O graco mostrado na Figura 4.1, representa a curva
dada pela circunferencia (x1)
2
+(y 3)
2
= 4. Tal graco
foi obtido usando-se a rotina acima para os seguintes valores
de entrada: x
0
= 1, y
0
= 2 e R = 2.
2.5
5.0
-1.0 -0.5 0.5 2.0 0.0 1.5 3.0
4.5
4.0
3.5
3.0
2.5
2.0
1.5
1.0
1.0
Figura 4.1: Circunferencia de centro (x
0
, y
0
) = (1, 3) e raio R = 2.
Captulo 4 - Curvas no plano e no espa co 86
4.1.1 O vetor tangente a uma curva no plano
Um importante elemento geometrico de uma curva no plano
vem dado pelo seu vetor tangente. O tipo de curvas que
possui este tipo de elemento em cada ponto, ou em cada
ponto menos um n umero nito do mesmo, e chamado de
curvas regulares. A seguir apresentam-se algumas deni coes
e arma coes que matematicamente denem este conceito.
Seja C uma curva parametrizada por : [a, b] R
2
.
Deni cao 4.1.2 Dizemos que a curva e diferenciavel no
ponto t
0
[a, b] se suas funcoes coordenadas x(t) e y(t) sao
funcoes diferenciaveis em t
0
no sentido das funcoes reais.
Deni cao 4.1.3 O vetor velocidade ou tangente `a curva e
lim
tt
0
(t
0
+ h) (t
0
)
h
se o limite existir.
Assim, as coordenadas do vetor tangente a curva no
ponto t
0
, denotado por

(t
0
) no ponto t
0
serao

(t
0
) = (x

(t
0
), y

(t
0
))
Supondo que (t) representa o vetor posi cao de uma partcula
no tempo t, entao o modulo do vetor tangente no ponto
t
0
pode ser intepretado como a velocidade desta particula
nesse determinado tempo.
Deni cao 4.1.4 Dizemos que uma curva C e regular por
partes, se ela pode ser parametrizada por uma funcao
diferenciavel, exceto por um n umero nito de pontos do
intervalo, onde a derivada lateral das funcoes coordenadas
existir.
Captulo 4 - Curvas no plano e no espa co 87
A execu cao da rotina a seguir esbo ca o graco de uma
curva informada pelo usuario dentro desta rotina e esbo ca
os vetores tangentes re-escalados correspondentes.
Captulo 4 - Curvas no plano e no espa co 88
Rotina 2 de curvas
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Defindindo o intervalo.
t = linspace(-1, 1, 200);
// Equac~oes da curva
// Func~ao x=x(t)
function [x]= posicaox(t)
x = t^3; // x do exemplo 1
// x = t^4; // x do exemplo 2
// x =t; // x do exemplo 3
endfunction
// Func~ao y=y(t)
function [y]= posicaoy(t)
y = t^2; // y do exemplo 1
Captulo 4 - Curvas no plano e no espa co 89
// y = t^5; // y do exemplo 2
// y = t.^(-1); // y do exemplo 3
endfunction
// Derivada da componente x
function [derx]= derposicaox(t)
// Derivada da componente x do exemplo 1
derx= 3*t^2;
// Derivada da componente x do exemplo 2
// derx = 4*t^3;
// Derivada da componente x do exemplo 3
// derx = 1+t * 0;
endfunction
// Derivada da componente y
function [dery]= derposicaoy(t)
// Derivada da componente y do exemplo 1
dery= 2*t;
// Derivada da componente y do exemplo 2
// dery = 5*t^4;
// Derivada da componente y do exemplo 3
// dery = -t.^(-2);
Captulo 4 - Curvas no plano e no espa co 90
endfunction
// Determinando os valores de x
x = posicaox(t);
// Determinando os valores de y
y = posicaoy(t);
// Determinando os valores da derivada de x
derx = derposicaox(t);
// Determinando os valores da derivada de y
dery = derposicaoy(t);
// Graficando a curva sem vetores tangentes
scf(0)
clf
plot2d(x,y,style =[color("red")], axesflag=1)
// Graficando a curva com os vetores tangentes
scf(1)
clf; // Limpando a janela do grafico
c=30; // Numero de vetores tangentes
plot2d(x,y, style =[color("red")])
for i=1:200/c:200
// Criando os xis do ponto inicial e final
Captulo 4 - Curvas no plano e no espa co 91
// do vetor i
// O fator 1/10 e para reescalaronar o tamanho do vetor i
x0=[x(i) x(i)+1/10*derx(i)];
// Criando os yjs do ponto inicial e final
// do vetor i
// O fator 1/10 e para reescalaronar o tamanho do vetor i
y0=[y(i) y(i)+1/10*dery(i)];
plot2d4(x0,y0, axesflag=9, style =[color("black")])
end
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
A sada da execu cao da rotina acima gera os gracos
da curva r(t) = (x(t), y(t)) = (t
3
, t
2
), mostrados na Figura
4.2(a) e 4.2(b).
A seguinte rotina esboca o graco da cicloide.
Captulo 4 - Curvas no plano e no espa co 92
0.8 -0.8 -0.6 -0.4 0.0 0.6 -0.2 0.4 1.0 -1.0
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.2
(a) a)
1.0 0.5 0.0 -0.5 -1.0
1.2
1.0
0.8
0.6
0.4
0.2
0.0
-0.2
1.5
(b) b)
Figura 4.2: a) Curva r(t) = (t
3
, t
2
), b) Vetor tangente a curva r(t).
Captulo 4 - Curvas no plano e no espa co 93
Rotina 3: Esboco da curva cicloide
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Grafico da curva cicloide
// Definindo o intervalo para t
t = linspace(0, 4*%pi, 200);
// equac~oes da curva
x = t - sin(t);
y = 1 - cos(t);
//plotando o grafico
plot2d(x,y)
// Adicionando os vetores tangentes.
c=40; //numero de vetores tangentes.
for i=1:200/c:200
// Criando os xis do ponto inicial e final
// do vetor i
x0=[x(i) x(i)+1/2*(1- cos(t(i)))];
// Criando os yis do ponto inicial e final
Captulo 4 - Curvas no plano e no espa co 94
// do vetor i
y0=[y(i) y(i)+1/2*sin(t(i))];
// O fator 1/2 foi usado para reescalaronar o tamanho
// do vetor.
//plotando o grafico
plot2d4(x0,y0,axesflag=5)
//Obs. O comando plot2d4 serve para fazer as setas
// o par^ametro axesflag=5 e para plotar o eixo
// junto com a caixa.
end
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
4.2 Curvas no espaco
As curvas no espa co tem a mesma deni cao das curvas pla-
nas, ou seja, eles sao os gracos de fun coes de domnio real
e de imagem parte do conjunto R
3
.
Um exemplo de curva no espa co e a Helice. A equa cao
desta curva e dada pelas seguintes equa coes parametricas:
x(t) = cos(t)
y(t) = sen(t)
z(t) =
t
2
Captulo 4 - Curvas no plano e no espa co 95
12 10 8 14 6 4 2 0 -2
2.5
2.0
1.5
1.0
0.5
0.0
-0.5
Figura 4.3: Esbo co do gr aco da cicloide r(t) = (t cos(t), 1 cos(t))
Rotina 4: Esboco da graco da Helice
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Definindo o intervalo para t
t=linspace(0,4*%pi,200);
// Equac~oes parametricas da helice
x=cos(t);
y=sin(t);
z=t/2*%pi;
Captulo 4 - Curvas no plano e no espa co 96
param3d(x,y,z) // Plotando a helice parametrizada
// Criando os vetores tangentes
c=20; // Numero de vetores tangentes
for i=1:200/c:200
// Criando os xis do ponto inicial e final
// do vetor i
x0=[x(i) x(i)-sin(t(i))];
// Criando os xis do ponto inicial e final
// do vetor i
y0=[y(i) y(i)+cos(t(i))];
// Criando os xis do ponto inicial e final
// do vetor i
z0=[z(i) z(i)+1/2*%pi];
// Plotando a curva parametrizada
param3d1(x0,y0,z0)
// Comandos para fazer as setas
p=get("hdl");
p.mark_mode="on";
Captulo 4 - Curvas no plano e no espa co 97
p.polyline_style=4;
end
p.mark_mode="off";
param3d(x,y,z)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 4 - Curvas no plano e no espa co 98
0
-1.5
-1.0
-0.5
0.0
Y
-1.5
0.5
-1.0
-0.5
0.0
1.0
0.5
X
1.0 1.5
1.5
5
10
Z
15
20
25
Figura 4.4: Esbo co do gr aco da Helice r(t) = (cos(t), sen(t),
t
2
), t [0, 4].
Captulo 4 - Curvas no plano e no espa co 99
4.2.1 Triedo de Frenet
Aqui va um texto explicativo mais a rotina e a sada
Captulo 5
Funcoes de varias variaveis
Neste captulo, o Scilab e apresentado como uma grande
ferramenta para aulas de calculo. As rotinas podem pare-
cer mais complicadas, mas os resultados sao mais surpren-
dentes. Este captulo esta dividido em se coes que contem-
plam as diferentes e mais importantes diculdades que apa-
recem no entendimento de fun coes de varias variaveis.
5.1 Funcoes de duas variaveis
Quando observamos que os valores de uma determinada
variavel u depende de outras duas variaveis, por exemplo,
r e s, entao dizemos que a variavel u e dependente de r e
s, e representamos matematicamente, por
u = u(r, s).
A expressao u = u(r, s) indica que a variavel u e uma
fun cao de duas variaveis. As variaveis r e s sao denomina-
das de variaveis independentes e a variavel u de dependente.
Nem todo par de valores (r, s) tem associado um valor
para u. O conjunto de todos os pares para os quais a fun cao
100
Captulo 5 - Fun coes de Varias Vari aveis 101
u tem um valor e denominado de domnio da fun cao u,
Domu; e o conjunto de valores que a fun cao u assume, no
domnio da fun cao, e denominado de imagem da fun cao u,
Img u.
Matematicamente, uma fun cao de duas variaveis pode
ser representada da forma a seguir:
u : D R
2
R
(r, s) u = u(r, s)
Onde, D = Domu.
A imagem da fun cao u e matematicamente representada
por: Imgu = {u(r, s)/(r, s) Domu} E dene-se o graco
da fun cao u como se segue:
G(u) = (r, s, u(r, s))/(r, s) Dom(u)
Observe que o graco de uma fun cao e um subconjunto de
R
3
.
Alguns exemplos de fun coes de duas variaveis sao:
Volume, V , de um cilindro de raio r e altura h: V =
V (r, h) = r
2
h
Temperatura, T, em um ponto (x, y) de uma placa
plana e na:T = T(x, y).
A seguir apresentam-se algumas fun coes cujos domnios
sao regioes retangulares de R
2
.
(f1) z = sen(x)sen(y) x [2, 2] e y [3.3]
(f2) z = |x| +|y| x [2, 2] e y [3, 3]
(f3) z = ln(x
2
+y
2
) (x, y) [8, 8]
2
Captulo 5 - Fun coes de Varias Vari aveis 102
(f4) z =
sen(xy)
xy
(x, y) [5, 5]
2
(f5) z = xye
x
2
y
2
x [2, 2] e y [3, 3]
(f6) z =
y
4
8y
2
4x
2
21
x [3, 3] e y [4, 4]
Serao apresentadas abaixo duas formas para executar as
rotinas no que diz respeito `a forma de declarar as fun coes.
Os gracos das fun coes da lista serao apresentados poste-
riormente.
Modelo 1. Usando o comando function ... endfunction:
Captulo 5 - Fun coes de Varias Vari aveis 103
Rotina 1
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
(a) z = sen(x)sen(y)
clc;
clf;
// Intervalo de definic~ao da func~ao no eixo x
a = input(a :);
b = input(b :);
n = input(n :);
// Definindo o espacamento homog^eneo entre os pontos xis
dx = (b-a)/n;
// Calculando os pontos xis
x = [a: dx:b];
// Intervalo de definic~ao da func~ao no eixo y
c = input(c :);
d = input(d :);
m = input(m :);
// Definindo o espacamento homog^eneo entre os pontos yis
dy = (d-c)/m;
// Calculando os pontos yis
y = [c: dy:d];
Captulo 5 - Fun coes de Varias Vari aveis 104
// o seguinte comando armazena a dimens~ao do vetor criado em xl
[xc xl]=size(x);
// o seguinte comando armazena a dimens~ao do vetor criado em yl
[yc yl]=size(y);
//Definindo a func~ao
function [z]=f1(x,y)
z= sin(x)*sin(y)
endfunction
for i=1:xl
for j=1:yl
z(i,j)= f1(x(i),y(j));
end
end
size(z)
// Plotando os pontos (x,y,z)
fplot3d(x,y,f1);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Modelo 2. Usando o comando de:
Rotina 2
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
(b) z = |x| +|y|
Captulo 5 - Fun coes de Varias Vari aveis 105
// Plotando a funcao z = abs(x) + abs(y)
clc;
clf;
// Intervalo de definic~ao da func~ao no eixo x
a = input(a :);
b = input(b :);
n = input(n :);
// Definindo o espacamento homog^eneo entre os pontos xis
x = (b-a)/n;
// Calculando os pontos xis
x = [a: dx:b];
// Intervalo de definic~ao da func~ao no eixo y
c = input(c :);
d = input(d :);
m = input(m :);
// Definindo o espacamento homog^eneo entre os pontos yis
dy = (d-c)/m;
// Calculando os pontos yis
y = [c: dy:d];
//Medindo o tamanho dos vetores
size(x);
size(y);
Captulo 5 - Fun coes de Varias Vari aveis 106
//Definindo a funcao
deff([z]=f5(x,y),z= abs(x) + abs(y));
//Avaliando os pontos
z=eval3d(f5,x,y);
size(z)
//Plotando
plot3d(x,y,z);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Os exemplos abaixo sao executados da mesma maneira
que os anteriores (Rotina 1 e Rotina 2). Para executa-
los basta mudar a fun cao em //Denindo a fun cao. Os
resultados da execu cao dessas rotinas geraram os seguintes
gracos 5.1(a), 5.1(b), 5.2(a), 5.2(b), 5.3(a), 5.3(b).
As fun coes esbo cadas nas guras acima tem como domnios
regioes do tipo retangular. Para domnios nao retangulares
um processo diferente deve ser pensando e implementando
no Scilab, caso seja possvel. Para esbo car o graco de
fun coes com domnios do tipo circular usamos coordenadas
polares.
As coordenadas polares sao usadas para representar um
ponto P = (x, y) por outras duas caractersticas associadas
a esse ponto, a saber: o raio r (r
2
= x
2
+ y
2
), relacionado
com a distancia do ponto P `a origem de coordenadas, O, e
o angulo que o vetor OP faz com o eixo x positivo (Veja
Figura 5.1).
Captulo 5 - Fun coes de Varias Vari aveis 107
3
2
Z
-1.0
-0.8
-0.6
-0.4
-0.2
0.0
-2.0
0.2
0.4
1
0.6
0.8
1.0
-1.5
-1.0 0
Y
-0.5
0.0 -1
X 0.5
1.0 -2
1.5
2.0 -3
(a) f1 - z = sen(x)sen(y)
0.0 3
-2
0.5
2
1.0
1.5
-1
1
Z
2.0
2.5
0
0
3.0
X Y
3.5
-1
4.0
1
-2
4.5
5.0
2 -3
(b) f2 - z = |x| + |y|
Figura 5.1: Esbo co das fun coes (f1) e (f2) da lista indicada anteriormente.
Captulo 5 - Fun coes de Varias Vari aveis 108
-20
-8
-15
Z
-10
-6
-5
-4
0
5
-2
0 8 X
6
2 4
2
4 0
-2 Y
6 -4
-6 8
-8
(a) f3 - z = ln(x
2
+ y
2
)
-5
-4
-3
-2
-1
0 Y
1
Z
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
1.0
2
5
4
3 3
2
1
0 4
-1
-2
X
-3 5
-4
-5
(b) f4 - z =
sen(xy)
xy
Figura 5.2: Esbo co das fun coes (f3) e (f4) da lista indicada anteriormente.
Captulo 5 - Fun coes de Varias Vari aveis 109
Z
-0.20
-0.15
-0.10
-0.05
0.00
0.05
0.10
0.15
0.20
-2.0
-1.5
-1.0
-0.5
3
0.0
X
2
0.5
1
0
1.0
Y
-1 1.5
-2
2.0
-3
(a) f5 - z = xye
x
2
y
2
-3
-2
-1
0 X
1
-3
2
-4
-3
-2
-1
0
-2
1
3
2
3
4
Y
-1
0
1
Z
2
3
4
5
6
7
(b) f6 - z =
y
4
8y
2
4x
2
21
Figura 5.3: Esbo co das fun coes (f5) e (f6) da lista indicada anteriormente.
Captulo 5 - Fun coes de Varias Vari aveis 110

r
P
(x,y) P(r,

)
X
Y
Figura 5.4: Rela cao geometrica entre as coordenadas cartesianas e as po-
lares.
A rela cao entre as coordenadas cartesianas (x, y) e as
coordenadas polares (r, ) e:
x = rcos()
y = rsen()
Para esbocar o graco de fun coes de duas variaveis em
domnios circulares, primeiramente, devemos gerar o domnio
circular e para isso usamos coordenadas polares; Em se-
guida deve-se avaliar a fun cao nos pontos do domnio. Tal
processo matematico e mostrado na gura a seguir, Figura
5.1:
A rotina a seguir gera o graco da fun cao:
z = f(x, y) = 3(x 1) + 2y
2
(5.1)
no domnio:
D = {(x, y)/x = x
0
+}
Captulo 5 - Fun coes de Varias Vari aveis 111
R
2
Z
X
Y
r

f(x,y)
x=x(r, )
y=y(r, )
Figura 5.5: Rela cao geometrica entre as coordenadas cartesianas e as po-
lares.
Rotina 3
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
funcprot(0)
// Definic~ao da func~ao de duas variaveis a ser graficada
function [Z]=f3(X,Y)
Z = 3 .*(X-1) + 2 * Y.^2
endfunction;
Captulo 5 - Fun coes de Varias Vari aveis 112
// Dados do domnio em coordenadas polares
printf("Esboco do grafico de uma func~ao de duas variaveis\n");
printf("em domnio circulares que fazem parte da seguinte \n");
printf("equac~ao: ri^2 <=(x-x0)^2 + (y-y0)^2 <= rf^2\n\n");
r1 =input ("Valor do raio inicial ri= ");
r2 =input ("Valor do raio final rf= ");
theta1 =input ("Valor do ^angulo inicial theta1 = ");
theta2 =input ("Valor do ^angulo final theta2 = ");
x0 =input ("Valor de x0= ");
y0 =input ("Valor de y0= ");
nr =input ("\n Numero de divis~oes do intervalo para r, nr = ");
nt =input ("Numero de divis~oes do intervalo para t, nt = ");
// Gerando uma malha no espaco r theta
// Divis~oes em r
r = linspace(r1,r2,nr);
// Divis~oes em theta
th= linspace(theta1, theta2, nt);
// Malha no domnio r theta
[R,TH] = meshgrid(r,th);
// Determinando os respectivos x e y
Captulo 5 - Fun coes de Varias Vari aveis 113
x = x0 + R.*cos(TH);
y = y0 + R.*sin(TH);
// Avaliando a func~ao nos pontos xs e ys
z = f3(x,y);
// Esbocando a superfcie
surf(x,y,z)
//plot3d(x,y,z)
// Esbocando o domnio
surf(x,y,-5+0*z)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 114
A Figura 5.6(b) representa o graco da fun cao dada pela
expressao (5.1) para os valores de r
1
= 0, r
2
= 2,
1
= 0,

2
= 2, x
0
= 1 e y
0
= 3. Enquanto que a Figura 5.6(b) e
o graco da mesma fun cao (5.1) para os valores de r
1
= 1,
r
2
= 2,

3
,
2
=

3
, x
0
e y
0
.
Esbo co do graco para domnios de fun coes do tipo regi oes
circulares.
5.1.1 Curvas de nvel
Uma curva de nvel de uma fun cao de duas variaveis f =
f(x, y) e um subconjunto do domnio da fun cao onde a
fun cao assume ou possui um valor constante. Dependendo
da fun cao f, pode-se ter innitas curvas de nvel.
A expressao matematica da curva de nvel de valor c da
fun cao f e
C
c
= {(x, y) R
2
/f(x, y) = c}
As curvas de nvel da fun cao f nos informam as curvas onde
a fun cao possui determinados valores, e os possveis valores
da imagem da fun cao.
A rotina que se segue permite desenhar um conjunto de
curvas de nvel para uma dada fun cao f. O n umero de
curvas de nvel sao especicadas pelo executor da rotina no
Scilab.
Captulo 5 - Fun coes de Varias Vari aveis 115
-10
5.0
0
4.5
10
4.0
3.0
Z
20
3.5
2.5
2.0 3.0
30
Y
1.5
2.5
40
1.0
2.0 0.5
X
50
0.0
1.5
-0.5
60
1.0 -1.0
(a)
-6
2.0
-4
1.5
-2
Z
1.0
0
0.5
2
0.0 Y
4
-0.5
6
-1.0
-1.5
2.0
1.5
-2.0
1.0
0.5
X
(b)
Figura 5.6: Esbo co do gr aco da fun cao
Captulo 5 - Fun coes de Varias Vari aveis 116
Rotina 4 - desenhando as curvas de nvel
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Usando fplot3d e fcontour
clear;
clc;
clf;
// Definindo a func~ao
function[z]= f(x,y)
z = 6*exp(-3*x.^2-y.^2) + (x./2) + y
endfunction
// Definindo o domnio retangular da func~ao
a = -1:.05:2;
b = -2:.05:3;
// Numero de curvas de nives
ncn = 10;
// Plotando a superfcie
scf(0);
clf;
fplot3d(a, b, f);
Captulo 5 - Fun coes de Varias Vari aveis 117
// Plotando as ncn curvas de nveis
scf(0);
clf;
fcontour(a,b,f,ncn)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 118
A seguinte rotina desenha as curvas de nvel nos planos
z = c, onde c e o valor da curva de nvel. Veja a Figura
5.1.1
Captulo 5 - Fun coes de Varias Vari aveis 119
-3
-1.0
-0.5
3.0
0.0
2.5
2.0
-2
0.5
1.5 X
1.0
1.0 0.5
0.0
-0.5 1.5
Y
-1.0
-1.5
2.0
-1
-2.0
0
1
Z
2
3
4
5
6
7
(a)
1.5 1.0 0.5 0.0 -0.5 -1.0
3.0
2.5
2.0
1.5
1.0
0.5
0.0
-0.5
-1.0
-1.5
-2.0
2.0
5.26
3.71
2.94
2.94
2.16
2.16
1.38
0.609
-0.167
-0.943
-1.72
4.49
(b)
Figura 5.7: Esboco do gr aco da fun cao e de algumas curvas de niveis.
Captulo 5 - Fun coes de Varias Vari aveis 120
Rotina 5 - curvas de nvel na superfcie
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Definindo a func~ao
function[z]= f(x,y)
z = 6*exp(-3*x.^2-y.^2) + (x./2) + y
endfunction;
// Definindo o domnio retangular para a func~ao
u = linspace(-1,2,30);
v = linspace(-2,3,50);
// Determinando os valores da func~ao
z = feval(u,v,f);
// Numero de curvas de nvel
ncn = 10
// Plotando as curvas na superfcie (x, y, f(x,y))
contour(u,v,z,ncn,flag=[0 2 4]);
Captulo 5 - Fun coes de Varias Vari aveis 121
// Observac~oes:
// flag = [ modo type box]
// mode 0 - as curvas de nvel s~ao plotadas na func~ao
// mode 1 -
// mode 2 - as curvas de nvel n~ao s~ao representadas na fun c~ao
// type -
// box 1 - n~ao mostra os eixos cartesianos
// box 2 - mostra os eixos sem os nomes
// box 3 - mostra a caixa sem a regua
// box 4 - normal
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 122
-2
-1.0
-0.5
-1
-1.7
0.0
0.5
3.0
X
2.5
0
2.0 1.0
1.5
1.0
-0.95
0.5 1.5
0.0
-0.5 Y
1
-0.17
-1.0 2.0
-1.5
-2.0
0.6
Z
2
1.4
2.2
2.2
3
2.9
2.9
4
3.7
5
3.7
4.5
5.3
6
Figura 5.8: Curva de nvel de valor c no respectivo plano z=c.
5.2 Funcoes de tres variaveis
Fun coes de tres variaveis sao todas aquelas quantidades
escalares u cujo valor depende dos valores de outras tres
variaveis r, s e t, estas ultimas chamadas de variaveis in-
dependentes. A depedencia do valor de u com respeito a
estas tres variaveis e denotada por:
u = u(r, s, t)
Captulo 5 - Fun coes de Varias Vari aveis 123
Alguns exemplos concretos de fun coes de tres variaveis
sao:
Volume V de um paraleleppedo de lados L, H e b:
V = V (L, H, b) = LHb.
Temperatura, T, em uma sala de aula em um certo ins-
tante de tempo: T = T(x, y, z), onde (x, y, z) indicam
a localiza cao de um ponto da sala de aula.
O conjunto formado por todos as terna (r, s, t) para os
quais tem-se um valor para u, dene o domnio da fun cao,
Domu; e o conjunto formado por todos os valores que a
fun cao assume, chama-se imagem da fun cao, Imu. Ma-
tematicamente, o domnio e a imagem da fun cao de tres
variaveis sao representados, respectivamente, por:
Domu = {(r, s, t) R
3
/u existe}.
Imu = {u(r, s, t)/(r, s, t) Domu}.
O graco da fun cao e dado por
Gra u = {(r, s, t, u(r, s, t)) R
4
/(r, s, t) Domu}.
A determina cao do domnio de uma fun cao de tres variaveis
nem sempre e um problema trivial.

E importante lembrar o
graco de algumas superfcies quadricas, pois muitas vezes
o domnio da fun cao de tres variaveis pode estar relacio-
nado, de alguma forma, com estas superfcies.
A seguir apresentamos as equa coes de algumas das su-
perfcies quadricas.
A equa cao geral de uma elipsoide e:
x
2
a
2
+
y
2
b
2
+
z
2
c
2
= 1 (5.2)
Captulo 5 - Fun coes de Varias Vari aveis 124
A equa cao geral de uma paraboloide elptico e:
z
c
=
x
2
a
2
+
y
2
b
2
(5.3)
A equa cao geral de uma paraboloide hiperbolico e:
z
c
=
x
2
a
2

y
2
b
2
(5.4)
A equa cao geral de um cone e:
z
2
c
2
=
x
2
a
2
+
y
2
b
2
(5.5)
A equa cao geral de uma hiperboloide de uma folha e:
x
2
a
2
+
y
2
b
2

z
2
c
2
= 1 (5.6)
A equa cao geral de uma hiperboloide de duas folhas e:

x
2
a
2

y
2
b
2
+
z
2
c
2
= 1 (5.7)
Para esbo car algumas destas superfcies aplicamos os
seguintes passos: 1) isolamos a variavel z, caso seja ne-
cessario; 2) usamos coordenadas polares para representar
os domnios das fun coes geradas no passo 1.
Captulo 5 - Fun coes de Varias Vari aveis 125
Rotina (auxiliar) - elipsoide.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Salve esta rotina com o nome:
//elipsoide.sci
//Declarando a func~ao elipsoide
function [zs,zi]= elipsoide(a,b,c,x,y)
zi = -c*sqrt(-(x/a).^2 - (y/b).^2 +1)
zs = c*sqrt(-(x/a).^2 - (y/b).^2 +1)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina (auxiliar) - paramx.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve esta rotina com o nome:
//paramx.sci
// Func~ao que parametriza a coordenada x
function [X]=paramx(a,R,th1)
Captulo 5 - Fun coes de Varias Vari aveis 126
X = a*R.*cos(th1)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina (auxiliar) - paramy.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve esta rotina com o nome:
//paramy.sci
// Func~ao que parametriza a coordenada y
function [Y]=paramy(b,R,th2)
Y = b*R.*sin(th2)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 6 (principal) - elipsoide
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Rotina que usa as tr^es rotinas de acima
Captulo 5 - Fun coes de Varias Vari aveis 127
funcprot(0);
clc;
clf;
//Dados de entrada
input(Determine os valores de a, b e c para ...
tracar o elipsoide);
a = input("a = ");
b = input("b = ");
c = input("c = ");
//Criando vetores
dth = 2*%pi/30;
dr = (1-0)/30;
th = [0:dth:2*%pi];
R = [0:dr:1];
//Criando a grade
[RR,TH] = meshgrid(R,th);
//Ativando as func~oes
getf("paramx.sci");
getf("paramy.sci");
getf("elipsoide.sci");
Captulo 5 - Fun coes de Varias Vari aveis 128
//Avaliando os pontos na func~ao
x = paramx(a,RR,TH);
y = paramy(b,RR,TH);
[zi,zs] = elipsoide(a, b, c, x, y);
//Plotando
surf(x,y,zi);
surf(x,y,zs);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 129
-3
2.0
-2
1.5
1.0
-1
1.0
Z
0.5
0.8
0
0.6
0.0
0.4
Y
0.2
1
-0.5
0.0
-0.2
-1.0
2
X
-0.4
-1.5 -0.6
3
-0.8
-2.0 -1.0
Figura 5.9: Elipsoide a =1 , b =2 e c =3.
Captulo 5 - Fun coes de Varias Vari aveis 130
A seguinte rotina esboca a paraboloide.
Rotina (auxiliar) - parabelip.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve esta rotina com o nome:
//parabelip.sci
// Declarando da func~ao paraboloide elptico
function [z]= parabelip(a,b,c,x,y)
z = c*((x/a).^2 + (y/b).^2)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 7 (principal) - paraboloide elptico
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Rotina que esboca a paraboloide eliptico
clc;
clf;
//Paraboloide elptico
Captulo 5 - Fun coes de Varias Vari aveis 131
// Determinando a,b,n,dx,x:
funcprot(0);
x1 = input("x1 = ");
x2 = input("x2 = ");
n = input("n = ");
dx = (x2-x1)/n;
x = [x1:dx:x2];
size(x);
// Determinando c,d,m,dy,y:
y1 = input("y1 = ");
y2 = input("y2 = ");
m = input("m = ");
dy = (y2-y1)/m;
y = [y1:dy:y2];
size(y);
//Criando a grade
[X,Y] = meshgrid(x,y);
input(Determine os valores de a, b, c para ...
tracar o paraboloide);
a = input("a = ");
b = input("b = ");
c = input("c = ");
Captulo 5 - Fun coes de Varias Vari aveis 132
// Ativando a func~ao externa
getf("parabelip.sci");
//Avaliando os pontos na func~ao
z = parabelip(a,b,c,X,Y);
//Plotando
surf(x,y,z);
Captulo 5 - Fun coes de Varias Vari aveis 133
2.0 0
2.0
1
1.5
1.5
2
1.0
1.0
Z
3
0.5
0.5
4
0.0
0.0
5
X
-0.5 Y -0.5
6
-1.0
-1.0
-1.5 -1.5
-2.0 -2.0
Figura 5.10: Paraboloide elptico a =2 , b =3 e c =4. Domnio retangular
D = [-2, 2] [-2, 2].
Captulo 5 - Fun coes de Varias Vari aveis 134
A seguinte rotina esboca o paraboloide hiperbolico.
Rotina (auxiliar) - parabhip.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve esta rotina com o nome:
//parabhip.sci
// Func~ao paraboloide hiperbolico
function [z] = parabhip(a,b,c,x,y)
[z] = c*((x/a).^2 - (y/b).^2)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 8 (principal) - paraboloide hiperbolico
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Rotina principal para esbocar o Paraboloide hiperbolico
funcprot(0);
clc;
clf;
//Paraboloide hiperbolico
Captulo 5 - Fun coes de Varias Vari aveis 135
//Determinando a,b,n,dx,x:
x1 = input("x1 = ");
x2 = input("x2 = ");
n = input("n = ");
dx = (x2-x1)/n;
x = [x1:dx:x2];
size(x);
//Determinando c,d,m,dy,y:
y1 = input("y1 = ");
y2 = input("y2 = ");
m = input("m = ");
dy = (y2-y1)/m;
y = [y1:dy:y2];
size(y);
//Determinando a,b,c:
input(Determine os valores de a, b, c para ...
tracar o paraboloide);
a = input("a = ");
b = input("b = ");
c = input("c = ");
//Criando a grade
[X,Y] = meshgrid(x,y);
Captulo 5 - Fun coes de Varias Vari aveis 136
//Chamando a funcao
function [z] = parabhip(a,b,c,x,y)
[z] = c*((x/a).^2 - (y/b).^2)
endfunction;
//Avaliando os pontos na funcao
z = parabhip(a,b,c,X,Y);
//Plotando
surf(x,y,z);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 137
-2
2.0
-1
1.5
1.0
0
2.0
Z
0.5
1.5
1
1.0 0.0
Y
0.5
2
-0.5
0.0
-1.0 -0.5
3
X
-1.0
-1.5
-1.5
4
-2.0 -2.0
Figura 5.11: Paraboloide hiperb olico a =2 , b =3 e c =4. Domnio retangular
D = [-2, 2] [-2, 2].
Captulo 5 - Fun coes de Varias Vari aveis 138
As seguintes rotinas permitem a visualiza cao de um cone
Rotina (auxiliar) - cone.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve esta rotina com o nome:
//cone.sci
//Funcao cone
function [zi,zs]= cone(a,b,c,x,y)
zi = c*sqrt((x/a).^2 + (y/b).^2)
zs = -c*sqrt((x/a).^2 + (y/b).^2)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 9 (principal) - cone
//Rotina principal para plotar o cone
funcprot(0);
clc;
clf;
//Dados de entrada
Captulo 5 - Fun coes de Varias Vari aveis 139
input(Determine os valores de a, b e c para tracar o cone);
a = input("a = ");
b = input("b = ");
c = input("c = ");
//Criando vetores
dth = 2*%pi/30;
dr = (1-0)/30;
th = [0:dth:2*%pi];
R = [0:dr:1];
//Criando a grade
[RR,TH] = meshgrid(R,th);
//Chamando as funcoes
getf("paramx.sci");
getf("paramy.sci");
getf("cone.sci");
//Avaliando os pontos na func~ao
x = paramx(a,RR,TH);
y = paramy(b,RR,TH);
[zi,zs] = cone(a, b, c, x, y);
//Plotando
Captulo 5 - Fun coes de Varias Vari aveis 140
-6
4
-4
3
-2
Z
0
2
2.0
2
1 1.5
4
1.0 0
6
Y
0.5
-1
0.0
-2 -0.5 X
-1.0
-3
-1.5
-4 -2.0
Figura 5.12: Cone a=2, b=4, c=6.
surf(x,y,zi);
surf(x,y,zs);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 141
Para desenhar a hiperboloide de uma folha vamos usar
coordenadas polares para representar um domnio circular.
Rotina (auxiliar) - hipumafolha.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve esta rotina com o seguinte nome:
//hipumafolha.sci
function [zs,zi]= hipumafolha(a,b,c,x,y)
zi = -c*sqrt((x/a).^2 + (y/b).^2 -1)
zs = c*sqrt((x/a).^2 + (y/b).^2 -1)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 10 (principal) - hiperboloide de uma folha
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
// Rotina principal
funcprot(0);
clc;
clf;
Captulo 5 - Fun coes de Varias Vari aveis 142
//Dados de entrada
input(Determine os valores de a, b e c para ...
tracar o hiperboloide de uma folha);
a = input("a = ");
b = input("b = ");
c = input("c = ");
//Criando vetores
dth = 2*%pi/40;
dr = (30-1)/30;
th = [0:dth:2*%pi];
R = [1:dr:9];
//Criando a grade
[RR,TH] = meshgrid(R,th);
//Chamando as funcoes
getf("paramx.sci");
getf("paramy.sci");
getf("hipumafolha.sci");
// avaliando os pontos na func~ao
x = paramx(a,RR,TH);
y = paramy(b,RR,TH);
Captulo 5 - Fun coes de Varias Vari aveis 143
[zs,zi] = hipumafolha(a,b,c,x,y);
//Plotando
surf(x,y,zs);
surf(x,y,zi);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 144
-40
30
-30
-20
Z
-10
20
0
10
10
20
30
40
0 200
Y
150
100
-10
50
0
-20 -50
-100 X
-150
-30
-200
Figura 5.13: Hiperboloide de uma folha a =2 , b =3 e c =4.
Captulo 5 - Fun coes de Varias Vari aveis 145
As seguintes rotinas permitem o esboco do graco de
uma hiperboloide de duas folhas.
Rotina (auxiliar) - hipduasfolhas.sci
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Salve este com o nome:
//hipduasfolhas.sci
// Func~ao hiperboloide de duas folhas
function [zs,zi]= hipduasfolha(a,b,c,x,y)
zi = -c.*sqrt((x/a).^2 + (y/b).^2 +1)
zs = c.*sqrt((x/a).^2 + (y/b).^2 +1)
endfunction
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 11 (principal) - hiperboloide de duas folhas
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clf;
//Dados de entrada
Captulo 5 - Fun coes de Varias Vari aveis 146
input(Determine os valores de a, b e c para ...
tracar o hiperboloide de duas folhas);
a = input("a = ");
b = input("b = ");
c = input("c = ");
//Criando vetores
dth = 2*%pi/40;
dr = (30-1)/30;
th = [0:dth:2*%pi];
R = [1:dr:10];
//Criando a grade
[RR,TH] = meshgrid(R,th);
//Chamando as func~oes
getf("paramx.sci");
getf("paramy.sci");
getf("hipduasfolha.sci");
// avaliando os pontos na func~ao
x = paramx(a,RR,TH);
y = paramy(b,RR,TH);
[zs,zi] = hipduasfolha(a,b,c,x,y);
Captulo 5 - Fun coes de Varias Vari aveis 147
//Plotando
surf(x,y,zs);
surf(x,y,zi);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 148
30
20
10
0 Y
-50
-40
-20
-10
-15
-30
-10
-20
-5
-10
Z
-20 0
0
5
10
10
20
X
15 -30
30
20
40
50
Figura 5.14: Hiperboloide de duas folhas a =2 , b =3 e c =4.
Vamos determinar o domnio da seguinte fun cao de tres
variaveis:
w = f(x, y, z) =
2

1 x
2

y
2
4

z
2
9
O domnio dessa fun cao e o conjunto
Domf = {(x, y, z) R
3
/x
2
+
y
2
4
+
z
2
9
1}
Como pode ser visto, o conjunto anterior e formado pelo
interior de uma elipsoide com a = 1, b = 2 e c = 3. Da
Captulo 5 - Fun coes de Varias Vari aveis 149
percebe-se a importancia do conhecimento das superfcies
quadricas.
5.2.1 Superfcies de nvel
O conjunto de pontos (x, y, z) Domf, onde a fun cao
possui um valor constante c e denominado superfcie de
nvel de valor c da fun cao f. Matematicamente, a superfcie
de nvel de valor c e representada por:
S
c
= {(x, y, z) Domf/f(x, y, z) = c}
Uma fun cao pode possuir innitas superfcies de nvel,
sempre e quando a fun cao possuir innitos valores. O
esbo co destas superfcies de nivel se da em R
3
.
Exemplo: Determinar algumas superfcies de nvel da fun cao:
w = f(x, y, z) =

25 +
x
2
4
+
y
2
9
+
z
2
25
A equa cao geral das diferentes superfcies de nvel dessa
fun cao sao dadas pela equa cao:
c
2
25 =
x
2
4
+
y
2
9
+
z
2
25
,
com c no intervalo [5, ]. As superfcies de nvel serao
elipsoides com valores de a =

4(c
2
25), b =

9(c
2
25)
e c =

25(c
2
25).
5.3 Diferenciabilidade de fun coes
O conceito de diferenciabilidade para fun coes de varias variaveis
e muito mais complexo que para fun coes reais. Este conceito
Captulo 5 - Fun coes de Varias Vari aveis 150
-20
10
-15
8
-10
6
4
-5
8
Z
2 6
0
4 0
Y
5
2
-2
0
10
-4 X
-2
-6
15
-4
-8
-6
20
-10 -8
(a) c=6
-40
20
-30
15
-20
10
-10
15
Z
5
10
0
0
5 Y
10
-5
0
20
-10 X
-5
30
-15
-10
40
-20 -15
(b) c=8
-50
30
-40
-30
20
-20
20 10
-10
Z
15
0
10 0
10
Y
5
20
0 -10
30
-5 X
40
-20 -10
-15
50
-30 -20
(c) c=10
Figura 5.15: Superfcies de nvel da fun cao f(x, y, z) =

25 +
x
2
4
+
y
2
9
+
z
2
25
para c=6, 8 e 10.
Captulo 5 - Fun coes de Varias Vari aveis 151
esta relacionado com a varia cao da fun cao nas diferentes
dire coes do plano. Duas destas dire coes, a dos eixos de co-
ordenadas x e y, serao essenciais para a determina cao da
diferenciabilidade de uma fun cao de duas variaveise, e as
dire coes x, y e z. para a determina cao da diferenciabilidade
de fun coes de tres variaveis.
5.3.1 Derivadas direcional e parcial
Uma forma de medir a taxa de varia cao de uma fun cao f(x)
de varias variaveis em uma vizinhan ca de um ponto x
0
do
seu domnio, seria considerar a restri cao da fun cao a uma
dire cao determinada, digamos v. Entenda-se por restri cao
na dire cao v, a observa cao dos valores que a fun cao ira obter
nos pontos da reta que passa pelo ponto x
0
e que tem por
dire cao o vetor v. Estudar esse comportamento equivale a
estudar o comportamento da curva que passa pelo ponto
( x
0
, f( x
0
)), produto da intersec cao do plano perpendicular
ao plano xy com o graco da fun cao. Ilustrado na Figura
abaixo para o caso de uma fun cao de duas variaveis:
No caso particular da dire cao dos eixos x ou y, o dito
acima signica xar a variavel y, y = y
0
, para restringir a
fun cao `a dire cao x, obtendo assim uma fun cao de variavel
x. E xar x, x = x
0
, para restringir a fun cao na dire cao
x. Gracamente, signica analisar o comportamento das
curvas geradas no graco da fun cao, pelos pontos (x, y =
y
0
) e (x = x
0
, y), para analizar depois a varia cao da fun cao
nas dire coes, x e y, respectivamente. A guras (1) e (2)
mostram as curvas de analise. Todas esses gracos foram
obtidos usando-se as rotinas indicadas abaixo.
Captulo 5 - Fun coes de Varias Vari aveis 152
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
Y X 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(a)
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
Y X 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(b)
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
Y X 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(c)
Figura 5.16: Estudo do comportamento dos valores de uma fun cao z=f(x,y)
na direc cao (u1,u2).
Captulo 5 - Fun coes de Varias Vari aveis 153
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
X Y 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(a)
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
X Y 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(b)
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
X Y 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(c)
Figura 5.17: Estudo do comportamento dos valores de uma fun cao z=f(x,y)
na reta x=x0.
Captulo 5 - Fun coes de Varias Vari aveis 154
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
X Y 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(a)
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
X Y 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(b)
0.0
0.5 0.5
0.6 0.6
0.7 0.7
0.8 0.8
0.9 0.9
1.0 1.0
X Y 1.1 1.1
1.2 1.2
1.3 1.3
1.4 1.4
0.5
1.5 1.5
1.0
Z
1.5
2.0
2.5
(c)
Figura 5.18: Estudo do comportamento dos valores de uma fun cao z=f(x,y)
na reta x=y0.
Captulo 5 - Fun coes de Varias Vari aveis 155
5.3.2 Aproximacao linear para funcoes diferenciaveis
Quando as fun coes de varias variaveis sao diferenciaveis,entao
existem existem expressoes simples (fun coes lineares) que
permitem estimar aproximadamente o valor da fun cao en-
torno de um ponto do domnio. Estas expressoes simples
sao chamadas de aproxima coes lineares da fun cao. Para
a fun cao z = f(x, y) de duas variaveis e z = g(x, y, z) de
tres variaveis as fun coes lineares que as aproximam sao,
respectivamente
z(x, y) = f(z
0
) +
f
x
(z
0
)(x x
0
) +
f
y
(z
0
)(y y
0
), (5.8)
w(x, y, z) = f( w
0
)+
f
x
( w
0
)(xx
0
)+
f
y
( w
0
)(yy
0
)+
f
z
( w
0
)(zz
0
),
(5.9)
onde z
0
= (x
0
, y
0
) e w
0
= (x
0
, y
0
, z
0
).
Observe que a equa cao denida pela Eq. (5.8) e nada
menos que a equa cao de um plano que passa pelo ponto
(x
0
, y
0
, z
0
), onde z
0
= f(x
0
, y
0
). Este plano e conhecido
como plano tangente ao graco da fun cao z = f(x, y) no
ponto (x
0
, y
0
, z
0
).
A Figura abaixo mostra que a fun cao dada pela Eq.
(5.8), aproxima cao linear da fun cao z = f(x, y) em torno do
ponto (x
0
, y
0
), efetivamente tem em comum um unico ponto
com o graco da fun cao. Tambem pode-se observar que
quanto menor for a regiao do em torno de (x
0
, y
0
), entao os
valores fornecidos pela fun cao linear serao mais proximos do
real, como mostrado nas guras 5.19(a), 5.19(b) e 5.19(c).
Captulo 5 - Fun coes de Varias Vari aveis 156
X Y
-3 -2 -1 0 6 1 5 2 4 3 3 2 1 4 0 5 -1 -2 6 -3 7 -4
-500
-400
-300
-200
Z
-100
0
100
200
(a)
X Y
-3 -2 -1 0 6 1 5 4 2 3 3 2 1 4 0 5 -1 -2 6 -3 7 -4
-500
-400
-300
Z -200
-100
0
100
(b)
X
Y
-3 -2
-1 0 6 1 5 2 4 3 3 2 1 4 0 5 -1 -2 6 -3 -4 7
-450
-400
-350
-300
-250
Z
-200
-150
-100
-50
0
50
(c)
Figura 5.19: Aproxima cao linear da fun cao z = 1 5 (x.
2
+ y.
2
) em torno
do ponto (2,1)
Captulo 5 - Fun coes de Varias Vari aveis 157
Para obter o graco da fun cao e do plano tangente em
torno um ponto generico (x
0
, y
0
), utilizou-se a seguinte ro-
tina:
Captulo 5 - Fun coes de Varias Vari aveis 158
Rotina 12 - plano tangente
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clear;
clf;
x0 = input(Informe e valor de x0- );
y0 = input(Informe e valor de y0- );
//Dominio do plano em funcao de (x0,y0)
dp = 1.5
x1p = (x0 - dp);
x2p = (x0 + dp);
y1p = (y0 - dp);
y2p = (y0 + dp);
dxp = (x2p - x1p)/20;
dyp = (y2p - y1p)/20;
xp = [x1p:dxp:x2p];
yp = [y1p:dyp:y2p];
//Dominio da superficie em funcao de (x0,y0)
ds = 5
x1s = (x0 - ds);
x2s = (x0 + ds);
y1s = (y0 - ds);
Captulo 5 - Fun coes de Varias Vari aveis 159
y2s = (y0 + ds);
dxs = (x2s - x1s)/10;
dys = (y2s - y1s)/10;
xs = [x1s:dxs:x2s];
ys = [y1s:dys:y2s];
//Definindo a funcao da superficie
deff([z]=f1(x,y),z = 1 - 5*(x.^2 +y.^2));
z1 = eval3d(f1,xs,ys);
size(z1)
plot3d(xs,ys,z1);
//Definindo a funcao do plano
deff([fx]=f2(x,y),fx = -10.*x);
z2 = eval3d(f2,xp,yp);
deff([fy]=f3(x,y),fy = -10.*y);
z3 = eval3d(f3,xp,yp);
z0 = f1(x0,y0);
a = f2(x0,y0);
b = f3(x0,y0);
deff([pt]=ft(x,y),pt = z0 + a.*(x - x0) + b.*(y - y0));
pt = eval3d(ft,xp,yp)
size(pt)
plot3d1(xp,yp,pt);
Captulo 5 - Fun coes de Varias Vari aveis 160
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Captulo 5 - Fun coes de Varias Vari aveis 161
5.3.3 Propriedades geometricas do gradiente
O gradiente de uma fun cao diferenciavel f de n variaveis,
isto e, f = f(x
1
, x
2
, x
3
, . . . , x
n
), e denido como se segue:
f = (
f
x
1
,
f
x
2
, . . . , ,
f
x
n
)
No caso de fun cao de duas e tres variaveis, f = f(x, y)
e g = g(x, y, z), respectivamente, a expressao do gradiente
ca:
f (x, y) = (
f
x
,
f
y
)
g (x, y, z) = (
f
x
,
f
y
,
f
z
)
Existe uma propriedade geometrica que relaciona as cur-
vas de nvel e o gradiente de fun coes de duas variaveis, e
as superfcies de nivel com o gradiente de fun coes de tres
variaveis.
Propriedade 5.3.1 Seja f uma funcao de duas variaveis
diferenciavel e C
c
a curva de nivel de valor c da funcao
f que passa pelo ponto (x
0
, y
0
). Suponhamos que a pa-
rametriza cao dessa curva de nvel seja dada por r(t) =
(x(t), y(t), entao:
f r

(t) = 0,
onde r

(t) = (x

(t), y

(t)) e o vetor tangente `a curva de nvel


C
c
no ponto r(t).
Propriedade 5.3.2 Sejam f uma funcao de tres variaveis
diferenciavel e S
c
a superfcie de nivel de f de valor c que
Captulo 5 - Fun coes de Varias Vari aveis 162
passa pelo ponto (x
0
, y
0
, z
0
),entao o vetor gradiente f(x, y, z)
no ponto (x, y, z) da superfcie de nvel e ortogonal a tal su-
perfcie de nvel.
Para visualizar as propriedades mencionadas acima, va-
mos considerar as seguintes fun coes diferenciaveis e de-
terminar, respectivamente, algumas curvas de nvel e su-
perfcies de nvel e observar que tais propriedades sao ver-
dadeiras.
Captulo 5 - Fun coes de Varias Vari aveis 163
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Aqui vai a rotina que gera as curvas de nveis e
os vetores gradientes
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Rotina 13 - curvas de nveis e vetores gradientes
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clear;
clc;
clf;
// Definindo a func~ao
function z=paraboloide(x,y)
z = x^2+y^2
endfunction
// Dados de entrada
xa=input("Entre com o valor inicial do domnio de x: ");
xb=input("Entre com o valor final do domnio de x: ");
ya=input("Entre com o valor inicial do domnio de y: ");
yb=input("Entre com o valor final do domnio de y: ");
// Criando o domnio
c=10; // numero de partic~oes em x e y
Captulo 5 - Fun coes de Varias Vari aveis 164
x=linspace(xa,xb,c);
y=linspace(ya,yb,c);
// Obtendo dados do domnio
[xl xc]=size(x);
[yl yc]=size(y);
z=ones(xc,yc);
// Gerando a Imagem
for i=1:xc
for j=1:xc
z(i,j)=paraboloide(x(i),y(j));
end
end
// Plotando a superfcie
xset("color",33)
// subplot(1,2,1)
plot3d(x,y,z,flag=[-33 2 4])
// Plotando os vetores gradientes
for j=1:yc
k=j;
for i=1:xc
Captulo 5 - Fun coes de Varias Vari aveis 165
// vetor gradiente
x0=[x(i) x(i)+2*x(i)];
y0=[y(k) y(k)+2*y(k)];
z0=[paraboloide(x(i),y(k)) paraboloide(x(i),y(k))-1];
// vetor gradiente unitario
norma=sqrt( (x0(2)-x0(1))^2 + (y0(2)-y0(1))^2 + (z0(2)-z0(1))^2
x0=[x0(1) x0(1)+(x0(2)-x0(1))./norma];
y0=[y0(1) y0(1)+(y0(2)-y0(1))./norma];
z0=[z0(1) z0(1)+(z0(2)-z0(1))./norma];
// plotando o vetor
param3d1(x0,y0,z0)
p=get("hdl");
p.mark_mode="on";
p.polyline_style=4;
end
end
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
A seguinte gura mostra a superfcie de nvel de valor
c = 0 da fun cao f(x, y, z) = x
2
+ y
2
z e o respectivo
vetor gradiente unitario, f(x, y, z) = (2x, 2y, 1) em cada
ponto desta superfcie de nvel
Captulo 5 - Fun coes de Varias Vari aveis 166
-1.0
-2.0 -2.0
-1.5 -1.5
-0.5
-1.0 -1.0
-0.5 -0.5
0.0
0.0 0.0
X Y
Z
0.5 0.5
0.5
1.0 1.0
1.5 1.5
1.0
2.0 2.0
1.5
2.0
(a)
-1.0
-2.0
-0.5
-1.5
0.0
Z
0.5
-1.0
1.0
-0.5
1.5
0.0
X
2.0
0.5
1.0
2.0
1.5
1.0
1.5
0.5
0.0
-0.5
-1.0
2.0
Y -1.5
-2.0
(b)
Figura 5.20: Duas vistas da superfcie de nvel de valor c=0 da fun cao
f(x, y, z) = x
2
+ y
2
z e do vetor gradiente unit ario desta superfcie.
Captulo 6
Apendice A
6.1 Plot2d
Plot2d e um comando utilizado quando se deseja esbo car
gracos em duas dimensoes. O comando desve ser usado
da seguinte forma:
plot2d(x,y)
ou
plot2d(x,y,argumento opcional),
sendo x e y matrizes reais ou vetores, e o argumento op-
cional um dos comandos: style, rect, logag, axesag,
nax, leg - que tem por nalidade customizar os gracos.
Observacoes:
-Se x e y sao vetores, plot2d(x,y,argumento opcional)
plota um vetor y versus um vetor x, e os vetores devem ter
o mesmo n umero de entradas (Veja 6.1).
-Se x e um vetor e y e uma matriz, plot2d(x,y,argumento
opcional) plota cada coluna de y versus o vetor x. Nesse
167
Apendice A - Comandos Plot2D 168
caso, o n umero de colunas de y deve ser equivalente ao
n umero de entradas de x (Veja 6.1).
-Se x e y sao matrizes, plot2d(x,y,argumento opcional)
plota cada coluna de y versus cada coluna correspondente
de x. Nesse caso, as matrizes devem possuir o mesmo ta-
manho (Veja 6.1).
-Se y e um vetor, plot2d(x,y,argumento opcional) plota
o vetor y versus o vetor 1:size(y,*) (Veja 6.1).
-Se y e uma matriz, plot2d(x,y,argumento opcional) plota
cada coluna de y versus o vetor 1:size(y,1) (Veja 6.1).
-Pode-se plotar tambem fun coes pre-denidas (Veja 6.1).
Figura 6.1: Plot2d com x=[-1,2,3,4] e y=[1,4,9,16]
Apendice A - Comandos Plot2D 169
Figura 6.2: Plot2d com x=[1,5,7] e y=[3. 4; 1. 14; 9. 1]
Figura 6.3: Plot2d com x=[-1. 2.; 3,4. 1,2. ;5. 7.] e y=[-3. 4.; 3,7. 9,2. ;9.
1.]
Apendice A - Comandos Plot2D 170
Figura 6.4: Plot2d com y=[3, 1, 9]
Figura 6.5: Plot2d com y=[1. 2. 9]
Apendice A - Comandos Plot2D 171
Figura 6.6: Plot2d de y = x
2
com x [10, 10]
6.2 Plot2d1
O comando plot2d1 tem por nalidade plotar gracos em
escala logartmica, sendo usado da seguinte forma:
plot2d1(str,x,y,[style,strf,leg,rect,nax]).
Parametros: Str e um comando que possui tres letras,
abc.
Em a, utiliza-se as letras e, o ou g, sendo que:
e signica empty e especica o fato de que o valor de
x nao e utilizado - mesmo assim, o usuario devera en-
trar um n umero para x, por exemplo, plot2d1(enn,1,y)
(Veja 6.2).
o signica one - se ha varias curvas, todas tem os
mesmos valores de x; x e um vetor coluna de tamanho
nl e y e uma matriz de tamanho (nl,nc) (Veja 6.2).
Apendice A - Comandos Plot2D 172
g signica general- x e y devem ter o mesmo ta-
manho (nc,nl) e cada coluna de y e plotada `a cada
coluna correspondente de x, e assim nc curvas sao plo-
tadas usando nl pontos (Veja 6.2
Figura 6.7: Plot2d1 - enn. Fun coes sen(x), sen(2x) e sen(3x)
b e c correspondem a n (normal) ou l (logartmico),
assim, se b = l uma escala logarttmica sera usada nas
abscissas, e se c = l, uma escala logartmica sera usada
nas ordenadas (Veja 6.2).
6.3 Plot2d2
O comando plot2d2 plota fun coes no formato de esca-
das, ou seja, ha pequenos intervalos constantes, tanto em
x como em y. Esse comando pode ser utilizado como:
plot2d2([x],y,argumento opcional)
Apendice A - Comandos Plot2D 173
Figura 6.8: Plot2d1 - onn. Fun cao y = x
2
no intervalo [-6,6]
Figura 6.9: Plot2d1 - gnn. x e y s ao matrizes pre-determinadas
Apendice A - Comandos Plot2D 174
Figura 6.10: Plot2d1 - oll das fun coes exp(x), exp(x
2
), exp(x
3
) com x
[0.1, 3]
Apendice A - Comandos Plot2D 175
(Veja 6.11(a)).
6.4 Plot2d3
Plot2d3 e um comando que plota as curvas em formato
de barras verticais. Esse comando pode ser utilizado como
plot2d3(x,y,argumento opcional)
(Veja 6.11(b)).
6.5 Plot2d4
O comando plot2d4 plota curvas com setas ao longo de
seus comprimentos. Esse comando pode ser utilizado como
plot2d4(x,y,argumento opcional)
(Veja 6.11(c)).
6.6 fplot2d
O comando fplot2d plota gracos bidimensionais deni-
dos por uma fun cao f, da seguinte maneira:
fplot2d(xr,f,(argumento opicional)
(Veja 6.6).
Sendo:
xr - um vetor f - o nome da fun cao (y = f(x))
Apendice A - Comandos Plot2D 176
(a) Plot2d2
(b) Plot2d3
1.0
6 5 4 3 2 1 0 7
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.8
-1.0
(c) Plot2d4
Figura 6.11: Gracos das fun coes sen(x), sen(2x) e sen(3x) no intervalo
[0, 2] utilizando os diferentes tipos de plot2d.
Apendice A - Comandos Plot2D 177
Figura 6.12: Graco da fun cao y=2sin(3t) no intervalo [0, 16]
6.7 Argumentos adicionais associados ao plot2d
A seguir, tem-se a descri cao de alguns parametros que
sao amplamente usados em
plot2d(x, y, style, rect, logag, axesag, nax, leg).
Apendice A - Comandos Plot2D 178
STYLE
O comando style dene o padrao da curva que esta sendo
tra cada e e utilizado como style = (n umero inteiro - po-
sitivo ou negativo). Para valores negativos, a curva e
tra cada com marcadores, nao sendo, portanto, contnua.
Para valores positivos, a curva e contnua, e alem disso,
cada valor esta associado com uma cor diferente (Veja 6.13(a),
6.13(b), 6.13(c)).
Algumas sadas gracas associadas aos valores de style
-4 Marcadores sao quadradinhos
-3 Marcadores sao crculos com uma cruz em seu interior
-2 Marcadores sao x
-1 Marcadores sao cruzes
0 Marcadores sao pontilhados
1 Graco contnuo preto
2 Graco contnuo azul escuro
3 Graco contnuo verde claro
4 Graco contnuo azul claro
AXESFLAG
O comando axesag especica como os eixos cartesianos
serao tra cados. Os valores associados a esse comando sao
inteiros que variam de 0 a 5 (Veja 6.14(a), 6.14(b), 6.15(a),
6.15(b)).
Apendice A - Comandos Plot2D 179
(a) style = -4
(b) style = -3
(c) style = 3
Figura 6.13: Diferentes resultados usando o comando adicional style em
plot2d
Apendice A - Comandos Plot2D 180
Sadas gracas associadas aos valores de axesag
0 Os eixos cartesianos n ao sao tra cados
1 S ao tra cados uma linha horizontal e outra vertical, fechando o graco em um ret angulo
2 Um ret angulo e tra cado e os valores dos eixos cartesianos n ao sao mostrados
3 Muda-se a posi c ao do eixo Oy
4 Centraliza os eixos cartesianos
5 Centraliza os eixos cartesianos e desenha um ret angulo em torno do graco
LEG
O comando leg e um stringde caracteres que adicio-
nada uma legenda para cada graco tra cado (ex: leg=Funcao
1). No entanto, nao e um comando muito exvel, por-
tanto, recomenda-se utilizar os comandos legendou cap-
tions(Veja 6.7).
LEGEND
O comando legend adiciona legendas ao graco (Veja
6.7). Utiliza-se o comando da seguinte forma: hl=legend([h,]
string1,string2, ... [,pos] [,boxed]) ou hl=legend([h,] strings
[,pos] [,boxed]), e assim:
h: e um valor graco relacionado aos eixos ou um vetor
de valores relacionado com uma entrada de polilinhas.
string1,string2 ou strings: sao caracteres stringno
qual se especica a legenda de cada curva.
pos: especica onde a caixa da legenda deve ser adicio-
nada. Os valores relacionados a esse comando variam de -6
a -1 e de 1 a 5.
boxes: e um booleanque especica a entrada, ou nao,
da caixa que delimita a legenda.
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Apendice A - Comandos Plot2D 181
(a) axesag = 0
(b) axesag = 1
Figura 6.14: Diferentes resultados usando o comando adicional axesag em
plot2d
Apendice A - Comandos Plot2D 182
(a) axesag = 3
(b) axesag = 5
Figura 6.15: Diferentes resultados usando o comando adicional axesag em
plot2d
Apendice A - Comandos Plot2D 183
Figura 6.16: Resultado obtido usando o comando adicional leg em plot2d
clc;
clf;
t=[0:0.1:%pi];
plot2d(t,[cos(t),cos(2*t),cos(3*t)]);
hl=legend([cos(t);cos(2*t);cos(3*t)]);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Apendice A - Comandos Plot2D 184
Figura 6.17: Resultado obtido usando o comando legend em plot2d
Apendice A - Comandos Plot2D 185
6.8 Resumo - comandos plot2d
plot2d Plota o graco em duas dimesoes.
plot2d1

E o mesmo que plot2d mas permite escala logartmica.
plot2d2

E o mesmo que plot2d mas plota em degraus.
plot2d3

E o mesmo que plot2d mas e plotado em formas de barras verticais.
plot2d4

E o mesmo que plot2d mas e plotado usando echas.
Captulo 7
Apendice B
7.1 Plot3d
Plota supercie 3D.

E usado na forma
plot3d(x,y,z,argumento opicional)
ou
plot3d(xf,yf,list(zf,colors),argumento opicional),
sendo que:
x,y: vetores linhas de tamanhos n1 e n2 (coordenadas
dos eixos x e y). Estas coordenadas devem ser monotonas.
z: matriz de tamanho (n1,n2). z(i,j) e o valor da su-
perfcie no ponto (x(i),y(j)).
xf,yf,zf: matrizes de tamanho (nf,n). Elas denem as
facetas usadas para desenhar a superfcie. Ha n facetas.
Cada faceta i e denida por um polgono com nf pontos.
As coordenadas dos eixos x, y e z dos pontos da i-esima
faceta sao dados respectivamente por xf(:,i), yf(:,i) e zf(:,i).
186
Apendice B - Comandos Plot3D 187
colors: um vetor de tamanho n fornecendo as cores de
cada faceta ou uma matriz de tamanho (nf,n) fornecendo
a cor proxima a cada borda da faceta (a cor da faceta e
interpolada).
OBS: a fun cao juntamente com o intervalo em que esta
denida serao usados nos exemplos abaixo (argumentos opi-
cionais, plot3d1, fplot, fplot3d1). Exemplo com uma fun c ao
na forma plot3d(x,y,z) (Veja 7.1(a)):
Rotina 1
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clear;
clf;
funcprot(0);
// Intervalo de plotagem da funcao em x
a = -2;
b = 2;
n = 30;
dx = (b-a)/n;
x=[a:dx:b]; /vetor (1xn1)
// Intervalo de plotagem da funcao em y
c = -3;
Apendice B - Comandos Plot3D 188
d = 3;
m = 40;
dy = (d-c)/m;
y = [c:dy:d]; /vetor(1xn2)
function [z]=func(x,y)
z= x.^3 - 3.*y.^2 - 20
endfunction;
z=eval3d(func,x,y); // avalia os pontos na func~ao criando o vetor
plot3d(x,y,z);
size(x)
ans =
1. 31.
size(y)
ans =
1. 41.
size(z)
ans =
Apendice B - Comandos Plot3D 189
31. 41.
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Perceba que o vetor x possui (1xn1), o vetor y (1xn2)
e o vetor z (n1,n2) como mostra a deni cao. Portanto,
nao e necessario existir uma fun cao para avaliar os pontos
desejados desde que x,y e z respeitem essas regras, como
mostrado no exemplo a seguir.
OBS: o exemplo a seguir tambem sera usado em plot3d1.
Exemplo sem fun cao na forma plot3d(x,y,z) (veja 7.1(b)):
Rotina 2
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clear;
clf;
x = [ 1 3 5 7] // vetor 1x4
y = [2 4] // vetor 1x2
//portanto a matriz z devera ser (4x2)
z = [ 10 4; 19 3; 6 4; 10 2]
plot3d(x,y,z);
-->size(x)
ans =
Apendice B - Comandos Plot3D 190
1. 4.
-->size(y)
ans =
1. 2.
-->size(z)
ans =
4. 2.
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
7.2 Argumentos opicionais relacionados ao plot3d
plot3d(x,y,z,theta,alpha,leg,ag,ebox)
theta, alpha: Valores reais dados em graus do ponto
desejado para a visualiza cao (veja 7.2(a)).
leg: string denindo os rotulos para cada eixo com @
como um separador de campos, por exemplo A@B@C(veja
7.2(b)).
ag: um vetor real na forma ag=[mode,type,box].
mode: um inteiro que dene a cor da superfcie.
-mode > 0:
Apendice B - Comandos Plot3D 191
-55
2
1
0 X
-3
-2
-1 -1
0
1
Y
2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(a) plot3d usando funcao
2
2
1
2
3
3 Y
4
5
X
6
4
7
4
6
8
10
Z
12
14
16
18
20
(b) plot3d sem usar funcao
Figura 7.1:
Apendice B - Comandos Plot3D 192
-2
-1
0 X
-55 1
-3
-2
-1
0 2 1
2
3
Y
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(a) plot3d(x,y,z, theta = 10, alpha = 30)
-55
2
1
0 A
-3
-2
-1 -1
0
1
B 2 -2
3
-50
-45
-40
-35
C
-30
-25
-20
-15
-10
(b) plot3d(x,y,z,leg = A@B@C@)
Figura 7.2: Utilidades dos argumentos opcionais
Apendice B - Comandos Plot3D 193
A superfcie e pintada com a cor modee desenhada
com linhas (veja 7.3(a)).
-mode=0:
uma malha da superfcie e desenhada (veja 7.3(b)).
-mode < 0:
a superfcie e pintada com a cor -modee as linhas nao
sao desenhadas (veja 7.3(c)).
type: um inteiro que dene o tipo de escala.
-type=0:
O esbo co e feito utilizando-se a escala 3d corrente (de-
nida por uma chamada anterior a param3d, plot3d, contour
ou plot3d1).
-type=1:
Re-escala automaticamente caixas 3d com rel cao de as-
pecto extrema, as fronteiras sao especicadas pelo valor do
argumento opcional ebox.
-type=2:
Re-escala automaticamente caixas 3d com rel cao de as-
pecto extrema, as fronteiras sao computadas utilizando-se
dados fornecidos.
-type=3:
Fronteiras 3d isometricas com fronteiras da caixa dadas
por ebox, de modo semelhante a type=1.
-type=4:
Fronteiras 3d isometricas derivadas dos dados, de modo
semelhante a type=2 (veja 7.2).
Apendice B - Comandos Plot3D 194
-55
2
1
0 X
-3
-2
-1 -1
0
1 Y 2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(a) mode = 15
-55
2
1
0 X
-3
-2
-1 -1
0
1 Y 2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(b) mode = 0
-55
2
1
0 X
-3
-2
-1 -1
0
1 Y 2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(c) mode=-15
Figura 7.3: plot3d(x,y,z,ag = [mode,2,4])
Apendice B - Comandos Plot3D 195
-type=5:
Fronteiras 3d isometricas expandidas com fronteiras for-
necidas por ebox, de modo semelhante a type=1.
-type=6:
Fronteiras 3d isometricas expandidas derivadas dos da-
dos, de modo semelhante a type=2.
]
(a)
plot3d(x,y,z,ag
=[9,4,4
-55
2
1
0
X
-3
-2
-1
-1
0
1 -2
2
3 Y
-50
-45
-40
-35
Z-30
-25
-20
-15
-10
Figura 7.4: Utilidades dos argumentos opcionais
box: um inteiro que dene o tipo de moldura ao redor
do graco.
-box=0 ou box=1:
Nada e desenhado ao redor do graco (veja 7.5(a)).
-box=2:
Apenas os eixos atras da superfcie sao desenhados (veja
7.5(b)).
Apendice B - Comandos Plot3D 196
-box=3:
Uma caixa cercando a superfcie e desenhada e legendas
sao adicionadas (veja 7.5(c)).
-box=4:
Uma caixa cercando a superfcie e desenhada e legendas
e eixos sao adicionados (veja 7.5(d)).
ebox: especica as fronteiras do esbo co atraves do ve-
tor [xmin,xmax,ymin,ymax,zmin,zmax]. Este argumento e
utilizado junto com type em ag, se este for ajustado para
1, 3 ou 5 (volte acima para ver o comportamento corres-
pondente). Se ag estiver faltando, ebox nao e levado em
conta.
7.3 Plot3d1
Esbo ca uma superfcie com cores dependendo do nvel z
da superfcie.

E usado na forma
plot3d1(x,y,z,argumento opicional)
ou
plot3d1(xf,yf,zf,argumento opcional).
Os argumentos opicionais sao usados como o plot3d. Da
mesma forma que o plot3d, o plot3d1 pode ser usado ava-
liando os valores em uma fun cao, ou indicando diretamente
matrizes, desde que as condi coes sejam satisfeitas (veja
7.6(a) e 7.6(b)).
Apendice B - Comandos Plot3D 197
(a) box = 0
(b) box = 2
X
Y
Z
(c) box = 3
-55
2
1
0 X
-3 -2 -1 -1 0 1 Y 2 -2 3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(d) box = 4
Figura 7.5: plot3d(x,y,z,ag = [9,2,box]
Apendice B - Comandos Plot3D 198
-55
2
1
0 X
-3
-2
-1 -1
0
1
Y 2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(a) plot3d1 com funcao
2
2 1
2
3
3 Y
4
X
5
6
4
7
4
6
8
10
Z
12
14
16
18
20
(b) plot3d1 sem usar funcao
Figura 7.6:
Apendice B - Comandos Plot3D 199
7.4 Plot3d2
Esbo ca uma superfcie denida por facetas retangulares.
(X,Y,Z) sao tres matrizes que descrevem uma superfcie. A
superfcie e composta de polgonos de quatro lados (veja
7.7(a)).

E usado na forma:
plot3d2(X,Y,Z,[vect,theta,alpha,leg,ag,ebox]).
Vect: vetor de reais
Os demais argumentos opicionais usa-se como o plot3d.
OBS: o exemplo a seguir tambem sera usado em plot3d3.
Rotina 3
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clear;
clf;
X = [1 2 3; 6 5 4]
Y = [ 7 8 9; 12 11 10]
Z = [15 14 13; 16 17 118]
plot3d2(X,Y,Z)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Apendice B - Comandos Plot3D 200
0
7
8
9 Y
10
11
1.0 1.5 2.0 2.5 3.0 12 3.5 4.0 4.5 5.0 5.5 6.0
X
20
40
Z
60
80
100
120
(a) plot3d2(X,Y,Z)
0
7
8
9 Y
10
11
1.0 1.5 2.0 2.5 12 3.0 3.5 4.0 4.5 5.0 5.5 6.0
X
20
40
Z
60
80
100
120
(b) plot3d3(X,Y,Z)
Figura 7.7:
Apendice B - Comandos Plot3D 201
7.5 Plot3d3
Realiza um esbo co de malha de uma superfcie denida
por facetas retangulares. (X,Y,Z) sao tres matrizes que
descrevem uma superfcie (veja 7.7(b)). A superfcie e com-
posta por polgonos de quatro lados.

E usado da seguinte
forma:
plot3d3(X,Y,Z [vect,theta,alpha,leg,ag,ebox]).
7.6 fplot3d
Esbo ca uma superfcie denida pela fun cao externa f no
grid denido por xr e yr (veja 7.8(a)).

E usado da seguinte
forma:
fplot3d(xr,yr,f,[theta,alpha,leg,ag,ebox])
, sendo que:
xr:vetor linha de tamanho n1.
yr: vetor linha de tamanho n2.
f: fun cao do tipo z=f(x,y).
Rotina 4
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
clc;
clear;
clf;
Apendice B - Comandos Plot3D 202
funcprot(0);
// Intervalo de plotagem da funcao em x
a = -2;
b = 2;
n = 30;
dx = (b-a)/n;
x=[a:dx:b];
// Intervalo de plotagem da funcao em y
c = -3;
d = 3;
m = 40;
dy = (d-c)/m;
y = [c:dy:d];
function [z]=func(x,y)
z= x.^3 - 3.*y.^2 - 20
endfunction;
Apendice B - Comandos Plot3D 203
fplot3d(x,y,func)
-->size(x)
ans =
1. 31.
-->size(y)
ans =
1. 41.
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
Perceba que o comando fplot3d so pode ser utilizados
para fun coes pre-denidas nao sendo necessario avaliar os
valores na fun cao. Diferentemente do plot3d que plota ma-
trizes quaisquer, sendo necessario, quando utiliza-se fun coes
pre-denidas, recorrer a um comando adicional para ava-
liar os valores na fun cao ( como z=eval3d(funcao,x,y) ) e
gerar a matriz z que sera plotada. Portanto plot3d e fplot
produziram o mesmo resultando, diferenciando apenas na
forma de programar.
7.7 fplot3d1
Esbo ca em 3d, em escala de cinza ou colorido, nveis
de uma superfcie denida pela fun cao externa f no grid
denido por xr e yr (veja 7.8(b)).

E usado da seguinte forma:


fplot3d1(xr,yr,f,[theta,alpha,leg,ag,ebox])
Apendice B - Comandos Plot3D 204
-55
2
1
0 X
-3
-2
-1 -1
0
1
Y
2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(a) fplot3d(x,y,func)
-55
2
1
0 X
-3
-2
-1 -1
0
1
Y
2 -2
3
-50
-45
-40
-35
Z
-30
-25
-20
-15
-10
(b) fplot3d1(x,y,func)
Figura 7.8:
Apendice B - Comandos Plot3D 205
7.8 Resumo - comandos plot3d
plot3d Esbo co 3d de uma superfcie
plot3d1 Esbo co 3d em nveis de cinza ou de cores de uma superfcie
plot3d2

E o mesmo que plot3d mas plota uma superfcie denida por rectangulos
plot3d3 Esbo co de malha de uma superfcie denida por facetas retangulares
fplot3d Esbo co 3d de uma superfcie denida por uma fun c ao
fplot3d1 Esbo co 3d em escala de cinza ou colorido de nvel de uma superfcie denida por uma fun c ao
Referencias Bibliogracas
[1] Cooper J., A MATLAB Companion for Multivariable
Calculus Harcourt/Academic Press, 2001.
[2] Scilab Group, Introduction to Scilab - User s Guide
em
http://www.scilab.org
[3] Motta Pires P. S., Introdu cao ao Scilab, em
http://www.dca.ufrn.br/~pmotta
206

Вам также может понравиться