Sie sind auf Seite 1von 5

Mtodos Numricos

Presentado por:
Andrea Jaramillo

Dirigido a:
Ing. Edgardo Buelvas

Grupo CD3

Ingeniera Electrnica

Barranquilla, 27 de septiembre de 2011

#include<iostream>
#include<complex>
int op,grado,i,it,est,j;
float funcion[10],derivada[10],a,b,e,t,fa,fb,xm,fxm,x0,fdev;
bool ope=true;
using namespace std;
void main(){
while(ope==true){
system("cls");
cout<<endl;
cout<<endl;
cout<<"\t\t\t----- MENU PRINCIPAL -----"<<"\n\n";
cout<<"\t\t\t1. ARMAR POLINOMIO"<<endl;
cout<<"\t\t\t2. M. PUNTO FIJO"<<endl;
cout<<"\t\t\t3. M. BISECCION"<<endl;
cout<<"\t\t\t4. M. NEWTON-RAPHSON"<<endl;
cout<<"\t\t\t5. M. SECANTE"<<endl;
cout<<"\t\t\t6. M. REGULA-FALSI"<<endl;
cout<<"\t\t\t7. SALIR"<<endl;
cout<<"\t\t\t----------------------------"<<endl;
cout<<endl;
cout<<endl;
cout<<"Elige opcion: ";cin>>op;
switch(op){
case 1:
system("cls");
cout<<"\t\t\t----- POLINOMIO -----"<<"\n\n";
cout<<"\t\tDigite el grado del polinomio:
";cin>>grado;
for(i=0;i<=grado;i++){
cout<<"\t\tCoeficiente de
x^"<<i<<":";cin>>funcion[i];
}
cout<<endl;
cout<<"\t\tFuncion :"<<endl;
cout<<"\t\t";
for(i=0;i<=grado;i++){
cout<<funcion[i]<<"x^"<<i<<" + ";
}
cout<<endl<<endl;
system("pause");break;
case 2:
system("cls");
cout<<"\t\t\t----- M. PUNTO FIJO -----"<<"\n\n";
cout<<"\t\tDigte x inicial: ";cin>>x0;
cout<<"\t\tDigte tolerancia: ";cin>>t;
cout<<"\t\tDigte numero maxima de iteraciones:
";cin>>it;
est=0;fa=0;e=0;j=0;
cout<<"\t\tit"<<"\tx0"<<"\tf(x)"<<"\terror"<<endl;
do{
j++;
for(i=0;i<=grado;i++){
fa=fa+(funcion[i]*pow(x0,i));
}
e=fabs(fa-x0);

cout<<"\t\t"<<j<<"\t"<<x0<<"\t"<<fa<<"\t"<<e<<endl;
if(e<=t){
est=1;
}else{
if(it==j){
est=2;
}else{
x0=fa;
}
}
}while(est==0);
if(est==1){
cout<<"\t\tConverge en x= "<<x0<<
endl;
}else{
cout<<"\t\tNO SE ENCONTRO
CONVERGENCIA"<< endl;
}
system("pause");break;

"<<"error

"<<xm<<"

case 3:
system("cls");
cout<<"\t\t\t----- M. BISECCION -----"<<"\n\n";
cout<<"\t\tDigte Limite Izquierdo: ";cin>>a;
cout<<"\t\tDigte Limite Derecho: ";cin>>b;
cout<<"\t\tDigte tolerancia: ";cin>>t;
cout<<endl;
fa=fb=0;
for(i=0;i<=grado;i++){
fa=fa+(funcion[i]*pow(a,i));
fb=fb+(funcion[i]*pow(b,i));
}
if((fb*fa)<0){
j=0;x0=0;xm=0;
cout<<"it
"<<"a
"<<"b
"<<"xm
"<<"fxm
"<<endl;
do{
j++;fxm=0;
xm=(a+b)/2;
for(i=0;i<=grado;i++){
fxm=fxm+(funcion[i]*pow(xm,i));
}

"<<fxm<<"

e=fabs(xm-x0);
cout<<j<<"
"<<a<<"
"<<e<<"
"<<endl;
x0=xm;
if(fxm<0){
a=xm;
}else{
b=xm;
}

"<<b<<"

}while(e>t);
cout<<"\n\n\t\tLa raiz es apro.:
"<<xm<<endl;
system("pause");break;

}
case 4:
system("cls");
cout<<"\t\t\t-----

M. NEWTON-RAPHSON

-----

"<<"\n\n";
for(i=1;i<=grado;i++){
derivada[i-1]=i*funcion[i];
}
cout<<endl;
cout<<"\t\tFuncion derivada:"<<endl;
cout<<"\t\t";
for(i=0;i<grado;i++){
cout<<derivada[i]<<"x^"<<i<<" + ";
}
cout<<endl<<endl;
cout<<"\t\tDigte Valor inicial: ";cin>>a;
cout<<"\t\tDigte tolerancia: ";cin>>t;
cout<<endl;
j=0;b=0;
cout<<"it
"<<"xi
"<<"F(xi)
"<<"F'(xi)
"<<"xi+1
"<<"error
"<<endl;
do{
j++;fdev=0;fa=0;
for(i=0;i<=grado;i++){
fa=fa+(funcion[i]*pow(a,i));
}
for(i=0;i<grado;i++){
fdev=fdev+(derivada[i]*pow(a,i));
}
b=a-(fa/fdev);
e=fabs(a-b);
cout<<j<<"
"<<a<<"
"<<fa<<"
"<<fdev<<"
"<<b<<"
"<<e<<"
"<<endl;
a=b;
}while(e>t);
cout<<"\n\n\t\tLa raiz es apro.: "<<b<<endl;
system("pause");break;
case 5:
system("cls");
cout<<"\t\t\t----- M. SECANTE -----"<<"\n\n";
cout<<"\t\tDigte Valor inicial: ";cin>>a;
cout<<"\t\tDigte Valor secudario: ";cin>>b;
cout<<"\t\tDigte tolerancia: ";cin>>t;
cout<<endl;
j=0;
cout<<"it
"<<"xi-1
"<<"xi
"<<"xi+1
"<<"F(xi-1)
"<<"F(xi)
"<<"error
"<<endl;
do{
j++;fa=0;fb=0;
for(i=0;i<=grado;i++){
fa=fa+(funcion[i]*pow(a,i));
fb=fb+(funcion[i]*pow(b,i));
}
xm=b-(((b-a)*fb)/(fb-fa));
e=fabs(xm-b);
cout<<j<<"
"<<a<<"
"<<b<<"
"<<xm<<"
"<<fa<<"
"<<fb<<"
"<<e<<"
"<<endl;

a=b;b=xm;
}while(e>t);
cout<<"\n\n\t\tLa raiz es apro.:
system("pause");break;
case 6:
system("cls");
cout<<"\t\t\t-----

"<<b<<endl;

M. REGULA-FALSI

-----

"<<"\n\n";
cout<<"\t\tDigte Limite Izquierdo: ";cin>>a;
cout<<"\t\tDigte Limite Derecho: ";cin>>b;
cout<<"\t\tDigte tolerancia: ";cin>>t;
cout<<endl;
est=0;x0=0;
cout<<"it
"<<"a
"<<"b
"<<"fa
"<<"fb
"<<"xm
"<<"fxm
"<<"error
"<<endl;
while(est==0){
fa=fb=fxm=0;
for(i=0;i<=grado;i++){
fa=fa+(funcion[i]*pow(a,i));
fb=fb+(funcion[i]*pow(b,i));
}
xm=b-((fb*(b-a))/(fb-fa));
for(i=0;i<=grado;i++){
fxm=fxm+(funcion[i]*pow(xm,i));
}
e=fabs(xm-x0);
cout<<it<<"
"<<a<<"
"<<b<<"
"<<fa<<"
"<<fb<<"
"<<xm<<"
"<<fxm<<"
"<<e<<endl;
if(e<=t ){
est=1;
}else{
if(fxm<0){
a=xm;
}else{
b=xm;
}
x0=xm;
}
it++;
}
cout<<endl;
if(est==0){
cout<<"\t\tDiverge en el rango
expresado"<<endl;
}else{
cout<<"\t\tLa raiz aproximada
es:"<<xm<<endl;
}
cout<<endl;
system("pause");break;
case 7:
ope=false;break;
}
}
}

Das könnte Ihnen auch gefallen