Qual o método mais eficiente para resolver sistemas lineares com 2 incógnitas?

Consideramos um sistema de m equa��es lineares a n inc�gnitas com coeficientes reais, escrita  sob forma matricial como Ax = b , e resolver o sistema significa discutir a exist�ncia de solu��es e obter o conjunto solu��o quando for poss�vel . Um dos m�todos eficientes mais utilizados para isso � o M�todo da Elimina��o de Gauss .

O m�todo de elimina��o de Gauss

O m�todo consiste em transformar o sistema linear original para se obter um sistema linear equivalente com mesmo conjunto solu��o , usando o m�todo do escalonamento . Podem ser efetuadas as seguintes opera��es que n�o alteram o conjunto solu��o dos sistemas :

( i ) trocar as posi��es de duas equa��es ;
( i i ) multiplicar uma equa��o por uma constante n�o nula ;
( i i i ) adicionar um m�ltiplo n�o nulo de uma equa��o a uma outra equa��o ;

Efetuam-se as opera��es acima at� obter a forma escalonada do sistema, A' x = b' , equivalente ao sistema original A x = b.

Abaixo temos a tela principal do programa feito em VB que implementa esta solu��o. A interface gr�fica permite trabalhar com uma matriz de 10x10 mas o algoritmo funciona em qualquer situa��o. O autor do programa n�o � conhecido. Eu apenas fiz alguns ajustes.

Fa�a o teste com o seguinte sistema de equa��es : (Se quiser pode calcular manualmente...)

O programa consiste de um m�dulo contendo as defini��es para as vari�veis globais usadas no projeto:

Private Sub Command1_Click() frmAJuda.Show vbModalEnd Sub Private Sub Command2_Click() If (MsgBox("Deseja realmente encerrar o programa ?", vbYesNo, "Encerrar")) = vbYes Then Unload Me End IfEnd Sub Private Sub Form_Load() 'Atribui numeros de 1 a 10 ao combobox For n = 1 To 10 cboDimensao.AddItem nNext n 'A dimens�o padr�o � um sistema 2 x 2cboDimensao.Text = 2Call Esconde_TextBoxes End Sub  'Resolver um sistema de equacao lineares do tipo [A]{x}={b} para {x}'e calcula o determinando da matriz [A]Private Sub cmdResolveEquacao_Click() Call Cria_Matrizes Call Cria_Matriz_Triangular Call Retorna_SubstituicaoEnd Sub Private Sub cboDimensao_Click() Call Esconde_TextBoxesEnd Sub Sub Esconde_TextBoxes() Dim n As Integer Dimensao_Sistema_Linear = Val(cboDimensao.Text) 'Dimensao da Matrix [A]'esconde todos os textboxes : Existem 120 textboxes no formul�rio de text1(0) a text1(119)'de 0-99 para a matrix [A]'de 100-109 para o array de constantes {b}'de 110-119 para o array de solu��es {x}For n = 0 To 119 ' Text1(n).Visible = FalseNext n 'esconde as etiquetas com '=' => label2(0) a label2(9)For n = 0 To 9 Label2(n).Visible = FalseNext n 'Exibe os TextBoexes para a dimens�o do sistema escolhidoFor n = 0 To Dimensao_Sistema_Linear - 1 Label2(n).Visible = True '= Text1(100 + n).Visible = True 'array de constantes {b} Text1(110 + n).Visible = True 'array de solu��es {x} For k = 0 To 10 * (Dimensao_Sistema_Linear - 1) Step 10 Text1(n + k).Visible = True 'matriz [A] Next k Next n End Sub Sub Cria_Matrizes()'Cria as matrizes [A] e {B} do sistema linear [A]*{x}={B}'atribuindo valores a partir dos TextBoxes'Foi implementado uma matriz de dimens�o m�xima de 10x10 mas pode ser aumentado 'cria Matriz_AFor n = 1 To Dimensao_Sistema_Linear For m = 1 To Dimensao_Sistema_Linear Matriz_A(n, m) = Val(Text1(m - 1 + (n - 1) * 10)) Next mNext n 'Cria o array_B (constantes)For n = 1 To Dimensao_Sistema_Linear Array_B(n) = Val(Text1(99 + n))Next nEnd Sub Sub Cria_Matriz_Triangular() ' Usa o m�todo de elimina��o de Gauss a fim de criar a matrix triangular a partir da matriz [A]' A matrix triangularizada Triangular_A � (Dimensao_Sistema_Linear X Dimensao_Sistema_Linear+1)' pois inclui tamb�m o array {b} de constantes'[ a11 a12 a13 | b1 ]'[ a21 a22 a23 | b2 ]'[ a31 a32 a33 | b3 ] etc 'Se o sistema n�o puder ser resolvido => (Determinant = 0)On Error GoTo trataErro Solucao_Problema = False 'Atribui valores a partir da matriz [A]For n = 1 To 10 For m = 1 To 10 Triangular_A(m, n) = Matriz_A(m, n) NextNext 'Atribui valores a partir do array {b}For n = 1 To Dimensao_Sistema_Linear Triangular_A(n, Dimensao_Sistema_Linear + 1) = Array_B(n)Next n 'Triangulariza a matrizFor k = 1 To Dimensao_Sistema_Linear - 1 If Triangular_A(k, k) = 0 Then For n = k To Dimensao_Sistema_Linear If Triangular_A(n, k) <> 0 Then line_1 = n Exit For 'encontra o elemento line_1 diferente de zero Next n 'muda a linha k com line_1 For m = k To Dimensao_Sistema_Linear temporary_1 = Triangular_A(k, m) Triangular_A(k, m) = Triangular_A(line_1, m) Triangular_A(line_1, m) = temporary_1 Next m End If 'Para outras linhas, atribui elemento zero usando: 'Ai1=Aij-A11*(Aij/A11) 'e alterando toda a linha usando a mesma formula para os outros elementos For n = k + 1 To Dimensao_Sistema_Linear If Triangular_A(n, k) <> 0 Then 'se for zero deixa estar multiplier_1 = Triangular_A(n, k) / Triangular_A(k, k) For m = k To Dimensao_Sistema_Linear + 1 Triangular_A(n, m) = Triangular_A(n, m) - Triangular_A(k, m) * multiplier_1 Next m End If Next nNext k Exit Sub trataErro: Dim mensagem As StringDim resposta As Stringmensagem = "Ocorreu um erro durante a solu��o do processo." & vbCrLf & "Verifique se o sistema pode ser resolvido."resposta = MsgBox(mensagem, vbCritical) Solucao_Problema = True End Sub Sub Retorna_Substituicao() On Error GoTo trataErro 'Calcula o array {x} solu��o usando a substitui��o If Solucao_Problema = True Then Exit Sub 'Primeiro , calcula o �ltimo xi (para i=Dimensao_Sistema_Linear)Solucoes(Dimensao_Sistema_Linear) = Triangular_A(Dimensao_Sistema_Linear, Dimensao_Sistema_Linear + 1) /_ Triangular_A(Dimensao_Sistema_Linear, Dimensao_Sistema_Linear) 'substibuicao para o outro xi:For n = 1 To Dimensao_Sistema_Linear - 1 sum_1 = 0 For m = 1 To n sum_1 = sum_1 + Solucoes(Dimensao_Sistema_Linear + 1 - m) * _ Triangular_A(Dimensao_Sistema_Linear - n, Dimensao_Sistema_Linear + 1 - m) Next m Solucoes(Dimensao_Sistema_Linear - n) = (Triangular_A(Dimensao_Sistema_Linear - n, Dimensao_Sistema_Linear + 1) - sum_1) / _ Triangular_A(Dimensao_Sistema_Linear - n, Dimensao_Sistema_Linear - n)Next n 'Calcula o determinante da matriz [A]'Este � o produto dos elementos da diagonal da matriz triangularDeterminant_1 = 1 'inicia o produtoFor n = 1 To Dimensao_Sistema_Linear Determinant_1 = Determinant_1 * Triangular_A(n, n)Next n 'define determinanteText2.Text = CStr(Determinant_1)'define a solu��o nas caixas de texto textboxesFor n = 1 To Dimensao_Sistema_Linear Text1(109 + n).Text = CStr(Solucoes(n))Next nExit Sub trataErro: If Err.Number = 6 Then MsgBox "Informe valores v�lidos para os elmentos da matriz." & vbCrLf & "Se os valores est�o corretos ent�o _ pode n�o existir solu��o para o sistema.", vbCritical Else MsgBox "Erro no. = " & Err.Number & vbCrLf & vbCrLf & Err.Description End If End Sub Private Sub Text1_Change(Index As Integer) 'valida a entra dos valores nas c�lulas Select Case Index Case 0 To 119 If Not ValidaNumero(Text1(Index).Text) Then Text1(Index).Text = "" Text1(Index).SetFocus End If End SelectEnd Sub Private Function ValidaNumero(strText As String) As Boolean ValidaNumero = CBool(strText = "" _ Or strText = "-" _ Or strText = "-." _ Or strText = "." _ Or IsNumeric(strText))End Function

Basta copiar e colar o c�digo acima, lembrando que voc� tem que incluir no formul�rio 120 controles TextBox do tipo array numerados de 0 a 119. (Text1(0)...Text1(119)), um combobox e 3 bot�es de comandos conforme leiaute do formul�rio do projeto abaixo:

At� o pr�ximo artigo ... 

Como resolver um sistema linear com duas incógnitas?

1º passo: seja I a primeira equação e II a segunda, vamos isolar uma das incógnitas em I e II. Escolhendo isolar a incógnita x, temos que: 2º passo: igualar as duas novas equações, já que x = x. 3º passo: substituir o valor de y por -2 em uma das equações.

Quais são os métodos diretos para solução de sistemas de equações lineares?

2.1 - Método de Eliminação de Gauss. ... .
2.2 - Método de Eliminação de Gauss-Jordan. ... .
2.3 - Método de Gauss-Jordan na Inversão de Matrizes. ... .
2.4 - Fatoração de A. ... .
2.5 - Método de Crout. ... .
2.6 - Fatoração de Matrizes Reais Simétricas e Positivo-Definidas. ... .
2.7 - Conclusão..

Qual método numérico pode ser utilizado para a Resolução de sistemas lineares?

O método da Eliminação de Gauss é um método iterativo para a resolução de sistemas lineares.

Toplist

Última postagem

Tag