Métodos numéricos: Gauss-Jordan y Newton-Raphson

Anuncio
* Método de Newton−Raphson.
OBJETIVO.
Este método consiste de proporcionar un Xi inicial de aproximación a la raíz analítica r en seguida se evalúa
la función en Xi obteniendo se f(Xi) se traza una recta tangente que intercepta en Xi+1al eje de las X. A este
punto se le llama raíz nueva de aproximación a la r.
Algoritmo:
1. Dada una función f(X)=0 Obtener la Primera y Segunda derivada.
2. Elegir un valor inicial X0. Este valor inicial debe cumplir con el criterio de convergencia:
3. Obtener una nueva aproximación evaluando la formula general del método:
Xn+1=Xn − f(Xn)/ f ´(Xn)
4. Evaluar la aproximación relativa
| (Xn+1 − Xn) / Xn+1 | < Tolerancia
No. (Falso) Repetir el paso 3 y 4
Si . (Verdadero) Entonces Xn+1 Es la Raíz
Si existe una función f(x)=0 y un intervalo [a,b], tenemos una raiz y xo una aproximación de , se extrae de
la llamada Serie de Taylor (tomando hasta la 2ª potencia) :
Despejando , se tiene:
Siguiendo esto como una sucesión, se tiene:
Tenemos la fórmula de Newton−Raphson. Además, existe un estudio de la convergencia del método, en
donde G(x) se acota, teniendo la fórmula de convergencia como:
Cabe señalar que el método de Newton−Raphson es convergente en forma cuadrática, es decir, que el número
de cifras decimales correctas se duplica aproximadamente en cada iteración, o el error es aproximadamente
proporcional al cuadrado del error anterior.
La ventaja de este método es que, al ser un método iterativo, éste entrega una sucesión , resoluciones
aproximadas, convergiendo más rápidamente al valor buscado y se usan menos operaciones aritméticas.
Método de Gauss−Jordan.
Es una variante del método de Gauss y consiste en producir ceros en toda posición no diagonal de cada
columna j, ubiando por operación unos en la posición (j,j).Esto es:
1
[a,b]![I,x]
donde I es la matriz identidad de orden n, y x es la solución del sistema Ax=b.
Este método se conoce como método directo para resolver ecuaciones lineales tipo Ax=b, donde en un
número finito de pasos da la solución exacta.Además, es eficiente cuando la matriz A posee elelmentos no
nulos, los que son más fáciles de aplicarles operaciones matemáticas.
Programa en C++
#include<stdio.h>
#include<conio.h>
void main()
{
int n,m,i,j,k;
float a[25][26],b[25][26],apoyo;
clrscr();
printf("\n MÉTODO DE GAUSS−JORDAN");
printf("\n\n Ingrese el nº de incógnitas \n\n Nº de Ecuaciones = ");
scanf("%d",&n);
printf("\n Ingrese coeficientes\n");
/* Datos para iniciar método */
for(i=1;i<=n;i++)
{
printf("\n Fila %d \n",i);
for(j=1;j<=n+1;j++)
{
printf(" Ingese a(%d,%d) = ",i,j);
scanf("%f",&a[i][j]);
}
}
2
/* Fin Del Ciclo De Solicitud De Datos */
/* Proceso Principal */
m=n+1;
do
{
if(a[1][1]==0)
{
k=m−1;
for(i=2;i<=k;i++)
{
if(a[i][1]!=0)
{
for(j=1;j<=m;j++)
{
apoyo=a[i][j];
a[i][j]=a[1][j];
a[1][j]=apoyo;
}
}
}
}
else
{
for(j=2;j<=m;j++)
{
for(i=2;i<=n;i++)
3
{
b[i−1][j−1]=a[i][j]−a[1][j]*a[i][1]/a[1][1];
}
}
for(j=2;j<=m;j++)
{
b[n][j−1]=a[1][j]/a[1][1];
}
m=m−1;
for(j=1;j<=m;j++)
{
for(i=1;i<=n;i++)
{
a[i][j]=b[i][j];
}
}
}
}
while(m>1);
printf("\n\n SOLUCION DEL SISTEMA\n ");
for(i=1;i<=n;i++)
{
printf("\n X(%d) = %1.4f",i,a[i][1]);
}
printf("\n\n Fin del programa");
getch();
4
}
Universidad Católica de la
Santísima Concepción.
Facultad de Ingeniería.
Area ciencias Básicas.
5
Documentos relacionados
Descargar