Escolar Documentos
Profissional Documentos
Cultura Documentos
Material 2 Apostila Scilab Prof Gerson Ulbricht
Material 2 Apostila Scilab Prof Gerson Ulbricht
Software Numrico
Verso da Apostila: v. 2.
Jaragu do Sul SC
2010
SUMRIO
O Scilab
Como a maior parte dos problemas no tem soluo direta e precisa, recorre-se a
mtodos numricos iterativos onde necessrio que se escolha um critrio de parada.
0,00...0.
L
-mb
m
Overflow
Underflow
M
Overflow
Exemplo 1: F(10,3,-5,5)
Maior nmero positivo representado pela mquina: M= + 0.999 105 = 99900
Menor nmero positivo representado pela mquina: m= + 0.100 10-5 = 0.000001
Observar que a representao no tem distribuio uniforme, ver por exemplo outros
valores.
Exemplo 2: F(2,4,-3,3)
Maior nmero positivo: M= + 0.1111 23 = (1.2-1+1.2-2+1.2-3+1.2-4).23=15/2
Menor nmero positivo: m = + 0.1000 2-3 = (1.2-1+0.2-2+0.2-3+0.2-4).2-3=1/16
1.3 Converso de bases Exemplos
1.3.1. Transformao de outras bases para a base 10
1.3.1.1. Transformar para a base 10.
Exemplo: Transformar (1011)2 para base 10.
(1011)2 = 1x2 + 0x2 + 1x2 + 1x20 = 8 + 0 + 2 + 1 = (11)10 = 11.
a) Transformar (10.1)2 para base 10
b) Transformar (11.01)2 para base 10
c) Transformar (101.111) 2 para base 10
1.3.1.2. Outros tipos de bases (O processo semelhante, mudando somente a base da
potncia)
2
12
0
2
6
0
2
3
1
2
1
Lista de exerccios
1. Transformar para a base 10:
a) (101101)2 Resposta: (45)10
b) (11011)2 Resposta: (27)10
c) (110.01)2 Resposta: (6.25)10
d) (111.111)2 Resposta:
e) (10110.1)2 Resposta:
2. Transformar para a base 10:
a) (1265)8
Resposta: (693)10
b) (ABC3)16 Resposta: (43971)10
3. Transformar os nmeros de 1 a 10 da base 10 para a base 2.
4. Transformar para a base 2:
a) (15)10
Resposta: (1111)2
b) (0.125)10 Resposta: (0.001)2
c) (0.9)10
Resposta: (0.1110011..)2
d) (0.6)10
Resposta: (0.1001100..)2
e) (12.5)10
Resposta: (1100.1)2
5. Transformar
a) (253)8 para base 2 Resposta: (10101011)2
b) (AB)16 para base 2 Resposta: (10101011)2
6. Seja o sistema de ponto flutuante F(2, 3, -1, 2), determine todos os valores de F e
represente-os em um eixo.
7. Plotar num eixo, os valores encontrados no exerccio anterior com auxlio de software
numrico MATLAB ou Scilab.
1.4 Representao de Nmeros em Mquinas Digitais
Numa mquina digital, os nmeros so armazenados no sistema binrio. Cada
dgito (0 ou 1) chamado de bit, sendo que um conjunto de 8 bits forma um byte.
Geralmente, inicia-se com um nmero para indicar o sinal do nmero
(0=positivo e 1 = negativo), na sequncia aparecem os algarismos da mantissa, em
seguida vem 1 bit para indicar o sinal do expoente (0=positivo e 1 = negativo) e o
expoente que deve ser um nmero inteiro entre e 1 e e2, conforme especificao do
sistema de ponto flutuante utilizado.
Considerando para exemplificar, uma mquina digital que use um sistema F(2,
10, -15, 15). Representar o nmero (25)10 nessa mquina.
Transformando para a base 2:
(25)10 = (11001)2 = (0.1100100000 x 25)2 = (0.1100100000 x 2101)2
Atravs desses exemplos, pode-se ver que todos os nmeros que podem ser
representados por essa mquina esto entre -32736 e 32736 e que existem nmeros reais
que no podem ser representados nessa mquina.
A quantidade de nmeros de pontos flutuantes dada pela equao:
#F = 2.(b-1).bn-1.(e2-e1 + 1)+1. Verifique. Resposta: 31745.
Logo, a quantidade de nmeros de ponto flutuante que pode ser representado
nesse sistema 31745, e eles no ficam igualmente distribudos no intervalo [-32736,
32736].
Exerccios
1. Seja uma mquina hipottica, cujo sistema de ponto flutuante seja F(2, 8 -7, 7).
Determine:
9
a) O maior nmero no sistema binrio que pode ser representado nessa mquina.
b) O resultado anterior no sistema decimal.
c) O menor nmero positivo no sistema binrio que pode ser representado nessa
mquina.
d) O resultado anterior no sistema decimal.
e) O intervalo no sistema decimal, onde se encontram todos os nmeros de ponto
flutuante que podem ser representados nessa mquina.
f) A quantidade total de nmeros de ponto flutuante que podem ser representados nessa
mquina.
g) Quantos bits so necessrios para representar os nmeros desse sistema?
h) A representao nesse sistema, do nmero 2.5
i) A representao nesse sistema, do nmero -7.25
j) A representao nesse sistema, do nmero -0.005
2. Seja uma mquina hipottica, cujo sistema de ponto flutuante seja F(2, 6 -15, 15).
Determine:
a) A quantidade total de nmeros de ponto flutuante que podem ser representados nessa
mquina.
b) O intervalo no sistema decimal, onde se encontram todos os nmeros de ponto
flutuante que podem ser representados nessa mquina.
c) Quantos bits so necessrios para representar os nmeros desse sistema?
d) Represente o maior nmero no sistema binrio que pode ser representado nesse
sistema.
e) Represente o menor nmero positivo no sistema binrio que pode ser representado
nesse sistema.
1.5 Erros
Mesmo quando utiliza-se para resoluo de um modelo matemtico, um mtodo
exato, pelo fato de este envolver um nmero muito grande de operaes (adio,
subtrao, multiplicao e diviso) e sendo essas processadas em equipamentos com
capacidade limitada para armazenar dados, pode haver a ocorrncia de erros.
Erros na fase de modelagem: ocorrem na interpretao do problema bem como
na construo dos algoritmos de resoluo.
Erros de arredondamento: quando se utiliza equipamento computacional e se
o nmero obtido em um clculo no representvel exatamente no SPF, o mesmo ser
representado de forma aproximada.
10
| X ex - X aprox |
X ex
Como na maioria das vezes, o valor exato no disponvel, trabalha-se com um
limite superior para o erro relativo:
X aprox
11
Mal Condicionamento
A maioria dos processos numricos segue uma linha geral:
1) Dados so fornecidos;
2) Os dados so processados de acordo com um plano pr estabelecido
(algoritmo)
3) Resultados so produzidos
Existem problemas bem postos e mal postos.
Exemplo 1:
Resolver o sistema linear:
y
=
2
x +
x + 1.01 y = 2.01
Resolvendo pelo mtodo da substituio obtm-se x = 1 e y = 1.
Se o nmero 2.01 da segunda equao mudado para 2.02, obtm-se
x= 0 e y = 2.
Verifique essa situao resolvendo os sistemas.
Exemplo2 : soluo da equao do 2o grau: ax 2 + bx + c = 0
x 1, 2 =
b 2 4ac
2a
12
x2 =
c
= 1.2371/100.20 = 0.012346
a.x1
while 1+E>1
E=E/2;
j=j+1;
end
disp('N de dgitos que o computador trabalha:')
disp(j)
end
Explique por que esse algoritmo funciona.
14
15
16
17
-->%e
%e =
2.7182818
(Nmero de Euler)
-->%T
%T =
T
(Verdadeiro - True)
-->%F
%F =
F
(Falso - False)
A funo pwd mostra qual o diretrio est sendo usado:
-->pwd
ans =
C:\Program Files\scilab-5.2.2
2.2 Definio das variveis
Ao definir uma varivel deve-se tomar os cuidados:
Sensvel a maisculas e minsculas
Palavra nica
At 24 caracteres
No pode iniciar com nmero
Exerccio
1) Verificar se possvel declarar as seguintes variveis:
a = 1;
Var_1 = 2;
2var = 3;
esta varivel = 3;
tens = 2;
b = 2; B = 3; verifique se b e B tm o mesmo valor.
18
19
20
Operadores de comparao
< menor
<= menor ou igual
> maior
>= maior ou igual
== igual
~= diferente
<> diferente
&e
| ou
~ no
3.2 Operaes com nmeros complexos
As grandezas no Scilab tambm podem ser complexas. Para atribuir varivel A
o valor complexo 5 + 2i e varivel B o valor complexo 2 + i, procede-se:
-->A = 5 + 2 * %i // Atribuindo a A o valor 5 + 2i
A=
5. + 2.i
-->B = -2 + %i // Atribuindo a B o valor -2 + i
22
B=
- 2. + i
Observar que a no utilizao do ponto e vrgula no final dos comandos de
atribuio, permitiu a apresentao do resultado de cada comando.
As variveis complexas A e B podem ser multiplicadas, divididas, somadas ou
subtradas.
Exemplos:
--> // Operaes com variveis complexas
-->A * B // Multiplicao
ans =
- 12. + i
-->A / B // Diviso
ans =
- 1.6 - 1.8i
-->A + B // Adio
ans =
3. + 3.i
-->A - B // Subtrao
ans =
7. + i
importante observar que a resposta ao uso da funo interna sqrt() com
argumento negativo inclui o nmero complexo i = sqrt(-1).
Por exemplo:
-->sqrt(-2) // Funo raiz quadrada com argumento negativo
ans =
1.4142136i
Exerccio:
1. Dados os seguintes nmeros complexos,
Z1 = 3 + 5i; Z2 = 7 + 3i execute as seguintes operaes:
a) Z1 + Z2;
b) Z1 * Z2;
c) Z1 + sqrt(-20);
d) Calcule os mdulos de Z1 e Z2 e compare com abs(z);
Lembre-se:
23
24
Exerccios:
Mais Funes:
round(x): Arredonda o valor de x para o inteiro mais prximo
floor(x): Arredonda para o menor inteiro
ceil(x): Arredonda para o maior inteiro
sqrt(x): Calcula a raiz quadrada de x
1) Dados:
x = [0.5 3.4 4 2.8 1.5];
y = [0.9 2.2 5 1.1 1.7];
Calcule:
a) x'
b) log(x), log10(x*y), log2(x*y)
c) ceil(x)
d) floor(y)
e) round(x.*y)
f) sqrt(x) + floor(y.*y)
g) Verifique se abs(2+2*%i) = sqrt(8)
4.1 Vetores
Declarao de vetores:
X = [ x1 x2 x3 ...] vetor linha
X = [x1;x2;x3;...] vetor coluna
Transposio de vetores: X
Exerccios:
1) Verifique a diferena entre: x = [1 2 3] e x = [1;2;3]
2) Dados os vetores:
x = [1 2 3 4 5] e y = [2 4 6 8 10]
Calcule:
a) z = x + y;
b) O produto interno xy;
c) Formas transpostas de x e y;
d) Dados z1 = x*y; e z2 = x*y; verifique se z1 = z2.
e) Multiplique x por y, elemento a elemento.
4.2.1 Gerao de Vetores
Os dois pontos : um caracter muito til. A declarao x = 1:5 gera um vetor
linha contendo os nmero de 1 a 5 com incremento de uma unidade.
-->x=1:5
x =
1. 2. 3. 4. 5.
Ou ainda pode-se usar colchetes:
-->x=[1:5]
x =
1.
2.
3.
4.
5.
0.
0.7853982
1.5707963
2.3561945
3.1415927
1.0471976
3.1415927
4.2 Matrizes
Ao declarar matrizes no Scilab, para separar elementos digitar espao ou vrgula. Para
pular de linha, digitar ponto e vrgula ou ao digitar usar Enter.
4.2.1 Declarao de Matrizes:
--> A=[1 2; 3 4]
27
A=
1
3
2
4
6
8
Somar:
--> A+B
ans =
6
10
8
12
Subtrair:
--> A-B
ans =
-4
-4
-4
-4
Multiplicar:
--> A*B
ans =
19
43
22
50
2
4
Inversa de A:
--> inv(A)
ans =
28
-2
1.5
1
-0.5
0
4
2
4
3
7
11
15
4
8
12
16
2
-4
10
14
3
-8
11
15
4
-12
12
16
30
Exemplo:
-->rand(2,3)
ans =
0.0002211
0.3303271
0.6653811
0.6283918
0.8497452
0.6857310
2.
3.
4.
5.
3.
3.
4.
5.
3.
-->x=[x 3]
x =
1.
2.
3.
31
32
33
Dadas as matrizes
A = [1 2 3;4 5 6]; e B = [7;8;9]
Determine:
a)A*B
b)B*A
c)A*identidade(A)
d)A*ones(A)
e)A*ones(A) + identidade(A)
2) Lembre-se:
Agora faa:
a)Crie uma matriz 5X5 de nmeros aleatrios.
b)Atribua valor 0 coluna 2.
c)Multiplique os elementos de 2 a 4 da coluna 3 por 10.
d)Divida os elementos de 1 a 3 da coluna 5 por 5.
e)Remova a coluna 3.
f)Remova a linha 2.
34
Este operador usado com outros operadores para realizar operaes elemento a
elemento.
Exemplos:
A = [1 2 3; 3 4 6; 7 8 9];
B = [2 4 6;8 10 12; 14 16 18];
-->A./B (verificar no Scilab)
-->A.*B (verificar no Scilab)
Exemplo:
Dado o seguinte sistema linear:
3x + y + z = 20
2x - y - z = -15
-4x + y -5z = -41
Podemos resolv-lo no Scilab da seguinte maneira:
35
1
-1
1
1
-1
-5
-->B=[20;-15;-41]
B=
20
-15
-41
-->x=A\B
x=
1
8
9
Logo temos como soluo x'= [1 8 9], ou seja, x=1,y=8 e z=9.
Mais Exerccios
1. Dadas as matrizes a baixo, calcular::
4
5 2 5
3 3 2 3
A=
7
5
4
1
2
7 3
2
a) A + B
b) C B
c) 5.B;
d) A + 3B 5C
e) B.A
f) (C.A).B
g) A(B-C)
h) A-1
7
2
B=
1
2
3
3
1
7
3
2
3
5
1
5
1
5
C=
2
4
3
3
4
0 5
2
2
1 1
1 3
36
i) (B.C)-1
j) tr(A)
k) tr(B + C)
l) B2
m) C3
n) tr(A + B)-1
o) A
p) (B + A C)
q) det(B)
r ) det(A B)
2. Dados os vetores: u = [-3 3 -1 0 5], v = [2 1 -5 1 4] e w = [2 1 3 0 2],
calcular:
a) u*v
b) w*v
c) u*(v + w)
d) u*(v - w)
3. Calcular a norma ou comprimento de cada um dos vetores do item 2. Use o
comando norm(x).
4. Determinar os autovalores e autovetores normalizados das matrizes:
Use: [e,L]=eig(A)
4 2 3
A = 1 5 1 e B =
3
4 7
3 4 1 3
3 3 1
5
.
1
1
3 4
5 4 6
3
52
51
45
46
55
55
53
46
49
44
44
48
44
45
57
54
53
44
48
49
46
57
51
57
56
Estimar: (a) o vetor de mdias; (b) a matriz covarincia estimada S; (c) a matriz
desvio padro
mean(X)
37
ans =
49.7500 49.0833 48.8333 47.8333 49.4167 50.8333
(b) a matriz covarincia estimada S;
S=cov(X)
S=
21.8409
7.1136
4.5000
-4.6818
-5.8864
-9.8636
7.1136
12.4470
3.7424
2.7424
2.9621
-2.1667
4.5000
3.7424
23.2424
-14.3939
5.0758
-6.3030
-4.6818 -5.8864
2.7424 2.9621
-14.3939 5.0758
22.8788 5.8939
5.8939 18.2652
12.9697 6.9848
-9.8636
-2.1667
-6.3030
12.9697
6.9848
22.5152
Indivduo
1
2
3
4
5
6
7
8
9
10
11
Altura
168
180
178
167
190
175
178
183
169
177
184
Peso
89
82
67
72
95
70
75
80
70
73
85
38
12
170
68
(a) Construir a matriz de dados; (b) calcular o vetor de mdias; (c) representar
graficamente num espao bidimensional as observaes e o vetor de mdias.
x=[168;180;178;167;190;175;178;183;169;177;184;170];
//Obs: pode usar x=(X(:,1))
y=[89;82;67;72;95;70;75;80;70;73;85;68];
//Obs: pode usar x=(X(:,2))
plot(x,y,'*');
xlabel('Estaturas');
ylabel('Pesos');
title('Grfico das Observaes e Mdia');
//hold on; (esse comando s necessrio no Matlab)
plot(176.5833,77.1667,'ro');
//hold off (esse comando s necessrio no Matlab)
39
40
CAPTULO 5: POLINMIOS
p =
- 8 + 6x + 7x - 6x + x4
5.3 Obteno das Razes de um Polinmio
Tendo o polinmio, possvel obter as razes dele atravs do comando roots
Exemplo 1: Calcular as razes do polinmio: 3 + 9x + 5x + 2x
Passo 1: Definir um polinmio atravs dos coeficientes.
-->p = poly([3 9 5 2 ], 'x', 'coeff')
p =
2 3
3 + 9x + 5x + 2x
Passo 2: Calcular as razes:
-->roots(p)
ans =
- 0.4121443
- 1.0439279 + 1.5967833i
- 1.0439279 - 1.5967833i
2
2 - 3x + x
Multiplicao
-->p*q
ans =
2 3
2 + x - 5x + 2x
Potenciao
-->p^2
ans =
2
1 + 4x + 4x
Diviso (p/q)
-->q/p
ans =
2
2 - 3x + x
---------1 + 2x
Diviso (q/p)
-->p/q
ans =
1 + 2x
---------2
2 - 3x + x
Exerccios
1) Encontrar as razes de uma funo quadrtica utilizando a frmula de Bhskara.
a) encontrar as razes do polinmio utilizando a frmula de Bhskara: x2 + 4x + 13 = 0
Soluo:
1: atribuir valores a=1; b=4; c=13;
2 = construir a expresso que me permita encontrar as razes: (frmula de Bhskara)
43
44
6.2 Grficos 2D
A funo plot tem diferentes formas, dependendo do tipo dos argumentos de
entrada. Se y for um vetor, plot(y) gera um grfico linear por partes das componentes y
45
Exemplo 2:
46
Seja construir o grfico da funo y = sen(x) no intervalo [0, 10] com a linha em
vermelho e colocando os ttulos.
No Scilab:
x=1:0.1:10;
plot(x,sin(x),"r-")
xtitle("Funo y = sen(x) no intervalo [0, 10]", "Eixo x", "Eixo Y", boxed = 1)
47
48
49
50
51
// Comentrio: Veja que 'b*-' quer dizer: cor blue, marcador * e linha -.
Seja construir o grfico da funo y = sen(x) no intervalo [0, 10] com a linha em
vermelho, colocando os ttulos e as linhas de grade na cor azul.
No Scilab:
x=1:0.1:10;
plot(x,sin(x),"r-")
xtitle("Funo y = sen(x) no intervalo [0, 10]", "Eixo x", "Eixo Y", boxed = 1)
xgrid(2)
//Comentrio: O valor 2 em xgrid(2), refere-se cor da grade. Por exemplo,
colocando-se o valor xgrid(1), obtm-se grade na cor preta e assim sucessivamente.
O grfico obtido apresentado a seguir:
6.3 Grficos 3D
54
55
No Scilab:
-->x1=2:0.1:8;
-->x2=1:0.1:12;
-->[x1,x2]=meshgrid(x1,x2);
-->z=(1/(12*%pi))*exp(-0.5*(x1-5).^2-0.5*((x2-8)/2).^2);
-->mesh(z)
O grfico obtido apresentado a seguir:
57
58
-->A = round(rand(5,5)*10);
-->Matplot(A)
Exemplo 5: Grfico 3D
x = [0:0.1:2*%pi]';
y = x;
z = cos(x) * sin(x');
plot3d(x, x, z)
59
Exemplo 2: Histograma 3D
-->c=rand(5,6);
-->hist3d(c)
60
61
53
Peugeot
42
Citroen
62
Renault
20
No Scilab:
pie([53 42 62 20],["Kia","Peugeot","Citroen","Renault"]);
62
Obs.: Para colocar ttulos, legendas, etc..., procede-se de forma anloga aos
grficos 2D vistos anteriormente.
63
6.4.5 Histograma
O histograma um grfico de colunas justapostas utilizados para dados
geralmente oriundos de uma distribuio contnua.
Procedimentos:
1) Gerar um vetor de dados seguindo uma distribuio Normal de probablidade.
Funo: grand(m, n, dist_type [,p1,...,pk])
onde:
m: a quantidade de elementos de cada gerao aleatria e
n: a quantidade de geraes aleatrias;
disttype: o tipo de distribuio que se deseja gerar
[; p1; :::; pk]: so os parmetros da distribuio requerida. No caso de uma
normal padronizada, mdia 0 e varincia 1.
Nesse caso, utilizamos:
Y=grand(100,1,'nor',0,1);
2) Histograma: Funo histplot(nmero de colunas, vetor de dados)
--> histplot(10,Y)
64
Estatura
68
160
69
165
76
168
70
163
89
182
83
188
56
161
54
160
76
175
70
167
Exerccios
Plotar os Seguintes grficos:
1) Reta
a) y1 =7- 3 x1 -1<x<6
Definindo vetor das abscissas, x1
x1=[-1:0.2:6]
y1=7-3*x1
plot2d(x1,y1)
2) Parbolas
a) y=x^2 2 no intervalo -4 < x < 4
x2=[-4:.2:4];
//outra maneira de fazer o grfico diferente da anterior.
plot2d(x2,x2^2-2);
66
67
68
7.2 Integrais
7.2.1 - Funo integrate
possvel obter o valor numrico de uma integral definida atravs da funo
integrate.
Sintaxe:
integrate('funo','varivel',limite inferior,limite superior,erro absoluto, erro relativo)
Os erros absoluto e relativo so parmetros opcionais. Caso no sejam
especificados, o erro absoluto tomado como 10 8 e o erro relativo como 10 14.
Exemplo 1:
Seja estimar a integral definida da funo f(x) = - 0,05.log(0,4076).econsiderando o intervalo [0, 50].
0,05.x
69
No Scilab:
--> v = integrate('-0.05*log(0.4076)*exp(-0.05*x)','x',0, 50)
v =
0.8238002
Observe que no necessrio definir a funo a ser integrada previamente, caso
o seja, a sua expresso analtica deve ser substituda pelo seu nome colocado entre
aspas.
Exemplo 2:
Por exemplo, seja a funo f(x) = cos(3x+1).x + x1,5
O esboo do grfico dessa funo mostrado a seguir:
Para calcular:
Faz-se:
-->Integral = integrate('cos(3*x+1)*x^2+x^1.5','x',1,9)
Integral =
102.51064
70
2.24
2.48
2.72
2.96
3.2
0.4445633
0.4996230
0.5518088
0.6014057
0.6486586
71
REFERNCIAS
72