#include <iostream>
#include <conio.h>
using namespace std;
class DerivativeBackward
{
public:
void askN();
void askX();
void askF();
void askXX();
void forwardTable();
void calcd1();
void calcd2();
void findH();
void solve();
void fillDelF();
void findS();
private:
double XX, x[10] , f[10][10] , p[10],diff[10][10],P1,delF[10],f1,f2;
int n;
double h,s;
};
void DerivativeBackward::askX()
{
cout << endl;
for(int i = 0; i<n; i++ )
{
cout << "ENter X[" << i << "] : ";
cin >> x[i];
}
cout << endl;
}
void DerivativeBackward::askF()
{
for(int j = 0; j<n; j++ )
{
cout << "ENter F[" << j << "] : ";
cin >> f[0][j];
}
cout << endl;
}
void DerivativeBackward::askXX()
{
cout << "Enter X for which the value is to be found: ";
cin >> XX;
}
void DerivativeBackward::forwardTable()
{
for(int i = 1; i < n; i++)
{
for(int j = 0; j< n-i;j++)
{
f[i][j] = (f[i-1][j+1]-f[i-1][j]);
if(f[i][j] < 0.0000009 && f[i][j] > 0 || f[i][j] >-0.0000009 && f[i][j]<0)
{
f[i][j] = 0;
}
}
}
cout << endl;
cout << "Sn\tXi\tf(Xi)\t";
for(int i = 0; i <n-1;i++)
{
cout << i+1 << " diff\t";
}
cout << endl;
for(int i = 0; i < n; i++)
{
cout <<i+1 <<"\t" << x[i]<< "\t";
for(int j = 0; j< n-i;j++)
{
cout << f[j][i] << "\t";
}
cout << endl;
}
}
void DerivativeBackward::findH()
{
h = x[1] - x[0];
cout << "h = " <<h;
}
void DerivativeBackward::findS()
{
s = (XX - x[n-1])/h;
cout << "s = " <<s;
}
void DerivativeBackward::solve()
{
findH();
findS();
fillDelF();
calcd1();
calcd2();
cout <<endl << "The value of f1 :" << f1;
cout <<endl << "The value of f2 :" << f2;
cout << endl << endl;
}
void DerivativeBackward::fillDelF()
{
for(int i = 1;i<10;i++)
{
if(i<n)
delF[i] = f[i][n-i-1];
else
delF[i] = 0;
}
for(int i = 1;i<10;i++)
{
cout<< delF[i];
}
}
void DerivativeBackward::calcd1()
{
f1 = 1 / h * ( delF[1] + 1/2.0 * (2 * s +1 ) * delF[2] + 1 / (6.0) * (3*s*s + 6 *s +2)*delF[3]
+ 1 /(24.0) *( 4*s*s*s+18*s*s+22*s+6)*delF[4]);
}
void DerivativeBackward::calcd2()
{
f2 = 1 / (h*h) * (delF[2] + 1/6.0 * (6*s+6) * delF[3] + 1/24.0 *(12*s*s+36*s+22)*delF[4]);
}
void DerivativeBackward::askN()
{
cout << "Enter the number of values: ";
cin >> n;
}
int main()
{
DerivativeBackward d1;
d1.askN();
d1.askX();
d1.askF();
d1.askXX();
d1.forwardTable();
d1.solve();
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}