Sistemas de Ecuaciones Lineales

12
 U.M.S.A. Facultad de Ingeniería Programación y Análisis Numérico PRQ-404  Sistemas de Ecuaciones Lineales Resolución por el método de la matriz inversa Objetivos:  Crear un programa para resolver sistemas de ecuaciones lineales basado s en datos.  Comprobar que el programa funcione resolviendo el problema 17,14 del libro ‘Métodos Numéricos’ – Steven C. Chapra. Fundamento Teórico.- El método en cuestión es usado en su mayoría para realizar un ajuste de curvas de datos obtenidos experimentalmente, para así hallar una ecuación para aplicar al problema y resolverlo. Cuando los datos tienen errores sustanciales y no se pueden aplicar los métodos tradicionales de regresión lineal, logarítmica o exponencial, entonces se recurre a usar este método para poder ajustar la curva de modo que se puedan obtener resultados más exactos. Es que en estos casos se realiza una regresión polinomial, resuelta para este paso por el método de matriz inversa. El procedimiento de mínimos cuadrados se puede extender fácilmente y ajustar datos a un polinomio de grado n:  En este caso la suma de los cuadrados es:  Que a la larga nos llevara al siguiente conjunto de ecuaciones      .  

description

Programacion en visula 2010 metodos numericos

Transcript of Sistemas de Ecuaciones Lineales

U.M.S.A.Facultad de IngenieraProgramacin y Anlisis Numrico PRQ-404Sistemas de Ecuaciones LinealesResolucin por el mtodo de la matriz inversaObjetivos: Crear un programa para resolver sistemas de ecuaciones lineales basados en datos. Comprobar que el programa funcione resolviendo el problema 17,14 del libro Mtodos Numricos Steven C. Chapra.Fundamento Terico.- El mtodo en cuestin es usado en su mayora para realizar un ajuste de curvas de datos obtenidos experimentalmente, para as hallar una ecuacin para aplicar al problema y resolverlo.Cuando los datos tienen errores sustanciales y no se pueden aplicar los mtodos tradicionales de regresin lineal, logartmica o exponencial, entonces se recurre a usar este mtodo para poder ajustar la curva de modo que se puedan obtener resultados ms exactos. Es que en estos casos se realiza una regresin polinomial, resuelta para este paso por el mtodo de matriz inversa.El procedimiento de mnimos cuadrados se puede extender fcilmente y ajustar datos a un polinomio de grado n:

En este caso la suma de los cuadrados es:

Que a la larga nos llevara al siguiente conjunto de ecuaciones

.

Entonces el problema de resolver un polinomio de grado m con mnimos cuadrados es equivalente a resolver un sistema de m+1 ecuaciones lineales simultneas.Una vez realizado el proceso de la generacin de ecuaciones se puede resolver por distintos mtodos, como la eliminacin gaussiana, etc. Para este caso elegimos el mtodo de la matriz inversa.El uso de este mtodo es aplicable cuando se tiene una curva y una regresin lineal representa pobremente la curva. Como por ejemplo los datos en el laboratorio:

Algoritmo.- Paso 1: Elegir el nmero de orden o grado.Paso 2: De acuerdo al orden calcular x2, x3, etc. As como xy, x2y, etc. Para cada uno de los datos proporcionados por el problema.Paso 3: Calcular las sumatorias para cada columna.

Paso 4: Ordenar el sistema de ecuaciones

Paso 5: Resolver el sistema de ecuaciones por el mtodo de matriz inversa.Diagrama de flujo:

Resolucin del problema: Despus de graficar se ve que el orden para un mejor ajuste en la curva, es de orden 3 entonces se resuelve el problema para orden 3:Los datos del problema son:N datosXY

1517

21024

31531

42033

52537

63037

73540

84040

94542

105041

Sumatoria275342

Los datos de la sumatoria son:X2X3X4X5X6X*YX2*YX3*Y

25125625312515625854252125

1001000100001000001000000240240024000

225337550625759375113906254656975104625

400800016000032000006400000066013200264000

62515625390625976562524414062592523125578125

9002700081000024300000729000000111033300999000

12254287515006255252187518382656251400490001715000

160064000256000010240000040960000001600640002560000

202591125410062518452812583037656251890850503827250

250012500062500003125000001,5625E+1020501025005125000

9625378125158331256900781253,0913E+101042537997515199125

Donde lo resaltado con negritas son las sumatorias.Entonces con estos resultados se arma el conjunto de ecuaciones:

Que puede ordenarse como matrices:

Este es un sistema de la forma:

Donde la inversa de la matriz A ser:

La cual debe multiplicarse con la matriz B, con lo cual se obtiene la matriz C:

Y con estos resultados se arma la ecuacin de la curva:

El grfico de la curva es:

Para la programacin en visual:Formulario de inicio:

Public Class Inicio

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Form1.Show() Me.Hide() End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click End End SubEnd Class

Formulario del programa:

Public Class Form1

Dim A(,), B(,), C(,), U(,), V(,), Sol(,), Ind(,), R(,) As Double Dim n, resp, p, k, s, q, orden, sum, yes As Integer Dim d, g As Double 'Matriz Inversa Dim Inv1(,), Inv2(,), Inv3(,) As Double Dim m1, m2, m3 As Integer 'Matriz Inversa RPOGRASMA Dim NN As Integer Dim AA(,) As Single Dim BB(,) As Single Dim UU(,), VV(,), ANSs(,), INVv(,), PRODD(,), RESULTT(,) As single Dim RESPP As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click n = Val(InputBox("Introducir el numero de pares de datos n que se tienen")) TextBox1.Text = Str(n)

'Matriz A DataGridView1.RowCount = n DataGridView1.ColumnCount = 2 ReDim A(n, 2)

'introduccion deDatos For i = 0 To n - 1 For j = 0 To 1

A(i, j) = Val(InputBox("Introducir Datos")) DataGridView1.Item(j, i).Value = A(i, j) Next Next

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Do Dim i, j As Integer resp = MsgBox("Desea cambiar un dato?", 4, "") If resp = 7 Then Exit Do End If i = Val(InputBox("numero de fila")) - 1 j = Val(InputBox("numero de columna")) - 1 A(i, j) = Val(InputBox("introducir Nuevo Dato")) DataGridView1.Item(j, i).Value = A(i, j) Loop While resp = 6

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click p = n - 1 TextBox2.Text = Str(p)

'Matriz B DataGridView2.RowCount = n DataGridView2.ColumnCount = 2 * p ReDim B(n, 2 * p)

'generacion de la primera tabla For i = 0 To n - 1 k = 1 While k