Неделю бьюсь с конечно-разностной аппроксимацией 2 производной. Дело в том, что на начале отрезка, где рассматриваются производные, аналитическая и численная 2-е производные различаются на 10-15 единиц! Препод упорно настаивает: не может такого быть! А формула правильная:
![$$f''_i=\frac{f_{i-1}-2f_i+f_{i+1}}{h^2};$$ $$f''_i=\frac{f_{i-1}-2f_i+f_{i+1}}{h^2};$$](https://dxdy-03.korotkov.co.uk/f/a/3/b/a3b9b09c78e8ff68443c950610abfd4882.png)
и программная реализация вроде тоже:
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:
![Изображение](http://storage7.static.itmages.ru/i/16/0401/s_1459483148_7808531_7ee9d0cfc5.png)
при N=100:
![Изображение](http://storage8.static.itmages.ru/i/16/0401/s_1459483236_6156480_1f77fb2215.png)
при N=200:
![Изображение](http://storage9.static.itmages.ru/i/16/0401/s_1459483302_2670960_1d33a31f7e.png)
То есть эта разница ещё и
растёт с уменьшением шага! В чём проблема?