Você está na página 1de 7

Aula 5 – Cálculo Numérico:

Número de flops:
Conta quantas operações foram efetuadas.
Somas e subtrações: cada operação dessas vale n flop
Produto entre escalares: cada operação dessas vale 1 flop
Produto de vetor com escalar: n flops
Produto entre vetores: cada operação dessas vale 2n – 1 flops
Produto entre matriz e vetor: cada operação dessas vale 2n² - n flops
Produto entre matrizes: cada operação dessas vale 2n³ - n² flops

Matriz tridiagonal/ Algoritmo de Thomas:


Uma matriz tridiagonal é uma matriz quadrada cujos únicos elementos não nulos estão
na diagonal principal e nas diagonais imediatamente acima e abaixo da principal.
Exemplo:

Código para resolver um sistema triangular no Scilab:


Aplicar no Scilab:
//Montar uma matriz triangular superior preenchida de ones:
A=ones(m,n) //Aqui dentro dos parênteses tu põem o tamanho da matriz
U=triu(A)
//Função que monta a matriz tridiagonal de n linhas e m colunas:
T=[]
n= //Aqui tu altera o tamanho da matriz
m= //Aqui tu altera o tamanho da matriz
for i=1:n
for j=1:m
if(abs(i-j) <= 1)
T(i,j)=1;
end
end
end
function [k]=numelementos(N)
n=size(T,1) //n recebe o número de linhas da matriz N
m=size(T,2) //m recebe o número de colunas da matriz N
k=0
for i=1:n
for j=1:m
if(N(i,j)~= 0)
k=k+1;
end
end
end
endfunction
N=(T+U)*(T+U)
[k]=numelementos(N)
Tarefa T5:

Soma: 1 + 2 = 1 flops
Produto escalar com vetor: 3 *x = n flops
Subtração de vetores: 3*x – x= n flops
Produto vetor com vetor = 2n – 1 flops
1 + n + n + 2n – 1 = 4n flops

Soma de um escalar com um vetor: 1+ 2 = 1 flop


Subtração de um escalar com um vetor: 3*x – x = n flops
Produto entre vetores: 2n – 1 flops
1 + n + 2n – 1 = 3n flops

Resolução: Adotei a seguinte matriz tridiagonal multiplicada por uma constante:


Resolução: Adotei a seguinte matriz tridiagonal multiplicada por ela mesma:

2*2 + 1*1 + 1*1 + 2*2 + 1*1 + 1*1 + 2*2 + 1*1 + 1*1 + 2*2 + 1*1 + 1*1 + 2*2
13 multiplicações
12 somas
[2*(n^4)]/5 🡪 n = 10 🡪 (n^3) = (10^4) = 1000
Questionário M5:

Soma: x + 2 = 1 flops
Produto vetor com vetor: (x+2) *x = 2n – 1 flops
Soma de um vetor com um escalar: n flops
1 + 2n – 1 + n = 3n flops
3n flops 🡪 3*376 = 1128 flops

4n flops 🡪 4*400 = 1600

452*3 = 1356 – 2 = 1354


//*3 pois matriz tridiagonal
//-2 pois matriz diagonal

[4*(n^4)]/3 🡪 n = 14 🡪 (n^4) = (14^4) = 38416

(5*n) - 6 = 5*428 -6 = 2140 - 6 = 2134


//*5 pois matriz pentadiagonal
//-6 pois matriz tridiagonal
5*(2*n) - 6 = 5*(2*260) – 6 = 2594
//*5 pois matriz pentadiagonal
//*2 pois matriz diagonal
//-6 pois matriz tridiagonal

3*n – 3 = 3*370 – 3 = 1107

241081 + (5*1473) = 248446

Aplicar no Scilab:

//Montar uma matriz triangular superior preenchida de ones:


A=ones(306,306) //Aqui dentro dos parênteses tu põem o tamanho da matriz
U=triu(A)

//Função que monta a matriz tridiagonal de n linhas e m colunas:

T=[]
n=306 //Aqui tu altera o tamanho da matriz
m=306 //Aqui tu altera o tamanho da matriz
for i=1:n
for j=1:m
if(abs(i-j) <= 1)
T(i,j)=1;
end

end
end

function [k]=numelementos(N)
n=size(T,1) //n recebe o número de linhas da matriz N
m=size(T,2) //m recebe o número de colunas da matriz N

k=0
for i=1:n
for j=1:m
if(N(i,j)~= 0)
k=k+1;
end
end
end
endfunction
N=(T+U)*(T+U)
[k]=numelementos(N)
//ans = 47580

[(411+1)*411]/2 = 84666

Você também pode gostar