Metodos Numericos (Metodo Biserccion, falsa posicion,Newton Raphson,Secante)

Iniciado por GaLaN GaLaNaSo 3000, 8 Noviembre 2005, 00:18 AM

0 Miembros y 1 Visitante están viendo este tema.

GaLaN GaLaNaSo 3000

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....
La ***** en este foro cada ves veo mas gente que quiere hackear hotmail o que pregunta webadas asi como tambien veo webones que se creen los dueños del foro se ponen a putear a diestra y siniestra Tal ves creeran que la gente asi los repetara. Ah esos malditos les digo que si no quieres aportar no aporten pero quedense callaos cabrones. Que ironia usar la violencia para resolver la violencia no!!

Carlos Luna

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;
}