cci – 22 laboratório de matemática computacionalpauloac/cci22/lab_slides.pdf · matemática...
TRANSCRIPT
CCI – 22Laboratório de
Matemática Computacional
Paulo André Castro IEC - ITACCI - 22
Matemática ComputacionalProf. Paulo André
http://www.comp.ita.br/[email protected]
Sala 110 – Prédio da Computação
Roteiro• Representação de ponto flutuante
• Precisão da máquina
• Conceitos Básicos Matlab
• Estruturas de Controle
Paulo André Castro IEC - ITACCI - 22
• Estruturas de Controle
• Criação de arquivos matlab (.m) funções e E/S
• Variáveis Estruturadas
• Gráficos
Ponto Flutuante em Computadores
Paulo André Castro IEC - ITACCI - 22
Ponto flutuante em C: float
#include <stdio.h>#include <conio.h>#include <math.h>union int_or_float {
float z;
.........unsigned int mask=0x80000000;while(cont<sizeof(unsigned int)*8)
{if(t.i&mask )printf("1");
Paulo André Castro IEC - ITACCI - 22
float z;unsigned int i;
};voidprint_float(int_or_float t) {int cont=0;.......
elseprintf("0");
mask=mask>>1;cont++;if(cont==1|| cont==9)printf(".");
} }
Ponto flutuante em C: floatmain() {
int_or_float t;int_or_float zero;zero.z=0; //Padrao IEEE 754
int exp=0; int sinal=1;t.z=2.3; char c;
c=getch();if(c=='i') {
exp++; t.z=t.z*2;}else if(c=='d') {
exp--; t.z=t.z/2;
Paulo André Castro IEC - ITACCI - 22
t.z=2.3; char c;do { printf("x=%10.6f x=%c2^(%d)
\n",t.z,sinal>0?'+':'-',exp);print_float(t);printf("\nZero
z=%10.6f\n",zero.z);print_float(zero);
exp--; t.z=t.z/2;}else if(c=='s') {
sinal=-1*sinal; t.z=-1*t.z; }clrscr();
}while(c!='f'); return 0;}
Precisão da Máquina
#include <stdio.h>#include <conio.h>#include <math.h>union int_or_float {
float z;
........unsigned int mask=0x80000000;while(cont<sizeof(unsigned int)*8)
{if(t.i&mask )printf("1");
Paulo André Castro IEC - ITACCI - 22
float z;unsigned int i;
};voidprint_float(int_or_float t) {int cont=0;.......
printf("1");elseprintf("0");
mask=mask>>1;cont++;if(cont==1|| cont==9)printf(".");
} }
Precisão da Máquinamain() {
int_or_float e, e2,zero;zero.z=0; //Padrao IEEE 754
int exp=0; int sinal=1;e.z=1; char c;while(e.z+1>1) {
e.z=e.z/2;
...... print_float(e);printf("\n\nEpsilon*2=%20.18f
epsilon*2=%c2^(%d) \n",e2.z,e2.z>0?'+':'-',exp+1);
print_float(e2);printf("\n\nZero z=%20.18f\n",zero);print_float(zero);
Paulo André Castro IEC - ITACCI - 22
e.z=e.z/2;exp--;
}e2.z=e.z;exp++;e.z=e.z*2;
printf("Epsilon=%20.18f epsilon=%c2^(%d) \n",e.z,e.z>0?'+':'-',exp);....
print_float(zero);float x1,x2;x1=10; x2=x1+e2.z;if(x1<x2) printf("\n\nx1 menor que x2");else if(x1>x2) printf("\nx1 maior que x2");else if(x1==x2) printf(“\nx1 igual a x2");
}
Conceitos Básicos de Programação
• Declaração e inicialização de variáveis
• Operações comuns disponíveis: +, - , * , /
• help: Mostra detalhes sobre comandos. Exemplos:– help help
Paulo André Castro IEC - ITACCI - 22
• X=1• Y=2.5• Z=“Isto é uma
string”
– help help– help log
• lookfor: Procura por trechos de palavras em comandos. Exemplo– lookfor printf– lookfor input
Paulo André Castro IEC - ITACCI - 22
Outros Comandos
• x=3;– O ponto e vírgula inibe
a apresentação do valor de x
• exp(x)
• log10(x)• Calcula o valor do log de
x na base 10
• sin(x), cos(x), tan(x):
Paulo André Castro IEC - ITACCI - 22
• exp(x)– Calcula o valor de e
elevado a x
• log(x)– Calcula o valor do log
natural de x (base e)
– Fazem o que parecem fazer....x em radianos
• pi– Valor de π
• x^y– Valor de x elevado a y
Roteiro• Representação de ponto flutuante
• Precisão da máquina
• Conceitos Básicos Matlab
• Estruturas de Controle
Paulo André Castro IEC - ITACCI - 22
• Estruturas de Controle
• Criação de arquivos matlab (.m) funções e E/S
• Variáveis Estruturadas
• Gráficos
Estruturas de Controle
• For: Similar a linguagem C, com diferenças de sintaxe. Exemplo:for i=1:5disp('Olá'); % escreve Olá
• while: Similar a linguagem C, com diferenças de sintaxe
• Exemplo:i=10; f=1;
Paulo André Castro IEC - ITACCI - 22
disp('Olá'); % escreve Oláend
Exemplo 2:for x=1:2:11
disp(sprintf('x=%4.2f', x));end
i=10; f=1;while i>=1
f=f*i;i=i-1;
enddisp(sprintf(‘f=%f’,f))
Estruturas de Controle 2
• If: Similar a linguagem C, com diferenças de sintaxe. Exemplo:
If x == 0disp(‘ Igual a zero’)
Paulo André Castro IEC - ITACCI - 22
disp(‘ Igual a zero’)elseif x > 0 % elseif é opcional e podem ter vários
disp(‘ Maior que zero’) else % else é opcional pode existir no máximo um
disp(‘ Menor que zero’)end % obrigatório
Roteiro• Representação de ponto flutuante
• Precisão da máquina
• Conceitos Básicos Matlab
• Estruturas de Controle
Paulo André Castro IEC - ITACCI - 22
• Estruturas de Controle
• Criação de arquivos matlab (.m) funções e E/S
• Variáveis Estruturadas
• Gráficos
Criação de arquivos matlab (.m) funções e E/S
• Programas em matlab são escritos em arquivos texto comuns, assim como na linguagem C. Geralmente utiliza-se a extensão .m para indicar programas matlab.
Paulo André Castro IEC - ITACCI - 22
• Criando um Programa matlab– Clique em New m-file– Digite o programa no editor que surge – Salve o programa na pasta de trabalho do Matlab– Execute o programa digitando o nome do arquivo na
linha de comando, sem a extensão .m
Criando o arquivo .m
Paulo André Castro IEC - ITACCI - 22
Editando arquivo .m
Paulo André Castro IEC - ITACCI - 22
Executando um programa matlab
Paulo André Castro IEC - ITACCI - 22
Criação de Funções em Matlab
• É possível criar funções em matlab utilizando arquivos .m
• Digite os seguintes comandos em um arquivo chamado fatorial.m
Paulo André Castro IEC - ITACCI - 22
chamado fatorial.mfunction fat=fatorial(x)
i=x; f=1; % Funcao Fatorialwhile i>=1
f=f*i;i=i-1;
endfat=f;
Uso de funções criadas pelo usuário• Os arquivos devem ser salvos na pasta de trabalho do
matlab.
Paulo André Castro IEC - ITACCI - 22
Mais sobre Funções Matlab
• Funções matlab podem retornar vários valores. Exemplo:function [mean,stdev] = stat(x)
%STAT Interesting statistics.n = length(x);mean = avg(x,n);
Paulo André Castro IEC - ITACCI - 22
stdev = sqrt(sum((x-avg(x,n)).^2)/n);• Solicitação de dados ao usuário. Exemplo
function olanome= input('Qual seu nome? ','s'); % leitura de stringx=input('Escolha um numero: '); % leitura de numerosdisp(sprintf('Ola, %s. Voce escolheu %d',nome,x));
end
Roteiro• Representação de ponto flutuante
• Precisão da máquina
• Conceitos Básicos Matlab
• Estruturas de Controle
Paulo André Castro IEC - ITACCI - 22
• Estruturas de Controle
• Criação de arquivos matlab (.m) funções e E/S
• Variáveis Estruturadas
• Gráficos
Variáveis Estruturadas - Matrizes• Criação de vetores
– x=[1 3 5]– y=2:2:12 % cria vetor [2 4 6 8 10 12]
• Criação de matrizes– a=[1 3 5; 4 6 7 ; 9 3 2] % matriz 3 x 3– b=[1:5; 1:5; 1:5; 1:5; 1:5] % matriz 5 x 5
Paulo André Castro IEC - ITACCI - 22
– c = [ 7 4 3 ; 2 5 6] % matriz 2 x 3– d = [ [ 2 5] ; [ 7 9]] % matriz 2 x 2
• Índices começam com 1 não com zero. Pode-se acessar elementos ou submatrizes– y(2) retorna 4; a(2,3) retorna 3– a(2,:) retorna [ 4 6 7] d(:,1) retorna [ 2 ; 7]– b(1:2,3:4) retorna [ 3 3 ; 4 4 ] c(2, 2:end) retorna [ 5 6 ]
Operações sobre Matrizes
• Operações simples disponíveis: + , - , * , / , ^– Exemplos:
• a*a b^3• a/b
• Operações e funções específicas:– a’ : Transposta
Paulo André Castro IEC - ITACCI - 22
– a’ : Transposta– inv(a): inversa % possível erro se não inversível– det(b) : determinante
• Operações escalares podem ser utilizadas. Exemplos:– log(a) : aplica log a cada elemento da matriz a– sin(a): aplica sin a cada elemento da matriz a– a.^3 : Com o ponto ‘.^’ cada elemento é elevado ao cubo
Roteiro• Representação de ponto flutuante
• Precisão da máquina
• Conceitos Básicos Matlab
• Estruturas de Controle
Paulo André Castro IEC - ITACCI - 22
• Estruturas de Controle
• Criação de arquivos matlab (.m) funções e E/S
• Variáveis Estruturadas
• Gráficos
Gráficos• É possível criar gráficos através
do comando plot. Exemplo:• x=0:0.01:15; y=sin(x);• plot(x,y) % primeiro argumento é usado no
eixo x% segundo argumento é usado no
Paulo André Castro IEC - ITACCI - 22
% segundo argumento é usado no eixo y
• Teste comx=0:0.9:15
Observação: Os pontos são interligados por retas
Gráficos 2
• Criação de gráfico com opcionaisx=linspace(-10,10,100) % cria cem pontos entre -10 e 10y=sin(x)plot(x,y)grid; % determina colocação de grid no gráficotitle(‘Exemplo de gráfico’); % define título do gráfico
Paulo André Castro IEC - ITACCI - 22
title(‘Exemplo de gráfico’); % define título do gráficoxlabel(‘tempo t (segundos)’); % define rótulo do eixo xylabel(‘y(t)’); % define rótulo do eixo y
• Dois gráficos em uma mesma janela plot(x,y,x,z)z=x.*sin(x) % mulitiplicação elemento a elementoplot(x,y, x, z) % Uso de plot com dois gráficos na mesma tela (x,y) e (x,z)
Gráficos 3
plot(x,y, ‘.
• Utilizando os mesmos dados de x, y e z. Comande• plot(x,y,'.r',x,z,':b')• O resultado é:
– (x,y) com pontos não ligados e vermelhos
Paulo André Castro IEC - ITACCI - 22
– (x,y) com pontos não ligados e vermelhos– (x,z) com linha tracejada azul
• Outras opções para tipo de gráfico– ‘-’ linha sólida– ‘o’ círculo nos pontos– ‘*’ astericos nos pontos– Cores possíveis: r (vermelho), y (amarelo), b (azul), w (white), k (preto)
• Veja mais opções de plot com help plot
Resultado
Paulo André Castro IEC - ITACCI - 22