GAUSS COM PIVOTEAMENTO

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Programação de Computadores
TÉCNICAS DE PROGRAMAÇÃO I
ESTRUTURAS DO TIPO FILA
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
Estrutura de Dados I Profº.: ABC Sampaio
PROGRAMAÇÃO MODULAR (com uso de subprogramas) prof
Adaptado de material da profa. Maria Aparecida Livi
Algoritmos e Programação Estruturada Conceitos básicos
Paulo Henrique Graf Fernandes
{Exemplo de um programa PASCAL} uses CRT; var
Algoritmos e Estruturas de Dados II
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
Paradigmas de programação
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Variáveis, Tipos de Dados e Constantes
O Portal do Estudante de Computação
FATORAÇÃO LU.
Exercícios de revisão.
MÉTODO JACOBI.
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Aula prática 6 Vetores e Matrizes
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Estrutura de Dados Unidade 16 Simulação da função Fatorial utilizando recursão – 16.1 Prof. Dr. Roberto Ferrari Jr.
Introdução a Programação COM 100 Aula 07 Procedimentos.
Introdução a Programação COM 100
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Introdução ao uso de vatores na linguagem PASCAL.
Aula prática 6 Vetores e Matrizes
Programação e Estrutura de Dados
Computação Eletrônica
Lógica de Programação/ Algoritmos Engenharia Produção 2014
Computação Eletrônica Subprograma. Função O que este programa faz? Program funcao; var n,x: real; begin write('Entre n: '); readln(n); x := cos(n); write(x);
Computação Eletrônica
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Linguagem PASCAL1 Módulo 3 Estrutura de Dados.. Linguagem PASCAL2 Arrays (“Variáveis compostas homogêneas”) n Arrays unidimensionais: identificador: array.
ARQUIVOS.
Aula 11 – 24/05/2014 Arquivos textos. Manipulação de arquivos texto O armazenamento de dados em arquivos é muito utilizado em aplicações pois os dados.
“Introdução a Computação” Capítulo II Estruturas de Dados
Computação Eletrônica
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Computação Eletrônica
Algoritmos e Programação
Professor Ulisses Vasconcelos
Estruturas de Dados + Algoritmos = Programas
Técnicas de Programação I
Computação Eletrônica Variáveis Reais e Booleanas.
Manual de Referência Pascal. write Memória Monitor / Teclado write(‘Como vai?’); x 30 y 5 O computador escreve o texto entre aspas no monitor. A memória.
Arquivos. Motivação Imagine dar entrada (digitar), a cada execução do programa, em todos os dados de um sistema. por exemplo, todos os registro de livros.
Subprogramas : Procedimentos (procedures) em Pascal
Introdução à Programação
Computação Eletrônica
AULA 09 PROGRAMAÇÃO I. Estruturas de Dados Heterogêneas 10/08/2010 Programação I 2 Objetivo: Estudar os tipos de dados heterogêneos:  Registros;  Arrays.
Computação Eletrônica Strings. Strings (Cadeias de Caracteres) Um string é um texto. Em Pascal, este texto deve ser delimitado por aspas simples. Exemplo:
Linguagens de Programação Pedro Lopes MÓDULO 4- Subprogramas (Procedimentos e Funções) 2010/2011.
MODULARIZAÇÃO Técnica utilizada e tida como vantajosa na confecção de programas. Consiste em dividir o programa em diversos módulos ou sub-programas, de.
Aula Prática 6 Vetores e Matrizes Monitoria
Computação Eletrônica Variáveis Inteiras. A memória A memória pode ser vista como um imenso gaveteiro Em cada gaveta, guardamos uma informação. Por exemplo,
Estruturas de repetição ou ciclos
Programação e Sistemas da Informação 48 tempos IPTrans, Novembro 2009 Prof. Marisa Gomes.
Lógica de Programação Curso Técnico em Informática – Escola Olímpio Professor Marcelo Josué Telles
SUB-ROTINAS EM PASCAL PROGRAMAÇÃO MODULARIZADA 252.
Vetores.
Transcrição da apresentação:

GAUSS COM PIVOTEAMENTO

CÓDIGO EM PASCAL Program GaussPivoteamento; {$APPTYPE CONSOLE} Uses {Esta sessão pertence ao Delphi} SysUtils; var //declaração de variáveis i, j, k, z, n, cont, comp, c: integer; // n é a ordem da matriz quadrada A A: array[1..50, 1..50] of real; // matriz A a ser usada no método de Gauss com pivoteamento parcial b, x: array[1..50] of real; // vetor b do sistema linear (Ax=b) aux, pivo, primeiro, q, blinha: real;

CÓDIGO EM PASCAL Begin {inicia-se aqui o bloco de programação} writeln('Entre com a ordem da matriz A: ');{este comando escreve uma mensagem na tela} readln(n); // armazena em n a ordem da matriz quadrada A{este comando lê uma entrada do teclado} for i:=1 to n do // percorre as linhas de i até n que foi dada acima este é o o primeiro laço begin for j:=1 to n do //percorre as colunas de j até n este é o segundo laço e deve ser terminado primeiro writeln('Entre com A', i, j, ': '); escreve a posição i e j e espera que ela seja dada por uma entrada de teclado readln(A[i,j]); // lê um elemento por vez end;fim do laço dentro de j end;fim do laço dentro de i for i:=1 to n do // percorre as linhas do vetor b writeln('Entre com B', i, ': '); readln(b[i]); // lê um elemento por vez end;

CÓDIGO EM PASCAL for i:=1 to n do // imprime a matriz A antes do processo para que se possa visualizar as posições de cada termo na forma de matriz este é o laço de impressão das linhas “ i ” begin inicio do laço “ i ” for j:=1 to n do laço para as colunas begin inicio do laço write(A[i,j],' '); escreve a matriz A na forma de entrada end; fim do laço de j writeln(''); salta uma linha end; fim do laço de i writeln(''); for i:=1 to n do // imprime o vetor b antes do processo begin writeln(b[i]); escreve o vetor b end;

CÓDIGO EM PASCAL j:=1; começam aqui as analises while(j<n) do enquanto j for menor que n faça begin i:=1; while(i<=(n-j)) do if( abs(A[j+i,j])>abs(A[j,j]) )then // [j,j] é a posição onde ficará o pivô, se o elemento da mesma coluna e de uma linha abaixo for maior em módulo então k:=j; while(k<=n) do // troca-se a linha inteira aux:=A[j+i,k]; // aux: variável para auxiliar a troca dos valores posição por posição A[j+i,k]:=A[j,k]; A[j,k]:=aux; k:=k+1; // incrementa k, k percorre as colunas de A nas linhas envolvidas no processo de troca end; aux:=b[j+i]; // troca as linhas correspondentes no vetor b b[j+i]:=b[j]; b[j]:=aux;

CÓDIGO EM PASCAL pivo:=A[j,j]; // depois da troca temos o pivô (maior elemento) no local correto [j,j] (diagonal) primeiro:=A[j+i,j]; // primeiro elemento da coluna do pivô (j) e da linha i+j if(pivo<>0) then // se o pivo for diferente de zero begin b[j+i]:=b[j+i] - (primeiro/pivo)*b[j]; // subtrai (fator)*b[j] do elemento de b na posição i+j z:=j; while(z<=n) do // produz zeros abaixo do pivô A[j+i,z]:=A[j+i,z]-(primeiro/pivo)*A[j,z]; // quando z=j, A[j,j] é o pivô e então A[j+i,j]=A[j+i,j]-A[j+i,j]=0 z:=z+1; end; i:=i+1; j:=j+1;

CÓDIGO EM PASCAL for i:=1 to n do // imprime a matriz A depois do processo terminado begin for j:=1 to n do write(A[i,j],' '); end; writeln(''); for i:=1 to n do // imprime o vetor b depois do processo terminado writeln(b[i]);

CÓDIGO EM PASCAL //calcula o vetor solução x do sistema linear Ax=b cont:=0; // contará o numero de elementos (na posição pivô) nulos j:=n; if(A[j,j]<>0) then // verifica se o ultimo pivô não é nulo begin x[j]:=b[j]/A[j,j]; // calcula o ultimo elemento do vetor solução end else cont:=cont+1; // conta um pivô nulo blinha:=b[j]; // blinha é o b[j] da linha correspondente ao pivô nulo for c:=1 to (n-1) do blinha:=blinha-(A[j,c]*x[c]); end; if(blinha=0)then //se blinha é zero comp:=1; // sistema compativel e indeterminado end else comp:=2; // senão incompativel

CÓDIGO EM PASCAL j:=j-1; while(j>=1) do // faz o mesmo para os pivôs das outras linhas begin if(A[j,j]<>0) then i:=n; x[j]:=b[j]; while(i>j) do x[j]:=x[j]-(x[i]*A[j,i]); i:=i-1; end; x[j]:=x[j]/A[j,j]; end

CÓDIGO EM PASCAL else begin cont:=cont+1; blinha:=b[j]; for c:=1 to (n-1) do blinha:=blinha-(A[j,c]*x[c]); end; if(blinha=0)then comp:=1; end else comp:=2; j:=j-1;

CÓDIGO EM PASCAL if(cont=0) then begin writeln(''); writeln('X:'); for i:=1 to n do // imprime o vetor solução x writeln(x[i]); end; end else if(comp=1)then writeln('Sistema compativel e indeterminado. '); end else writeln('Sistema incompativel.'); readln(q); end.