|
Mostrar Mensajes
|
Páginas: [1]
|
2
|
Programación / Programación C/C++ / Ayuda a completar el Codigo de Minimos cuadrados
|
en: 22 Abril 2012, 19:21 pm
|
http://www.monografias.com/trabajos16/metodos-lineales/metodos-lineales.shtmlCual seria el siguiente paso a Programar? http://www.monografias.com/trabajos16/metodos-lineales/metodos-lineales.shtmlAlgun tip para salir de este estanqueamiento de las ecuaciones para encontrar a y b #include<stdio.h> #include<math.h> #include<conio.h> float Ecuacion(float temp,float temp1,float temp2,float temp3,float N); float Sustitucion(float temp,float temp1,float b,float N); int main() { float Matriz[50][51]={0},X[50],Y[50],tm=0,temp=0,temp1=0,temp2=0,temp3=0,N,a,b; int i,j,k,l,x,y,w,n,o=0,p=0; printf("Metodo de Minimos Cuadrados\n\n"); printf("Ingrese el Numero de iteraciones"); scanf("%d",&n); N=n; for(x=0;x<n;x++) { o=o+1; printf("Ingrese datos: X(%d)",o); scanf("%f",&X } for(y=0;y<n;y++) { p=p+1; printf("Ingrese datos: Y(%d)",p); scanf("%f",&Y[y]); } system("cls"); printf("Sus Datos son:\n\n\tXi\tYi\tXiYi\tXi2\n"); for(w=0;w<n;w++) { tm=X[w]; tm=pow(tm,2); Matriz[w][1]=tm; Matriz[w][0]=X[w]*Y[w]; printf("\n\t%.2f \t%.2f \t%.2f \t%.2f\n",X[w],Y[w],Matriz[w][0],Matriz[w][1]); } printf("\n\t+Xi\t+Yi\t+XiYi\t+Xi2\n"); for(i=0;i<n;i++) { temp=temp+X ; } for(j=0;j<n;j++) { temp1=temp1+Y[j]; } for(k=0;k<n;k++) { temp2=temp2+Matriz[k][0]; } for(l=0;l<n;l++) { temp3=temp3+Matriz[l][1]; } printf("\n\t%.2f\t%.2f\t%.2f\t%.2f\n\n",temp,temp1,temp2,temp3); printf("Ec.1 ∑y=na+b∑x\nEc.2 ∑xy=a∑x+b∑x²\n\n"); printf("b=%.5f\n",Ecuacion(temp,temp1,temp2,temp3,N)); b=Ecuacion(temp,temp1,temp2,temp3,N); printf("a=%.5f",Sustitucion(temp,temp1,b,N)); }
float Ecuacion(float temp,float temp1,float temp2,float temp3,float N) { float a,b,c,d,e,f,g;
a=(temp)*(-temp); b=(temp1)*(-temp); c=(temp3)*(N); d=(temp2)*(N); e=b+d; f=a+c; g=e/f;
return g; } float Sustitucion(float temp,float temp1,float b,float N) { float a;
a=((b*temp)-temp1)/N;
return a; }
Hay vamos hay vamos!!! jaja disculpen si me la paso modificando el codigo pero creo que voy progresando Espero sus recomendaciones saludos y Buena vibra!
|
|
|
3
|
Programación / Java / Re: Metodos Numericos (Metodo Biserccion, falsa posicion,Newton Raphson,Secante)
|
en: 11 Abril 2012, 05:27 am
|
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; }
|
|
|
4
|
Programación / Programación C/C++ / Re: Programacion del polinomio de Newton Ayuda!!
|
en: 5 Abril 2012, 22:17 pm
|
Cual es el método de interacciones que estas implementando? (alguna referencia o si tienes la expresion matematica a la mano escribe-la adecuadamente)... publica el código (con coloreado implementando Geshi) que llevas así se te podría ayudar mejor!¡.
* Identa tu código da pereza leerlo así como lo tienes...
Dulces Lunas!¡.
Asi o como?ya lo edite.... saludos y disculpa el Ignorar como publicar bien mi duda es que apenas ingrese aqui y voy aprendiendole a esto del foro
|
|
|
5
|
Programación / Programación C/C++ / Re: Duda tabla [5][5]
|
en: 4 Abril 2012, 08:52 am
|
Saludos espero asi te sirva correlo y ve si asi lo querias #include <stdio.h>
int main() { int i,j; int tabla[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
for(i=0;i<5;i++) { for(j=0;j<5;j++) { printf("%d\t",tabla [j]); } printf("\n"); } system("pause");
}
agregale la i alado de la j en otros [] Buena vibra!
|
|
|
6
|
Programación / Programación C/C++ / Programacion del polinomio de Newton Ayuda!!
|
en: 4 Abril 2012, 07:51 am
|
Que tal Esta es mi primera Publicacion asi que un saludo a tod@s Por aqui.. Veran en la escuela me pidieron programar en la clase de metodos numericos, El metodo de polinomio de newton. y ya tengo una semana itentandolo y nomas no doy Aun no puedo lograr obtener mi tabla Bien Y despues de la tabla faltan los resultados para las incognitas pff... quien podria ayudarme echandole un vistazo a lo que llevo Saludos Datos a ingresar Para iteraciones=5 X(x)=0,1,2,3,4 F(x,0)=-1,-1,1,5,11 La tabla deberia de salir mas omenos asi 0 -1 0 1 0 0 1 -1 2 1 0 2 1 4 1 3 5 6 4 11 http://s3.subirimagenes.com:81/otros/previo/thump_7595768nuevo1.jpgAdjunto una imagen con la formula y la tabla mas detallada http://s2.subirimagenes.com/imagen/previo/thump_7595718sin-ttul2o.pngTampoco eh solucionado como aparecer la primera Columna ya que esa la ingrese como un arreglo unidimencional(vector) y lo demas si es matriz nxn Por cierto Uso CODE BLOCKS 10.05 #include<stdio.h> #include <conio.h> int main() { int o=-1,n,i,j,k=-1; printf("Ingrese el numero de iteraciones"); 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)); } return 0; }
|
|
|
|
|
|
|