Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Metodos
#include<math.h> #include <iostream> #include <iomanip> #include<stdlib.h> #include<stdio.h> using namespace std; double error2(double,double,double,double); double error3(double,double,double,double,double,double); void funcion1(int, double); void funcion2(int, double); void funcion4(int, double); double max2(double, double); double max3(double, double,double); void menuNewton(); void menuInterpolacion(); void principal(); void Cuadrados(float *, float *, int); void Divididas(float *,float *, int); //int gauss(float *,int n); float p1(float x,float b2,float b1); float p2(float x,float b3,float b2,float b1); float p3(float x,float b4,float b3,float b2,float b1); int main() { principal(); return 0; } void principal() { int i=0; do{ //system ("cls"); cout<<"Nava Vazquez Gpe. Zobeida"<<endl; cout<<"Ramirez Gonzalez Kathia Fabiola"<<endl; cout<<"Rodriguez Santiago Aaron"<<endl; cout<<"Escoge una opcion"<<endl; cout<<"1.-Newton"<<endl; cout<<"2.-Interpolacion"<<endl; cin>>i; switch(i) { case 1: menuNewton(); break; case 2: menuInterpolacion(); break; } }while(i!=4); } void menuInterpolacion() { int n,v=0,i=0; float *x,*y; do { //system ("cls"); cout<<"Teclea el numero de puntos de la funcion"<<endl; cin>>n; x=(float *)malloc(n*sizeof(float)); y=(float *)malloc(n*sizeof(float)); for (int i = 0; i < n; ++i) { cout<<"Teclea el dato x"<<i<<endl; cin>>x[i]; cout<<"Teclea el dato F(x)"<<i<<endl; cin>>y[i]; } //system ("cls"); cout<<"Verifica que los datos sean Correctos"<<endl; cout<<"X \t F(x)"<<endl; for (int i = 0; i < n; ++i) { cout<<x[i]<<"\t"<<y[i]<<endl; } cout<<"Si son correctos teclea un 1 sino un 0"<<endl; cin>>v; } while (v==0); //system("cls"); do{ cout<<"Escoge una opcion"<<endl; cout<<"1.-Diferencias Dividas"<<endl; cout<<"2.-Minimos Cuadrados"<<endl; cin>>i; switch(i) { case 1: Divididas(x,y,n); break; case 2: Cuadrados(x,y,n); break; } }while(v==0); } void menuNewton() { int i=0,x; double y; do{ //system ("cls"); cout<<"Metodo de Newton"<<endl; cout<<"Escoge una funcion"<<endl; cout<<"1.- f1(x,y)= x^2 + xy – 10 = 0 \t f2(x, y)= y + 3xy^2 – 57 = 0"<<endl; cout<<"2.- f1(x,y)= 4 – x^2 – y^2 = 0 \t f2(x, y)= 1 - e^x - y = 0"<<endl; cout<<"3.- f1(x,y)= 2x^2 – 4x + y^2 + 3z^2 + 6z + 2 = 0 \t f2(x, y)= x^2 + y^2 – 2y + 2z^2 – 5 = 0 \t f3(x, y)= 3x^2 – 12x + y^2 + 3z^2 + 8 = 0"<<endl; cout<<"4.- f1(x,y)= x^2 – 4x + y^2 = 0 \t f2(x, y)= x^2 - x – 12y + 1 = 0 \t f3(x, y)= 3x^2 – 12x + y^2 + 3z^2 + 8 = 0"<<endl; cout<<"5.- Salir"<<endl; cin>>i; switch(i) { case 1: cout<<"Ingresa el numero de iteraciones "<<endl; cin>>x; cout<<"Ingresa el numero de toleracia "<<endl; cin>>y; funcion1(x,y); break; case 2: cout<<"Ingresa el numero de iteraciones "<<endl; cin>>x; cout<<"Ingresa el numero de toleracia "<<endl; cin>>y; funcion2(x,y); break; case 3: cout<<"Ingresa el numero de iteraciones "<<endl; cin>>x; cout<<"Ingresa el numero de toleracia "<<endl; cin>>y; cout<<"Error estas funciones divergen no importando el metodo para calcularlas"<<endl; //system("pause"); break; case 4: cout<<"Ingresa el numero de iteraciones "<<endl; cin>>x; cout<<"Ingresa el numero de toleracia "<<endl; cin>>y; funcion4(x,y); break; case 5: cout<<"gracias por ocupar este programa vuelve pronto"<<endl; system("pause"); break; } }while(i!=5); } void funcion1(int iter, double tole) { double x, y, x_b, y_b, f1_a, f2_a, f1_b, f2_b, Df1, Df2; double tolActual=0,tolAnterior=0,error_espectral,error_anterior=100000000,error=0; int i=0,n=0,salida=10; cout<<"Ingresa x0 "<<endl; cin>>x; cout<<"Ingresa y0 "<<endl; cin>>y; cout<<"i "<<"x"<<"\t\t"<<"y"<<"\t\t"<<"f1_a"<<"\t\t"<<"f2_a"<<"\t\t"<<"Df1"<<"\t\t"<< "Df2\t\t"<<"Error"<<"\n"; f1_b=x*x+x*y-10; f2_b=x+3*x*y*y-57; do { f1_a=x*x+x*y-10; Df1=2*x+y; x_b=x-f1_a/Df1; f2_a=y+3*x_b*y*y-57; Df2=1+6*x_b*y; y_b=y-f2_a/Df2; cout<<i<<" "; cout<<fixed<<setprecision(6); cout<<x<<fixed<<setprecision(6); cout<<"\t"<<y<<fixed<<setprecision(6)<<"\t"<<f1_a<<fixed<<setprecision(6)<<"\t"<<f2_a<<fixed<<setprecision(6)<<"\t"; cout<<Df1<<fixed<<setprecision(6)<<"\t"<< Df2<<fixed<<setprecision(6)<<"\t"; error_espectral=10000000; if(i>0){ error_espectral=error2(f1_a,f2_a,f1_b,f2_b); cout<< error_espectral<<fixed<<setprecision(6)<<"\n"; }else printf("\n"); if(error_anterior<error_espectral) { error=1; break; } error_anterior=error_espectral; f1_b=f1_a; f2_b=f2_a; i++; x=x_b; y=y_b; }while(iter>i-1 and error_espectral>tole); if(error==1) cout<<"El error fue en aumento\n"; else cout<<"Las solucion fue: ("<<x<<","<<y<<")"; //system("pause"); } void funcion2(int iter, double tole) { double x, y, x_b, y_b, f1_a, f2_a, f1_b, f2_b, Df1, Df2; double tolActual=0,tolAnterior=0,error_espectral,error_anterior=100000000,error=0; int i=0,n=0,salida=10; cout<<"Ingresa x0 "<<endl; cin>>x; cout<<"Ingresa y0 "<<endl; cin>>y; cout<<"i "<<"x"<<"\t\t"<<"y"<<"\t\t"<<"f1_a"<<"\t\t"<<"f2_a"<<"\t\t"<<"Df1"<<"\t\t"<< "Df2\t\t"<<"Error"<<"\n"; f1_b=4-(x*x)-(y*y); f2_b=1-exp(x)-y; do { f1_a=4-(x*x)-(y*y); Df1=-2*x; x_b=x-f1_a/Df1; //cout<<"x:"<<x<<"y:"<<y<<"f1: "<<f1_a<<endl; f2_a=1-exp(x_b)-y; Df2=-1; y_b=y-f2_a/Df2; cout<<i<<" "; cout<<fixed<<setprecision(6); cout<<x<<fixed<<setprecision(6); cout<<"\t"<<y<<fixed<<setprecision(6)<<"\t"<<f1_a<<fixed<<setprecision(6)<<"\t"<<f2_a<<fixed<<setprecision(6)<<"\t"; cout<<Df1<<fixed<<setprecision(6)<<"\t"<< Df2<<fixed<<setprecision(6)<<"\t"; error_espectral=100000000; if(i>0){ error_espectral=error2(f1_a,f2_a,f1_b,f2_b); cout<< error_espectral<<fixed<<setprecision(6)<<"\n"; }else printf("\n"); f1_b=f1_a; f2_b=f2_a; if(error_anterior<error_espectral) { error=1; break; } error_anterior=error_espectral; //cout<<" Hola"<<error_espectral<<" "<<tole; i++; x=x_b; y=y_b; }while(iter>i-1 and error_espectral>tole); if(error==1) cout<<"El error fue en aumento\n"; else cout<<"Las solucion fue: ("<<x<<","<<y<<")"; //system("pause"); } void funcion4(int iter, double tole) { double x, y,z, x_b, z_b, y_b, f1_a, f2_a, f3_a, f1_b, f2_b, f3_b, Df1, Df2, Df3; double tolActual=0,tolAnterior=0,error_espectral,error_anterior=100000000,error=0; int i=0,n=0,salida=10; cout<<"Ingresa x0 "<<endl; cin>>x; cout<<"Ingresa y0 "<<endl; cin>>y; cout<<"i "<<"x"<<"\t\t"<<"y"<<"\t\t"<<"z"<<"\t\t"<<"f1_a"<<"\t\t"<<"f2_a"<<"\t\t"<<"f3_a"<<"\t\t"<<"Df1"<<"\t\t"<< "Df2\t\t"<<"Df3\t\t"<<"Error"<<"\n"; f1_b=x*x-4*x+y*y; f2_b=x*x-x-12*y+1; f3_b=3*x*x-12*x+y*y+3*z*z+8; do { f1_a=x*x-4*x+y*y; Df1=2*x-4; x_b=x-f1_a/Df1; f2_a=x_b*x_b-x_b-12*y+1; Df2=-12; y_b=y-f2_a/Df2; f3_a=3*x_b*x_b-12*x_b+y_b*y_b+3*z*z+8; Df3=6*z; z_b=z-f3_a/Df3; cout<<i<<" "; cout<<fixed<<setprecision(6); cout<<x<<"\t"; cout<<y<<"\t"; cout<<z<<"\t"; cout<<f1_a<<"\t"; cout<<f2_a<<"\t"; cout<<f3_a<<"\t"; cout<<Df1<<"\t"; cout<<Df2<<"\t"; cout<<Df3<<"\t"; error_espectral=10000000; if(i>0){ error_espectral=error3(f1_a,f2_a,f3_a,f1_b,f2_b,f3_b); cout<< error_espectral<<fixed<<setprecision(6)<<"\n"; }else printf("\n"); //cout<<" Hola"<<error_espectral<<" "<<error_anterior<<endl; if(error_anterior<error_espectral) { error=1; break; } error_anterior=error_espectral; f1_b=f1_a; f2_b=f2_a; f3_b=f3_a; i++; x=x_b; y=y_b; z=z_b; }while(iter>i-1 and error_espectral>tole); if(error==1) cout<<"El error fue en aumento\n"; else cout<<"Las solucion fue: ("<<x<<","<<y<<","<<z<<")"; //system("pause"); } double error2(double f1_a,double f2_a,double f1_b,double f2_b){ double f1,f2; f1=f1_a-f1_b; f2=f2_a-f2_b; return max2(f1,f2); } double error3(double f1_a,double f2_a,double f3_a,double f1_b,double f2_b,double f3_b){ double f1,f2,f3; f1=f1_a-f1_b; f2=f2_a-f2_b; f3=f3_a-f3_b; return max3(f1,f2,f3); } double max2(double n, double k) { if(n<0)n*=-1; if(k<0)k*=-1; if(n>=k) return n; else return k; } double max3(double n, double k,double l) { if(n<0)n*=-1; if(k<0)k*=-1; if(l<0)l*=-1; if(n>=k) {if (n>=l) return n;} else if (k>=l) return k; else return l; } void Divididas(float *x, float *y,int n) { float b[n][n],x1; float xt; float y1; int i=0,grado; do { cout<<"Por favor dame un punto para interpolar"<<endl; cin>>x1; if(x1>=x[0]&&x1<=x[n-1]) { cout<<"Por favor dame el grado para interpolar"<<endl; cin>>grado; if(grado<=n&&grado>=1) { //inicializa la tabla de diferencias for(int i=0;i<n;i++) b[i][0]=y[i]; //calcula la tabla de diferencias for(int j=1;j<grado;j++) for(int i=0;i<n-j;i++) b[i][j]=(b[i+1][j-1]-b[i][j-1])/(x[i+j]-x[i]); //interpola con el polinomio xt=1; y1=b[0][0]; for(int j=0;j<grado-1;j++) { xt=xt*(x1-x[j]); y1=y1+b[0][j+1]*xt; } cout<<y1; } } else cout<<"error, el punto no existe en el intervalo"<<endl; cout<<"Si quieres continuar teclea 0 sino 1"<<endl; cin>>i; }while(i==0); } void Cuadrados(float *x, float *y,int n) { cout<<fixed<<setprecision(6); float matriz[4][4]; float independiente[4]; float componentes[10]; float solucion_lineal[4]; float solucion_cuadratica[4]; float solucion_cubica[4]; float polinomio1; float polinomio2; float polinomio3; for(int i=0;i<10;i++){ componentes[i]=0; } cout<<"x\t\t"<<"y\t\t"<<"x^2\t\t"<<"x^3\t\t"<<"x^4\t\t"<<"x^5\t\t"<<"x^6\t\t"; cout<<"x*y\t\t"<<"(x^2)*y\t\t"<<"(x^3)*y\t\t\n"; for(int i=0;i<n;i++){ componentes[0]=componentes[0]+x[i]; componentes[1]=componentes[1]+y[i]; componentes[2]=componentes[2]+pow(x[i],2); componentes[3]=componentes[3]+pow(x[i],3); componentes[4]=componentes[4]+pow(x[i],4); componentes[5]=componentes[5]+pow(x[i],5); componentes[6]=componentes[6]+pow(x[i],6); componentes[7]=componentes[7]+(y[i]*x[i]); componentes[8]=componentes[8]+y[i]*pow(x[i],2); componentes[9]=componentes[9]+y[i]*pow(x[i],3); printf("%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t\n", x[i],y[i],pow(x[i],2),pow(x[i],3),pow(x[i],4),pow(x[i],5),pow(x[i],6),y[i]*x[i],y[i]*pow(x[i],2),y[i]*pow(x[i],3)); } for(int i=0;i<10;i++){ printf("%5.6lf\t",componentes[i]); }printf("\n");printf("\n"); matriz[0][0]=6; matriz[1][0]=componentes[0]; matriz[2][0]=componentes[2]; matriz[3][0]=componentes[3]; matriz[0][1]=componentes[0]; matriz[1][1]=componentes[2]; matriz[2][1]=componentes[3]; matriz[3][1]=componentes[4]; matriz[0][2]=componentes[2]; matriz[1][2]=componentes[3]; matriz[2][2]=componentes[4]; matriz[3][2]=componentes[5]; matriz[0][3]=componentes[3]; matriz[1][3]=componentes[4]; matriz[2][3]=componentes[5]; matriz[3][3]=componentes[6]; independiente[0]=componentes[6]; independiente[1]=componentes[7]; independiente[2]=componentes[8]; independiente[3]=componentes[9]; printf("A\t\t\t\t\t\t\t\t\tb\n"); for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ printf("%5.6lf\t",matriz[i][j]); } printf("\t%5.6lf\t",independiente[i]); printf("\n"); } printf("\n"); printf("\n"); float c; float dos[2][3],tres[3][4],cuatro[4][5]; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) dos[i][j]=matriz[i][j]; } for(int j=0; j<2; j++) { for(int i=0; i<2; i++) { if( i!=j) { c=dos[i][j]/dos[j][j]; for(int k=0; k<=2; k++) { dos[i][k]=dos[i][k]-c*dos[j][k]; } } } } for(int i=0; i<2; i++) { solucion_lineal[i]=dos[i][0]/dos[i][i]; //printf("\n x%d=%f\n",i,x[i]); } // tres for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) tres[i][j]=matriz[i][j]; } for(int j=0; j< 3; j++) { for(int i=0; i< 3; i++) { if(i!=j) { c=tres[i][j]/tres[j][j]; for(int k=0; k<= 3; k++) { tres[i][k]=tres[i][k]-c*tres[j][k]; } } } } for(int i=0; i< 3; i++) { solucion_cuadratica[i]=tres[i][0]/tres[i][i]; //printf("\n x%d=%f\n",i,x[i]); } //cuatro for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { cuatro[i][j]=matriz[i][j]; } } for(int j=0; j< 4; j++) { for(int i=0; i< 4; i++) { if(i!=j) { c=cuatro[i][j]/cuatro[j][j]; for(int k=0; k<= 4; k++) { cuatro[i][k]=cuatro[i][k]-c*cuatro[j][k]; } } } } for(int i=0; i< 4; i++) { solucion_cubica[i]=cuatro[i][0]/cuatro[i][i]; //printf("\n x%d=%f\n",i,x[i]); } for(int i=0;i<10;i++){ componentes[i]=0; } cout<<"x\t\t"<<"y\t\t"<<"p1(x)\t\t"<<"p2(x)\t\t"<<"p3(x)\t\t"<<"|y-p1(x)|^2\t"<<"|y-p2(x)|^2\t"; cout<<"|y-p3(x)|^2\t\t\n"; for(int i=0;i<n;i++){ componentes[0]=componentes[0]+x[i]; componentes[1]=componentes[1]+y[i]; polinomio1=p1(x[i],solucion_lineal[1],solucion_lineal[0]); polinomio2=p2(x[i],solucion_cuadratica[2],solucion_cuadratica[1],solucion_cuadratica[0]); polinomio3=p3(x[i],solucion_cubica[3],solucion_cubica[2],solucion_cubica[1],solucion_cubica[0]); componentes[2]=componentes[2]+polinomio1; componentes[3]=componentes[3]+polinomio2; componentes[4]=componentes[4]+polinomio3; componentes[5]=componentes[5]+pow(y[i]-polinomio1,2); componentes[6]=componentes[6]+pow(y[i]-polinomio2,2); componentes[7]=componentes[7]+pow(y[i]-polinomio3,2); printf("%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t%5.6lf\t\n", x[i],y[i],polinomio1,polinomio2,polinomio3,pow(y[i]-polinomio1,2),pow(y[i]-polinomio2,2),pow(y[i]-polinomio3,2)); } for(int i=0;i<8;i++){ printf("%5.6lf\t",componentes[i]); }printf("\n");printf("\n"); printf("\n\n"); //system("pause"); } /*int gauss(float M*,int n){ V[0]=1; V[1]=2; V[2]=3; V[3]=4; }*/ float p1(float x,float b2,float b1){ float res; res=b2*x+b1; return res; } float p2(float x,float b3,float b2,float b1){ float res; res=b3*pow(x,2)+b2*x+b1; return res; } float p3(float x,float b4,float b3,float b2,float b1){ float res; res=b4*pow(x,3)+b3*pow(x,2)+b2*x+b1; return res; }
run
|
edit
|
history
|
help
0
MyString
Вывод элементов массива
Policy based smart pointer
factor
ContainerVector
reverse array
IAR compiler bug test code
ExceptionHandling2
template
Hello World C++ - minimal