• Nenhum resultado encontrado

Revisão Aula 17 INF Prof. Lucas Mello Schnorr 1 / 12

N/A
N/A
Protected

Academic year: 2021

Share "Revisão Aula 17 INF Prof. Lucas Mello Schnorr 1 / 12"

Copied!
14
0
0

Texto

(1)

Revisão Aula 17

INF01202

(2)

Exercício #1 (Matriz transposta)

Preencha (com números aleatórios de 1 a 99, supondo que a semente de números aleatórios seja 0) uma matriz quadrada (de inteiros) de ordem 10 e obtenha a sua transposta. Imprima as duas matrizes para averiguação.

(3)

(#1) Code rev-a17-transposta.c

#include <stdio.h> #include <stdlib.h> //Limites da nossa matriz #define ORDEM 10

//Limites de valores aleatórios #define MIN 1

#define MAX 99

int main(){

//A matriz m e seus índices int m[ORDEM][ORDEM] = {0}; int mt[ORDEM][ORDEM] = {0}; int l, c;

// Define a semente para aleatórios srand(0);

// inicializar a matriz // com valores aleatórios for (l = 0; l < ORDEM; l++)

for (c = 0; c < ORDEM; c++) m[l][c] =

MIN+(rand()%(MAX-MIN+1));

// gera a transposta for (l = 0; l < ORDEM; l++) for (c = 0; c < ORDEM; c++) mt[l][c] = m[c][l]; // imprime m printf("Original:\n"); for (l = 0; l < ORDEM; l++){ for (c = 0; c < ORDEM; c++) printf("%2d ", m[l][c]); printf("\n"); } // imprime mt printf("Transposta:\n"); for (l = 0; l < ORDEM; l++){ for (c = 0; c < ORDEM; c++) printf("%2d ", mt[l][c]); printf("\n"); } return 0; }

(4)

Exercício #2 (Sistema de Equações Lineares)

Suponha um n máximo.

Ex

:Escrever um programa que leia do teclado os coeficientes de um sistema linear triangular superior, os termos independentes, e calcule (imprimindo na tela) o vetor solução. Assuma que o sistema possui solução única.

Dica: um sistema linear triangular superior de ordem n pode ser escrito na forma:

Cortesia: Prof. Claudio Jung

(5)

(#2) Sistema linear

Caso geral          a11x1+ a12x2+ ... + a13xn= b1 a21x1+ a22x2+ ... + a23xn= b2 ... an1x1+ an2x2+ ... + an3xn= bn

Exemplo com 3 incógnitas      a11x1+ a12x2+ a13x3 = b1 a21x1+ a22x2+ a23x3 = b2 a31x1+ a32x2+ a33x3 = b3

Caso triangular superior do exemplo      a11x1+ a12x2+ a13x3 = b1 a22x2+ a23x3 = b2 a33x3 = b3

(6)

(#2) Sistema linear

Caso geral          a11x1+ a12x2+ ... + a13xn= b1 a21x1+ a22x2+ ... + a23xn= b2 ... an1x1+ an2x2+ ... + an3xn= bn

Exemplo com 3 incógnitas      a11x1+ a12x2+ a13x3 = b1 a21x1+ a22x2+ a23x3 = b2 a31x1+ a32x2+ a33x3 = b3

Caso triangular superior do exemplo      a11x1+ a12x2+ a13x3 = b1 a22x2+ a23x3 = b2 a33x3 = b3 5 / 12

(7)

(#2) Sistema linear

Caso geral          a11x1+ a12x2+ ... + a13xn= b1 a21x1+ a22x2+ ... + a23xn= b2 ... an1x1+ an2x2+ ... + an3xn= bn

Exemplo com 3 incógnitas      a11x1+ a12x2+ a13x3 = b1 a21x1+ a22x2+ a23x3 = b2 a31x1+ a32x2+ a33x3 = b3

Caso triangular superior do exemplo      a11x1+ a12x2+ a13x3 = b1 a22x2+ a23x3 = b2 a33x3 = b3

(8)

(#2) Versão computacional

Caso triangular superior do exemplo com 3 incógnitas      a11x1+ a12x2+ a13x3 = b1 a22x2+ a23x3 = b2 a33x3 = b3

Versão computacional (com matrizes e vetores)   a11 a12 a13 0.0 a22 a13 0.0 0.0 a33     x1 x2 x3  =   b1 b2 b3  

Nomes para estes três elementos

[ Matriz Coecientes ] [ Vetor Solução ] = [ Vetor Termos Independentes ]

(9)

(#2) Estratégia + Planejamento

Estratégia de retrossubstituição para resolução de sistemas triangulares Veja este video, procure extrair o algoritmo

https://www.youtube.com/watch?v=53QVmZpZQ0M

Exemplo de teste com 4 incógnitas, do video acima     3.0000 1.0000 1.0000 1.0000 0.0000 1.6667 0.6667 1.6667 0.0000 0.0000 0.4000 0.0000 0.0000 0.0000 0.0000 −1.0001         x1 x2 x3 x4     =     6.0000 4.0002 0.4001 −1.0003    

(10)

(#2) Algoritmo de retrossubstituição

Caso triangular superior de um exemplo com quatro incógnitas          a11x1+ a12x2+ a13x3+ a14x4 = b1 a22x2+ a23x3+ a24x4 = b2 a33x3+ a34x4 = b3 a44x4 = b4 Passo 1 → x4 = b4 a44 Passo 2 → x3 = b3− a34x4 a33 Passo 3 → x2 = b2− a23x3− a24x4 a22 Passo 4 → x1 = b1− a12x2− a13x3− a14x4 a11 8 / 12

(11)

(#2) Algoritmo de retrossubstituição (Computacional)

    a11 a12 a13 a14 0.0 a22 a13 a24 0.0 0.0 a33 a34 0.0 0.0 0.0 a44         x1 x2 x3 x4     =     b1 b2 b3 b4    

1. Para cada linha l do vetor solução (da linha n até 1)

1.1 Calcula o numerador na variável aux

1.1.1 Inicializa variável aux da linha l do vetor independente 1.1.2 Para cada coluna c da matriz (do valor l+1 até n)

1.1.1 Subtrai de aux o termo a[l][c]*x[c];

(12)

(#2) Code rev-a17-sistema.c

#include <stdio.h> #define MAX 5 int main () { // Qtdade de incógnitas int n; // Matriz de Coeficientes float a[MAX][MAX] = {0}; // Vetor de Termos Indep. float b[MAX] = {0}; // Vetor solução float x[MAX] = {0}; // Auxiliar (numerador) float aux; // Índices int l, c; // leitura de n do {

printf("Entre o tamanho (n) do " "sistema (n <= %d): ", MAX); scanf("%d", &n);

} while (n > 0 && n > MAX);

// Leitura dos dados de entrada for (l = 0; l < n; l++) {

for (c = l; c < n; c++) {

printf("Coeficiente a(%d,%d): ", l+1, c+1);

scanf("%f", &a[l][c]); }

printf("Termo independente b(%d): ", l+1);

scanf("%f", &b[l]); }

// Resolucao por retrossubstituicao for (l = n - 1; l >= 0; l--) {

aux = b[l];

for (c = l + 1; c < n; c++) aux = aux - a[l][c] * x[c]; x[l] = aux / a[l][l]; }

// Impressao da solucao

printf("O vetor solucao é: \n");

for (l = 0; l < n; l++)

printf("x_%d = %f\n", l+1, x[l]);

return 0;

(13)

(#2) Zoom no Algoritmo versus Programa

1. Para cada linha l do vetor solução (da linha n até 1)

1.1 Calcula o numerador na variável aux

1.1.1 Inicializa variável aux da linha l do vetor independente 1.1.2 Para cada coluna c da matriz (do valor l+1 até n)

1.1.1 Subtrai de aux o termo a[l][c]*x[c];

1.2 Dene a posição l do vetor solução como aux/a[l][l]

// ...

// Resolucao por retrossubstituicao for (l = n - 1; l >= 0; l--) {

aux = b[l];

for (c = l + 1; c < n; c++) aux = aux - a[l][c] * x[c]; x[l] = aux / a[l][l]; } // ... Elementos     a11 a12 a13 a14 0.0 a22 a13 a24 0.0 0.0 a33 a34 0.0 0.0 0.0 a44         x1 x2 x3 x4     =     b1 b2 b3 b4    

Lembrete do último passo para x1

x1 = b1− a12x2− a13x3− a14x4 a11

(14)

(#2) Testes com o exemplo de video

    3.0000 1.0000 1.0000 1.0000 0.0000 1.6667 0.6667 1.6667 0.0000 0.0000 0.4000 0.0000 0.0000 0.0000 0.0000 −1.0001         x1 x2 x3 x4     =     6.0000 4.0002 0.4001 −1.0003    

Automatizando a entrada dos dados em bash (terminal do Linux)

gcc rev-a17-sistema.c

echo "4 3 1 1 1 6 1.6667 0.6667 1.6667 4.0002 0.4000 0 0.4001 -1.0001 -1.0003" | ./a.out

Entre o tamanho (n) do sistema (n <= 5): Coeficiente a(1,1): Coeficiente a(1,2): Coeficiente a(1,3): Coeficiente a(1,4): Termo independente b(1): Coeficiente a(2,2): Coeficiente a(2,3): Coeficiente a(2,4): Termo independente b(2): Coeficiente a(3,3): Coeficiente a(3,4): Termo independente b(3): Coeficiente a(4,4): Termo independente b(4): O vetor solucao é: x_1 = 0.999930

x_2 = 0.999760 x_3 = 1.000250 x_4 = 1.000200

Referências

Documentos relacionados

Ao conduzir a alta velocidade evite travagens bruscas para evitar uma queda , não use os travões da frente para que você pode mover seu centro de gravidade e causar um

aprovada, será assinada pela Presidente, Professora Nilda de Fátima Ferreira Soares e

Se a temperatura interna no forno for superior àquela proposta para o programa escolhido, o display TEMPERATURA irá mostrar a escrita “Hot” e não será possível iniciar a

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Entre as atividades, parte dos alunos é também conduzida a concertos entoados pela Orquestra Sinfônica de Santo André e OSESP (Orquestra Sinfônica do Estado de São

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

A partir das hipóteses presentes na literatura referente ao efeito incremental e à importância da majoração da inércia das vigas de transição para obter valores de esforços para

Desta forma, os preços do feijão extra nota 9 são de R$ 145,00 a saca de 60 quilos, aumento de 1,75% em relação ao preço da semana passada; R$ 132,50 para o carioca especial, R$