Tipos de soluciones numéricas

Solo disponible en BuenasTareas
  • Páginas : 14 (3299 palabras )
  • Descarga(s) : 0
  • Publicado : 14 de mayo de 2011
Leer documento completo
Vista previa del texto
OBJETIVO:
Este trabajo fue realizado con el objetivo de dar un repaso de los temas vistos en clase, para asi estas listos al 100% para nuestro examen.
INTRODUCCION:
En el siguiente trabajo se presentan algunos de los temas vistos en clase, en este trabajo se presentan los distintos tipos de soluciones numéricas: son seis los métodos que se presentan, el método grafico, los métodos abiertos ylos métodos cerrados:
El método grafico, es en el que se te presenta la ecuación, y sustituyes con los valores de la constante, tabulas y después graficamos.
METODOS CERRADOS:
* METODO DE BISECCION:
Con este método, lo que se busca es determinar la raíz de una ecuación, o sea, su intersección con el eje de las X o su solución, por lo que se debe tener en cuenta que no todas las ecuacionestienen una sola solución, y que no todas tienen solución, así que se debe tener una idea de la forma de la curva de la ecuación antes de comenzar a aplicar el método.
PROGRAMA EN C:
include<stdio.h>
#include<math.h>
#include<String.h>
#include<conio.h>
//Funcion Que Queremos hallar
double f(double x){
return ((pow(x/3, 2))+(9)); //Esta funcion es Y=(X*X*X)/3)+9Reemplazar por la funcion deseada ej: Y=(x*x)+(3*x)+6
}

//biseccion: Retorna el valor de la funcion usando metodo de biseccion
//parametros: a= valor menor al punto
//parametros: b= valor mayor al punto
//parametros: p= el punto que deseamos encontrar
//parametros: errorDeseado = margen de error
double biseccion(double a, double b, double p, double errorDeseado){
double xr,errorAbsoluto; //xr representa el punto intermedio
printf("valor a: %.5f valor b: %.5f\n",a,b);
xr=((b+a)/2);
printf("biseccion a,b: %.5f\n\n\n",f(xr));
//Cambia A o B por el valor del punto dependiendo de cuales se encuentran en medio de p
if(p<xr){
b=xr;
}else{
a=xr;
}
//calcula el error relativo '
errorAbsoluto=fabs(f(p)-fabs(f(xr)));
//Si el margen de error ya esvalido retorna la funcion.
if (errorAbsoluto<errorDeseado){
return xr;
}
else
{
return biseccion(a,b, p, errorDeseado);
}
}
int main(){
printf("f\n", biseccion(-424,146, 7, 0.02)); // introduce un rango amplio
getch();
return 0;
}

PROGRAMA EN MAT-LAB:

%programacion del metodo de biseccion
%grafica para identificar donde se encuentra la raiz
x=[-1:.05:1];%rangp´de valores para graficar
f=@(x) exp(-x)-x; %definicion de funcion no lineal
plot(x,f(x)); grid on; %grafica (x,y), grid on para la malla
%format long; %formato para mayor precision de variables
it=0; %inicializar no. de iteraciones
xr_ant=0; %inicializar valor anterior
er=100; %inicializar valor de error relativo porcentual%valor de error estimado
es=input('error de estimado');
%numero maximo de iteraciones;
itmax=input ('numero maximo de iteraciones:');
%limite izquierdo;
xl=input('valor izquierdo del intervalo, xl= ');
%limite derecho;
xu=input('valor derecho del intervalo,xu= ');
disp(' it xr f(xr) er'); %impresion de variables
disp('--------------------------------');
while(it<itmax)&&(er>es)
%valor de xr
xr_act=(xl+xu)/2.0; %valor actual
%evaluar la funcion con xl y xu;
er=abs((xr_act-xr_ant)/xr_act)*100;
xr_ant=xr_act;
if(f(xl)*f(xr_act)<0)
xu=xr_act;

else
xl=xr_act;
end

%no. de iteeraciones
it=it+1;
X=[it,xr_ant,f(xr_act),er]; %valor que deseoimprimir
disp(X);
end

PRUEBA DE ERROR:

C | FUNCION |
1 | 51.23733765 |
4 | 34.19047157 |
6 | 25.20892131 |
8 | 17.71225754 |
10 | 11.42152149 |
12 | 6.113943076 |
14 | 1.611116355 |
16 | -2.230260706 |
18 | -5.525650499 |
20 | -8.368384465 |
22 | -10.83415763 |
24 | -12.98457409 |
26 | -14.86994947 |
28 | -16.53153084 |
30 | -18.00325892 |
32 |...
tracking img