Определение знака подынтегральной функции
Необходимо выяснить знак подынтегральной функции!
В случае её положительности (знакоопределённости) решение
единственно. Если же у функции знаки чередуются, то необходимо определить точки смены знака (нули подынтегральной
функции) и вычислить соответствующие интегралы для определения границ изменения числа корней.
Вот и сам интеграл , он расходящийся.

#include <stdio.h>
#include <math.h>
double f(double x)
{
return 2-4/(pow(x,4)+1);
}
double po(double x)
{
return -(log(x*(x+sqrt(2.))+1.)-log(x*(x-sqrt(2.))+1.)+2.*(atan((2.*x+sqrt(2.))/sqrt(2))+atan((2.*x-sqrt(2.))/sqrt(2.)))-x*pow(2.,3./2.))/sqrt(2.);
}
double markov(double x,double h)
{
static double c1=0.05,c2=49./180.,c3=16./45.,k1,k2;
k1=(1.0-sqrt(3.0/7.0))/2;
k2=(1.0+sqrt(3.0/7.0))/2;
return h*(c1*(f(x)+f(x+h))+c2*(f(x+k1*h)+f(x+k2*h))+c3*f(x+h/2.));
}
double integral(double alpha,double eps,double *sum_delta_abs,int *n)
{
double x=0.,chi,h=x+eps,hnew,sum=0,delta,delta_abs,i1,i2;
*n=0;
*sum_delta_abs=0.;
while(sum<alpha-eps)
{
i1=markov(x,h);
i2=markov(x,h/2.)+markov(x+h/2.,h/2.);
delta=(i2-i1)/255.;
delta_abs=fabs(delta);
chi=pow(delta_abs/eps, 1.0/9.0);
if(chi>10.0)chi=10.0;
if(chi<0.1)chi=0.1;
hnew=0.95*h/chi;
if(delta_abs<eps){
if(sum+i2>alpha+eps) hnew=h*(alpha-sum)/i2;
else
{
x+=h;
sum+=i2;
*sum_delta_abs+=delta_abs;
(*n)++;
}
}
h=hnew;}
return x;
}
int main(void)
{
int n;
double x,alpha,sum_delta_abs;
printf("Введи альфа:\n");
scanf("%le",&alpha);
x=integral(alpha,1.e-7,&sum_delta_abs,&n);
printf("Число шагов: %d\n",n);
printf("b=%lf\n",x);
printf("Гарантированная:%le\n",sum_delta_abs);
printf("Точное значение: %lf\n",po(x));
printf("po(0)=%le\n",po(0));
return 0;
}
Ответы (1 шт):
Да что тут делать-то? Знаменатель всегда положителен, единственное, что может менять знак - числитель.
Поняnно, что при |t| < 1 числитель отрицательный, при |t| > 1 - положительный...
Что тут сложного?
Дальше, понятно, что раз на участке [0,1] подынтегральная функция отрицательна, то сам интеграл меньше нуля и является убывающей функцией от x. Затем он начинает увеличиваться, с асимптотическим ростом sqrt(x), так что при α > 0 решение единственное. При α < 0 решения может быть 2, одно или ни одного - в зависимости от значения α - при 0 > α > -1.46789 - решений 2, при α = -1.46789 - решение одно (x = 1), при α < -1.46789 решений нет.
Вот как выглядит график вашего интеграла как функции от x
