jueves, 4 de octubre de 2012

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) :
Métodos numéricos: Gauss-Jordan y Newton-Raphson


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:
[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]);
}
}
/* 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++)
{
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();
}

No hay comentarios:

Publicar un comentario