Evaluar una funcion matematica

Date
13 de Enero del 2005
Hola amigos necesito que alguien me de alguna informacion de como hacer un codigo que me permita evaluar una funcion matematica para un valor de X ,Y dado. Donde puedo ademas encontrar el codigo para resolver el metodo de Rugge-Kutta de orden 4

ultimate ZERO >>
13 de Enero del 2005
emm con ke keriendo ek te hagan la tarea no? jeje

pues no te tengo el codigo ( hice ese programa el semestre pasado, pero formatie la PC sorry) pero te tengo una solucion.

primero pasa la exprecion a POSFIJA asi sera mas facil evaluarla. Posfijo es por ejemplo

A+B en posfijo es AB+
A+B*C en posfijo es ABC*+
A*B+C es AB*C+

como puedeas darte cuenta hay prioridades de exponente ( no recuerdo si es el mas alto) a MULT y DIV ke son de igual prioridad y a SUM y RES los mas bajos. si no te kedo claro buscalo POSFIJO en google

el pusto es pasalo a posfijo y luego pues hechale coco un ratillo e inventate un programa.

tienes suerte un amigo se acaba de conectar y el si tiene la de evaluar ( TE ACLARO KE EVALUA SOBRE UNA EXPRECION POSFIJA)

void MAIN()
{
t=evaluar();
}

float evaluar()
{
float mat_num[20];
char mat_tex[20];

int sal=0,q,rr,salte,ww;
float M=0,var1,var2;
// char cop_1[20],cop_2[20];


for(int ert=0;ert<20;ert++)
{
mat_num[ert]=0;
mat_tex[ert]=' ';
}
mat_tex[19]='';


for(ww=0;posfija[ww]!='';ww++)
{
if(posfija[ww]=='a' || posfija[ww]=='b' || posfija[ww]=='c' || posfija[ww]=='d' || posfija[ww]=='e')
{
switch(posfija[ww])
{
case 'a' : mat_num[ww]=a;mat_tex[ww]=' ';break;
case 'b' : mat_num[ww]=b;mat_tex[ww]=' ';break;
case 'c' : mat_num[ww]=c;mat_tex[ww]=' ';break;
case 'd' : mat_num[ww]=d;mat_tex[ww]=' ';break;
case 'e' : mat_num[ww]=e;mat_tex[ww]=' ';break;
}
}
else
{
mat_num[ww]=0;mat_tex[ww]=posfija[ww];
}
}

for(ww=0;posfija[ww]!='';ww++)
{}

rr=ww;

while(sal!=1)
{
salte=0;
q=0;
if(mat_tex[q]=='+' || mat_tex[q]=='-' || mat_tex[q]=='*' || mat_tex[q]=='/' || mat_tex[q]=='^')
salte=1;

while(salte!=1)
{
q++;
if(mat_tex[q]=='+' || mat_tex[q]=='-' || mat_tex[q]=='*' || mat_tex[q]=='/' || mat_tex[q]=='^' || q==rr)
salte=1;

if(q==rr)
sal=1;

}

if(sal!=1)
{
var1=mat_num[q-2];

var2=mat_num[q-1];

switch(mat_tex[q])
{
case '+' : M=var1+var2;break;
case '-' : M=var1-var2;break;
case '*' : M=var1*var2;break;
case '/' : M=var1/var2;break;
case '^' : M=pow(var1,var2);break;
}

int qq;
qq=q-2;

mat_num[qq]=M;
qq++;
q++;

for(;q<rr;q++,qq++)
{
mat_num[qq]=mat_num[q];
mat_tex[qq]=mat_tex[q];
}

rr=rr-2;
}

}
return M;
}

ultimate ZERO >>
13 de Enero del 2005
escribi mal en la linea:

el pusto es pasalo a posfijo y luego pues hechale coco un ratillo e inventate un programa.

era "PUNTO" la 2da palabra :P