Tengo un procesador 2.7 Ghz, 3.25 GB de RAM a 667 Mhz, sistema operativo 32 bits, y estoy probando las capacidades del Mathematica, Matlab y el leguaje C para sacar una cuenta y ver con cual me quedo, en el Mathematica es esta:
y la basura de progama ese lo resuelve en largos 12.61 segundos e imprime que el resultado es 16.2904
Por otro lado el Matlab:
sí que se hace respetar, apenas suelto tardaría no más de 0.200 segundos arrojando un 16.3228 como resultado.
Pero cuando lo hago en C:
Aparte de que me arroja unos 26 warning(s), (aunque se compila con el Microsoft Visual C++), me arroja un 16.210197 como resultado tardando menos que el Matlab. Pero cuando aumento las iteraciones de los bucles for a 10000, cláro con su respectivo decremento en el aumento de las variables y_1 y x_1, etc, pero la cuestión es que cuando compilo ésto:
tarda unos 23.43 segundos y arroja un 4.000000 como resultado, obviamente algo está malo, primero, no debería de tardar tanto, ya que si con 1000 iteraciones es más rápido que el Matlab, con 10000 debería tardar igual o menos que el Matlab con 10000 iteraciones, y segundo el 4.000000 no es el resultado esperado, haber si pueden ayudarme?
Ya que con el matematica, el cálculo con 10000 iteraciones, tarda como 8 minutos y es ostinante esperar tanto, mientras que el Matlab tarda como 5.5 segundos con 10000 iteraciones y arroja un 16.3293.
Tambien, como ven los resultados son muy distintos aunque sea la misma cantidad de interaciones en cada código, entonces cual creen ustedes que sea el mejor resultado, o mejor programa para ésto?
EDITO:
Despues que publiqué el mensaje me di cuenta que no mensioné para que diablos es el calculo, pero bueno, es para verificar un cambio de variables, y , en esta inetgral doble:
Código:
u1 = 10.89; v1 = 79.21; u2 = 10.89 + 0.0023; v2 = 79.21 + 0.0071; area = 0; y1 = 3.3; x1 = 8.9; y2 = 0; x2 = 0; anss = 0; For[i = 1, i < 1000, i++, For[ii = 1, ii < 1000, ii++, anss = (v2 - v1)*(u2 - u1)*(1/(4*Sqrt[u1*v1])); area = area + anss; y1 = y1 + 0.0071; y2 = y1 + 0.0071; v1 = y1^2; v2 = y2^2; ] x1 = x1 + 0.0023; x2 = x1 + 0.0023; u1 = x1^2; u2 = x2^2; y1 = 8.9; ] Print[area]
Por otro lado el Matlab:
Código:
clear; u1=10.89; v1=79.21; u2=10.89+0.0023; v2=79.21+0.0071; area=0; y1=3.3; x1=8.9; y2=0; x2=0; anss=0; for i=1:1000 for ii=1:1000 anss=(v2-v1)*(u2-u1)*(1/(4*sqrt(u1*v1))); area=area+anss; y1=y1+0.0071; y2=y1+0.0071; v1=y1^2; v2=y2^2; end x1=x1+0.0023; x2=x1+0.0023; u1=x1^2; u2=x2^2; y1=8.9; end disp (area) clear;
Pero cuando lo hago en C:
Código:
/* coordenadas curvilineas */ #include <stdio.h> #include <math.h> float u_1, v_1, u_2, v_2, area, y_1, x_1, y_2, x_2, anss; int i, ii; char desicion; u_1=10.89; v_1=79.21; u_2=10.89 + 0.0023; v_2=79.21 + 0.0071; area=0; y_1=3.3; x_1=8.9; y_2=0; x_2=0; anss=0; void main() { printf("iniciar? "); scanf("%s", &desicion); if ((desicion=='s')||(desicion=='S')) { for(i=1; i<1000; i++) { for(ii=1; ii<1000; ii++) { anss=(v_2-v_1)*(u_2-u_1)*(1/(4*sqrt(u_1*v_1))); area=area+anss; y_1=y_1+0.0071; y_2=y_1+0.0071; v_1=pow(y_1,2); v_2=pow(y_2,2); } x_1=x_1+0.0023; x_2=x_1+0.0023; u_1=pow(x_1,2); u_2=pow(x_2,2); y_1=8.9; } printf("\n el area es %f ", area); } }
Código:
/* coordenadas curvilineas */ #include <stdio.h> #include <math.h> float u_1, v_1, u_2, v_2, area, y_1, x_1, y_2, x_2, anss; int i, ii; char desicion; u_1=10.89; v_1=79.21; u_2=10.89 + 0.00023; v_2=79.21 + 0.00071; area=0; y_1=3.3; x_1=8.9; y_2=0; x_2=0; anss=0; void main() { printf("iniciar? "); scanf("%s", &desicion); if ((desicion=='s')||(desicion=='S')) { for(i=1; i<10000; i++) { for(ii=1; ii<10000; ii++) { anss=(v_2-v_1)*(u_2-u_1)*(1/(4*sqrt(u_1*v_1))); area=area+anss; y_1=y_1+0.00071; y_2=y_1+0.00071; v_1=pow(y_1,2); v_2=pow(y_2,2); } x_1=x_1+0.00023; x_2=x_1+0.00023; u_1=pow(x_1,2); u_2=pow(x_2,2); y_1=8.9; } printf("\n el area es %f ", area); } }
Ya que con el matematica, el cálculo con 10000 iteraciones, tarda como 8 minutos y es ostinante esperar tanto, mientras que el Matlab tarda como 5.5 segundos con 10000 iteraciones y arroja un 16.3293.
Tambien, como ven los resultados son muy distintos aunque sea la misma cantidad de interaciones en cada código, entonces cual creen ustedes que sea el mejor resultado, o mejor programa para ésto?
EDITO:
Despues que publiqué el mensaje me di cuenta que no mensioné para que diablos es el calculo, pero bueno, es para verificar un cambio de variables, y , en esta inetgral doble: