C/Visual C - Ayuda con metodo Biseccion

   
Vista:

Ayuda con metodo Biseccion

Publicado por Vicky (2 intervenciones) el 13/06/2008 05:03:25
Hola:
necesito de su ayuda para saber como evaluar el valor de una variable en una ecuacion dada por el usuario, en mi programa primero pido el grado de la ecuacion y despues en un for guardo mi ecuacion en coef [i], donde i va ser el grado(x^3,x^2 ,x,etc), ya guardado en la variable un ejemplo kedaria asi 3x^3+2x^2+10x-20 aki les dejo mi programa, ojala me puedan ayudar, es para mi examen este metodo es el de biseccion:

#include <iostream.h> //PARA EL CIN Y EL COUT
#include <stdlib.h> //PARA EXIT
#include <stdio.h> //PARA PRINTF Y SCANF
#include <math.h> //PARA FABS (Valor absoluto)
#include <conio.h>

void main ()
{
float xmin,xmax,error,erro,f,fxd,fxi,Xm,fxm;
int A,B,C,D,i,cont,grad,itera;
float coef[12];
i=1;


cout<<" M E T O D O B I S E C C I O N ";
printf(" DAME LOS COEFICIENTES DE LA ECUACION A A CALCULAR ");
printf(" Ingrese el maximo grado de su ecuacion: ");
scanf("%d",&grad);
printf(" Ingrese el intervalo de analisis: ");
printf(" Valor minimo XI: ");scanf("%f",&xmin);
printf("Valor maximo XD: ");scanf("%f",&xmax);
printf("DAME EL NUMERO DE ITERACIONES: ");cin>>itera;
printf("Dame el error minimo permitido: ");cin>>erro;

for(i=grad;i>=0;i--)
{
printf("Ingrese el coeficiente de grado %d: ",i);
scanf("%f",&coef[i]);
}

while(i<=itera)
{
do
{
error=xmax-xmin;

fxd=f(xmax);
fxi=f(xmin);

Xm=(xmin+xmax)/2;
fxm=f(Xm);

if(fxm>0)
{
fxd=Xm;

}
else
{
fxi=Xm;
}
cont=0;
if(error<=erro)
{
cont=1;
}
else
{
cont=1;
}
}while(cont==0);
printf(" RAIZ ENCONTRADA...");
printf(" El valor de la raiz es: %f",Xm);
printf(" Con un error de: %f",error);
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con metodo Biseccion

Publicado por Gilberto (31 intervenciones) el 13/06/2008 06:36:50
Que te hace falta? Si lo que necesitas es evaluar el polinomio de grado y coeficientes pedidos, escribe una función aparte:

#include ...
...
// Escribe estas dos variables fuera de la función main para que las pueda accesar
// la función de evaluación del polinomio
int grado;
float coef[12];

double f(float x)
{
double val =0;
int grad = grado;
for(int i=0; i<=grado; i++)
{
val+=coef[i]*pow(x,grad--);
}
return val;
}

// Esta es tu función main
void main()
{
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con metodo Biseccion

Publicado por Vicky (2 intervenciones) el 13/06/2008 16:10:42
Ok muchas gracias Gil, pero para que sirve pow??, en si que hace esta linea?? val+=coef[i]*pow(x,grad--);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con metodo Biseccion

Publicado por Gilberto (31 intervenciones) el 14/06/2008 07:36:56
pow(double a,double b) eleva a a la potencia b, la linea calcula el valor de cada término del polinomio de grado y coeficientes dados por el usuario, que es lo que me parece haces en tu programa,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar