Вычисление интергала, поменять функцию - C (СИ)

Формулировка задачи:

Помогите, пожалуйста, поменять подынтегральную функцию с f = pow((x+1),(-1/3)) на вот программа для нахождения с f = pow((x+1),(-1/3))
double mpr(double a,double h,int n)
{
    double s = 0, i2;
    int i;
    for (i=1; i<(n+1); i++)
    s = s + pow(((a+(i-0.5)*h)+1), (-1/3.0));
    i2 = h*s;
    return i2;
}
double mtr(double a,double b,double h,int n)
{
    double s = 0,  i3;
    int i;
    for (i=1; i<n; i++)
    s+ = pow(((a+i*h)+1),(-1/3.0));
    i3=h*((pow((a+1),(-1/3.0))+pow((b+1),(-1/3.0)))/2+s);
    return i3;
}
void main()
{
    double a,b,h;
    int n; printf("Введите границы отрезка интегрирования\n");
    scanf("%lg %lg",&a,&b);
    printf("Введите количество отрезков разбиения\n");
    scanf("%d",&n);
    h = (double)(b-a)/n;
    printf("Интеграл по методу прямоугольников равен %lg\n", mpr(a,h,n));
    printf("Интеграл по методу трапеций равен %lg\n", mtr(a,b,h,n));
}

Код к задаче: «Вычисление интергала, поменять функцию - C (СИ)»

textual
#include <stdio.h>
#include <math.h>
 
double mpr(double a,double h,int n)
{
    double s = 0, i2;
    int i;
    for (i=1; i<(n+1); i++)
        s = s + pow( (pow(a+(i-0.5)*h,3)+1 ),(-1/3))*sin(a+(i-0.5)*h);
    i2 = h*s;
    return i2;
}
double mtr(double a,double b,double h,int n)
{
    double s = 0,  i3;
    int i;
    for (i=1; i<n; i++)
        s+= pow( (pow(a+i*h,3)+1 ),(-1/3))*sin(a+i*h);
    i3=h*((pow( (pow(a,3)+1 ),(-1/3))*sin(a) + pow( (pow(b,3)+1 ),(-1/3))*sin(b))/2+s);
    return i3;
}
int main()
{
    double a,b,h;
    int n;
    printf("Введите границы отрезка интегрирования\n");
    scanf("%lg %lg",&a,&b);
    printf("Введите количество отрезков разбиения\n");
    scanf("%d",&n);
    h = (double)(b-a)/n;
    printf("Интеграл по методу прямоугольников равен %lg\n", mpr(a,h,n));
    printf("Интеграл по методу трапеций равен %lg\n", mtr(a,b,h,n));
 
    return 0;
}

8   голосов, оценка 3.875 из 5


СОХРАНИТЬ ССЫЛКУ