Напишите код c, чтобы оценить интеграл между 0 и y в (x^2)(e^-x^2)dx, используя правило Симпсона (используйте фиксированное число шагов в 20000)

Вторая часть Q: Затем решите интеграл между 0 и y (x^2)(e^(-x^2))dx=0.1 для y, используя скобки и деление пополам.

Вот что я сделал до сих пор:

    #include <stdio.h>
#include <math.h>
double f(double x, double y);

int main(void) {
    int i, steps;
    double a, b, y, h, m, lower, upper, x, simp, val;
    /*
     * Integrate (x^2)(e^(-x^2)) from 0 to y
     */
    steps = 20000;
    a = 0;
    b = y;
    h= (b-a)/steps;
    /*
     * now apply Simpson's rule. Note that the steps should be even.
     */
    simp = -f(a, y);
    x = a;
    for (i =0; i < steps; i += 2) {
        simp += 2.0*f(x,y)+4.0*f(x+h, y);
        x += 2*h;
    }
    simp += f(b, y);
    simp *= h/3.0;
    /*
     * print out the answer
     */
    printf("The integral from 0 to y with respect to x by Simpson's Rule is %f\n", simp);
    /*
     * Now we need to bracket and bisect to find y
     */
    lower = 0;
    /*
     * Lower bound is from turning point
     */
    upper = 100;
    /*
     *Upper value given.
     */
    while (upper - lower > 10E-10){
        m = (lower + upper)/2;
        val = f(m, y);
        if (val >=0)
            upper = m;
        if (val <=0)
            lower = m;
    }
    m = (lower + upper)/2;
    printf("The value for y is: %lf\n", m);
    return 0; 
}
double f(double x, double y) {
    return pow(x,2)*exp(pow(-x,2))-0.1;
}

Output: The integral from 0 to y with respect to x by Simpson's Rule is -0.000000
The value for y is: 0.302120

Он работает, но не делает именно то, что мне нужно. Мне нужно иметь возможность продолжать работать с интегралом, когда я использовал 0 и y в качестве пределов. Я не могу этого сделать. Затем продолжайте и решите для y. Это дает мне значение для y, но это не то же самое, что я получаю, если я решу с помощью онлайн-калькуляторов. Кроме того, выход дал ноль для интеграла, даже когда я изменил уравнение, которое будет интегрировано, на x^2. Может ли кто-нибудь помочь объяснить в максимально простых терминах?

0 ответов

Другие вопросы по тегам