Foro de elhacker.net

Programación => Java => Mensaje iniciado por: GaLaN GaLaNaSo 3000 en 8 Noviembre 2005, 00:18 am



Título: Metodos Numericos (Metodo Biserccion, falsa posicion,Newton Raphson,Secante)
Publicado por: GaLaN GaLaNaSo 3000 en 8 Noviembre 2005, 00:18 am
necesito estos metodos de preferencia en java vi que alguien los posteo aqui ase algun tiempo no se si alguien los puede volver a compartir se le agradecera muchoo..

si quieren algo a cambio no mas hablen....


Título: Re: Metodos Numericos (Metodo Biserccion, falsa posicion,Newton Raphson,Secante)
Publicado por: Carlos Luna en 11 Abril 2012, 05:27 am
Topa esto espero sea lo que nesesites lo hize en la escuela no todos los metodos funcionan bien pero el de la biseccion si!! y el de la secante saludos

#include<stdio.h>
#include<math.h>

float funcion1(float XI);
float funcion2(float XF);
float funcion3(float XM);
float funcion4(float XI);
float funcion5(float XI);
float funcion6(float XI);
float funcion7(float XI);
float formula1(float XI,float XF);
float formula2(float Xf,float XM);
float formula3(float XI,float FXI,float FXXI);
float formula4(float XI,float XII);
float formula5(float XI,float FXI,float FXIi,float XIi);

int main()
{
int m1,n1,k,z,b,u,v,j,i,a,M,m,N,ka,n,e,c,ren,col,temp;
float XI=0,XF=0,XM,FXI,FXF,FXM,FXIFXF,FXIFXM,E,FXXI,XII,E2=0.003,XIi=0,FXIi,E3=0.0002;
float Matriz[m1][n1],Er,tenp,aa[50][51];
printf("\n\t<------Metodos Numericos------>\n");
do
{

printf("\n\tSeleccione: \n\t\t 1.Metodo de la BISECCION\n\n\t\t 2.Metodo de la TANGENTE\n\n\t\t 3.Metodo de la SECANTE\n\n\t\t 4.Multiplicacion de 2 matrices\n\n\t\t 5.Metodo de Gauss-Jordan\n\n\t\t 6.Metodo de Gauss-Seidel\n\n\t\t 7.Polinomio de Newton\n");
scanf("%d",&u);
system("cls");

switch(u)
{
case 1:

printf("Ingrese los valores del intervalo");
scanf("%f %f",&XI,&XF);
printf("Ingrese el numero de Iteraciones:");
scanf("%d",&j);

printf("\n\n\tn\tXi\tXf\tf(xi)\tf(xf)\tf(xi)*f(xf)\tXm\tf(xm)\tf(xi)*f(xm)\tError\n\n");

for(i=1;i<=j;i++)
{
FXI=funcion1(XI);
FXF=funcion2(XF);
FXIFXF=FXI*FXF;
XM=formula1(XI,XF);
FXM=funcion3(XM);
FXIFXM=FXI*FXM;
E=formula2(XI,XM);

printf("\t%d\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\n",i,XI,XF,FXI,FXF,FXIFXF,XM,FXM,FXIFXM,E);
if(FXIFXM<0)
{
    XF=XM;
}
else
{
    XI=XM;
}
if(FXIFXM < 0)
{
XF=XM;
}
else
{
XI=XM;
if(FXIFXM==0)
{
printf("En XI o XM se encuentra la raiz");
}
}
}
break;

case 2:

printf("Ingrese el Valor de XI");
scanf("%f",&XI);
printf("Ingrese el numero de Iteraciones:");
scanf("%d",&j);

printf("\n\n\tn\tXi\tf(xi))\tf´(xi)\tXi+1\tError\n\n");

for(i=1;i<=j;i++)
{
FXI=funcion4(XI);
FXXI=funcion5(XI);
XII=formula3(XI,FXI,FXXI);
E=formula4(XI,XII);
if(E<0)
{
E=E*(-1);
}
printf("\t%d\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\n",i,XI,FXI,FXXI,XII,E);

if(E<E2)
{
printf("\n\tXi+1=%f Es la raiz\n",XII);
}
else
{
    XI=XII;
}

}
break;

case 3:

printf("Ingrese los valores del intervalo");
scanf("%f %f",&XI,&XIi);
printf("Ingrese el numero de Iteraciones:");
scanf("%d",&j);

printf("\n\n\tn\tXi\tXi-1\tf(Xi)\tf(Xi-1)\tXi+1\tError\n\n");

for(i=1;i<=j;i++)
{
FXI=funcion7(XI);
FXIi=funcion6(XIi);
XII=formula5(XI,FXI,FXIi,XIi);
E=formula4(XI,XII);
if(E<0)
{
E=E*(-1);
}
printf("\t%d\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\t%.4f\n",i,XI,XIi,FXI,FXIi,XII,E);
if(E<E3)
{
printf("\n\tXi+1=%.4f Es la raiz\n",XII);
}
else
{
   XI=XIi;
   XIi=XII;
}

}
break;

case 4:

printf("\n Multiplicacion De Matricez \n");
printf("\n Ingrese los renglones de la Matriz 1\n ");
scanf("%d",&M);
printf("\n Ingrese las columnas de la Matriz 1\n ");
scanf("%d",&N);
printf("\n Ingrese los de renglones de la Matriz 2\n ");
scanf("%d",&m);
printf("\n Ingrese las columnas de la Matriz 2\n ");
scanf("%d",&n);
system("cls");
float matriz1[30][31],matriz2[30][31],aa[30][30],matriz3[30][31];
if(m==N)
{
printf("valor de Matriz1\n ");
for(col=0;col<M;col++)
{
for(ren=0;ren<N;ren++)
{
printf("valor [%d][%d]de matriz1\n ",col,ren);
scanf("%f",&matriz1[col][ren]);
}
}
printf("valor de Matriz2\n ");
for(col=0;col<m;col++)
{
for(ren=0;ren<n;ren++)
{
printf("valor [%d][%d]de matriz2\n ",ren,col);
scanf("%f",&matriz2[col][ren]);
}
}
printf("\nMatriz A=\n");
for(col=0;col<M;col++)
{
for(ren=0;ren<N;ren++)
{
printf("%.2f ",matriz1[col][ren]);
}
printf ("\n");
}
printf ("\nMatriz B=\n");
for (col=0;col<m;col++)
{
for (ren=0;ren<n;ren++)
{
printf ("%.2f ",matriz2[col][ren]);
}
printf ("\n");
}
printf ("\nResultado=\n");
for(col=0;col<n;col++)
{
for(ren=0;ren<n;ren++)
{
matriz3[col][ren]=0;
for(temp=0;temp<N;temp++)
{
matriz3[col][ren]=matriz3[col][ren]+(matriz1[ren][temp]*matriz2[temp][col]);
}
}
}
for(col=0;col<M;col++)
{
for (ren=0;ren<n;ren++)
{
printf ("%.2f ",matriz3[ren][col]);
}
printf ("\n");
}
}
break;
case 5:
printf("\n Metodo Gauss-Jordan\n");
printf("Ingrese El numero de ecuaciones");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
for(j=1;j<=n+1;j++)
{
printf ("Ingrese los valores de la matriz");
scanf("%f",&aa[j]);
}
}
for(i=1;i<=n;i++)
{
c=aa[j];
for(j=1;j<=n+1;j++)
{
aa[j]=aa[j]/c;
}
for(j=1;j<=n;j++)
{
if(i!=j)
{
c=aa[j];
for(z=1;z<=n+1;z++)
{
aa[j]=(aa[j]-aa[j])*c;
}
}
printf("\n Incognita(%d) = %.4f",i,aa[n+1]);
}
}
break;
case 6:

printf("\n\n <-----------Metodo Gauss-Seidel----------->\n\n\n");
printf("ingrese el numero de iteraciones");
scanf("%d",&n);
printf("ingrese el valor incial de a+b+c");
scanf("%d,%d,%d",&a,&b,&c);
printf("ingrese el valor de filas de la matriz");
scanf("%d",&m1);
printf("ingrese el valor de columnas de la matriz");
scanf("%d",&n1);
system("cls");

printf("\n Ingrese los valores de la matriz\n\n");
for(i=0;i<m1;i++)
{
for(j=0;j<n1;j++)
{
printf("valor [%d][%d]de Matriz 1\n ",i,j);
scanf(" %f",&Matriz[j]);
}
}
system("cls");
printf("\n\n Metodo de Gauss Seidel\n\n");
printf(" \ta \tb \tc");

for(k=0;k<n;k++)
{
tenp=a;
a=(Matriz[0][3]+(Matriz[0][1]*b)+(Matriz[0][2]*c))/Matriz[0][0];

b=(Matriz[0][3]+(Matriz[1][0]*a)+(Matriz[1][2]*c))/Matriz[1][1];

c=(Matriz[2][4]-(Matriz[2][0]*a)+(Matriz[2][1]*b))/Matriz[2][2];

Er=fabs((a-temp)/a)*100;

if(Er<e)
{
printf("Error = %f y es menor que el 10 Porciento",Er);
}
else
{
printf(" \n\n%.4d %.4d %.4d\n\n",a,b,c);
}
}
break;

case 7:

printf("Ingrese el numero de iteraciones");
int o=-1,n,i,j,k=-1;
scanf("%d",&n);
printf("\n\nIngrese los valores de Xi & F(xi)\n\n");

float Tabla[n][n],Xi[n];
int l=n,m=n;
for(i=0;i<n;i++)
{
o=o+1;
printf("Ingrese datos: X(%d)",o);
scanf("%f",&Xi);
}
for(j=0;j<n;j++)
{
k=k+1;
printf("Ingrese datos:F(%d,0)",k);
scanf("%f",&Tabla[j][0]);
}
for(i=1;i<=n-1;i++)
{
for(j=0;j<m;j++)
{
Tabla[j]=((Tabla[i+1][j-1])-(Tabla[j-1]))/((Xi[i+j])-(Xi));
}
m=((m)-(1));
}
for(i=0;i<n;i++)
{
for(j=0;j<=l;j++)
{
printf("%.2f\t",Tabla[j]);
}
printf("\n");
l=((l)-(1));
}
break;
printf("\n\nPresione 0 para regresar U otro numero para salir ");
scanf("%d",&a);
}

}
while(a==0);
return 0;
}
float funcion1(float XI)
{
    float a,b,c;
    a=4*(pow(XI,4));
    b=9*(pow(XI,2));
    c=a-b+1;
    return c;
}
float funcion2(float XF)
{
    float a,b,c;
    a=4*(pow(XF,4));
    b=9*(pow(XF,2));
    c=a-b+1;
    return c;
}
float funcion3(float XM)
{
    float a,b,c;
    a=4*(pow(XM,4));
    b=9*(pow(XM,2));
    c=a-b+1;
    return c;
}
float funcion4(float XI)
{
    float a;
    a=(pow(XI,3))+(pow(XI,2))-(3*XI)+5;
    return a;
}
float funcion5(float XI)
{
    float a;
    a=3*(pow(XI,2))+(2*XI)-3;
    return a;
}
float funcion6(float XIi)
{
    float a;
    a=(exp(-XIi))-XIi;
    return a;
}float funcion7(float XI)
{
    float a;
    a=(exp(-XI))-XI;
    return a;
}
float formula1(float XI,float XF)
{
    float a;
    a=(XI+XF)/2;
    return a;
}
float formula2(float XI,float XM)
{
    float a,b;
    a=((XM-XI)/XM);
    if(a<0)
    {
    b=a*(-1);
    }
    return b;
}
float formula3(float XI,float FXI,float FXXI)
{
    float a;
    a=XI-(FXI/FXXI);
    return a;
}
float formula4(float XI,float XII)
{
    float a;
    a=(XII-XI)/XII;
    return a;
}

float formula5(float XI,float FXI,float FXIi,float XIi)
{

    float a;
    a=XI-((FXI*(XI-XIi))/(FXI-FXIi));
    return a;
}