29
CCI – 22 Laboratório de Matemática Computacional Paulo André Castro IEC - ITA CCI - 22 Matemática Computacional Prof. Paulo André http://www.comp.ita.br/~pauloac [email protected] Sala 110 – Prédio da Computação

CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Embed Size (px)

Citation preview

Page 1: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 2: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 3: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Ponto Flutuante em Computadores

Paulo André Castro IEC - ITACCI - 22

Page 4: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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(".");

} }

Page 5: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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;}

Page 6: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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(".");

} }

Page 7: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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");

}

Page 8: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 9: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Paulo André Castro IEC - ITACCI - 22

Page 10: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 11: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 12: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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))

Page 13: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 14: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 15: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 16: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Criando o arquivo .m

Paulo André Castro IEC - ITACCI - 22

Page 17: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Editando arquivo .m

Paulo André Castro IEC - ITACCI - 22

Page 18: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Executando um programa matlab

Paulo André Castro IEC - ITACCI - 22

Page 19: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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;

Page 20: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 21: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 22: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 23: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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 ]

Page 24: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 25: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 26: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 27: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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)

Page 28: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

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

Page 29: CCI – 22 Laboratório de Matemática Computacionalpauloac/cci22/lab_slides.pdf · Matemática Computacional Paulo André Castro CCI - 22 IEC - ITA ... % Funcao Fatorial while i>=1

Resultado

Paulo André Castro IEC - ITACCI - 22