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 vbModal
End Sub
Private Sub Command2_Click()
  If (MsgBox("Deseja realmente encerrar o programa ?", vbYesNo, "Encerrar")) = vbYes Then
      Unload Me
  End If
End Sub
Private Sub Form_Load()
 'Atribui numeros de 1 a 10 ao combobox
  For n = 1 To 10
    cboDimensao.AddItem n
Next n
'A dimens�o padr�o � um sistema 2 x 2
cboDimensao.Text = 2
Call 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_Substituicao
End Sub
 
Private Sub cboDimensao_Click()
    Call Esconde_TextBoxes
End 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 = False
Next n

'esconde as etiquetas com '=' => label2(0) a label2(9)
For n = 0 To 9
    Label2(n).Visible = False
Next n

'Exibe os TextBoexes para a dimens�o do sistema escolhido
For 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_A
For 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 m
Next n

'Cria o array_B (constantes)
For n = 1 To Dimensao_Sistema_Linear
   Array_B(n) = Val(Text1(99 + n))
Next n
End 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)
    Next
Next
'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 matriz
For 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 n
Next k

Exit Sub

trataErro:
Dim mensagem As String
Dim resposta As String
mensagem = "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 triangular
Determinant_1 = 1 'inicia o produto
For n = 1 To Dimensao_Sistema_Linear
   Determinant_1 = Determinant_1 * Triangular_A(n, n)
Next n
'define determinante
Text2.Text = CStr(Determinant_1)
'define a solu��o nas caixas de texto textboxes
For n = 1 To Dimensao_Sistema_Linear
   Text1(109 + n).Text = CStr(Solucoes(n))
Next n
Exit 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 Select
End 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 ... 

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

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.