Example #1
0
int main()
{
    int i, n;
    vector diag, sub1, sub2, sup1, sup2, b;

    printf("n = ");  scanf("%d", &n);
    if (n < 3) return EXIT_FAILURE;
    diag = new_vector(n);
    sub1 = new_vector(n);
    sub2 = new_vector(n);
    sup1 = new_vector(n);
    sup2 = new_vector(n);
    b    = new_vector(n);
    /* 例題.  正解はすべて 1 */
    for (i = 0; i < n; i++) {
        diag[i] = 11;  sub1[i] = 3;  sub2[i] = 1;
        sup1[i] =  4;  sup2[i] = 2;  b[i] = 21;
    }
    b[0] = 17;  b[n - 1] = 15;
    b[1] -= 1;  b[n - 2] -= 2;
    gauss5(n, diag, sub1, sub2, sup1, sup2, b);
    vecprint(b, n, 8, "%9.6f");
    printf("正解はすべて 1\n");
    return EXIT_SUCCESS;
}
Example #2
0
int main(int argc, char *argv[])
{
    double a = 1, b = 2, S, I = primitive(b) - primitive(a);
    unsigned i, n = 10;
    if(argc > 1) n = atoi(argv[1]);
    rlxd_init(2,time(NULL));
    FILE *f1 = fopen("integral1.dat","a");
    FILE *f2 = fopen("integral2.dat","a");
    FILE *f3 = fopen("integral3.dat","a");
    FILE *f4 = fopen("integral4.dat","a");

    for(S = i = 0; i < n; i++)
        S += newton_cotes1(function, a+i*(b-a)/n, a+(i+1)*(b-a)/n);
    fprintf(f1,"%d\t%e\n", n, fabs(I-S));

    for(S = i = 0; i < n; i++)
        S += newton_cotes2(function, a+i*(b-a)/n, a+(i+1)*(b-a)/n);
    fprintf(f2,"%d\t%e\n", n, fabs(I-S));

    for(S = i = 0; i < n; i++)
        S += gauss5(function, a+i*(b-a)/n, a+(i+1)*(b-a)/n);
    fprintf(f3,"%d\t%e\n", n, fabs(I-S));

    S = monte_carlo(function, a, b, n);
    fprintf(f4,"%d\t%e\n", n, fabs(I-monte_carlo(function, a, b, n)));

    fclose(f1);
    fclose(f2);
    fclose(f3);
    fclose(f4);

    return 0;
}