Неделю бьюсь с конечно-разностной аппроксимацией 2 производной. Дело в том, что на начале отрезка, где рассматриваются производные, аналитическая и численная 2-е производные различаются на 10-15 единиц! Препод упорно настаивает: не может такого быть! А формула правильная:
и программная реализация вроде тоже:
double h=(b-a)/n;
for (int i=0; i<=n; i++){
x[i]=a+i*h;
//std::cout<<x[i]<<std::endl;
f[i]=3*cbrt((x[i]+1)/powr(x[i]-1,2));
}
for (int i=1; i<n; i++) {
f2nd[i]=(f[i-1]-2*f[i]+f[i+1])/powr(h,2);
}
f2nd[0] = (f[0]-2*f[1]+f[2])/powr(h,2);
f2nd[n] = (f[n-2]-2*f[n-1]+f[n])/powr(h,2);
(powr - это моя собственная функция для вычисления степени)
Вот как выглядят аналитическая и численная производные при N=50:
при N=100:
при N=200:
То есть эта разница ещё и
растёт с уменьшением шага! В чём проблема?