You are on page 1of 5

Nama : Gabriel Montolalu

NIM : 19021103042
Komputasi Numerik

Tugas 3
Divided Difference Polynomial

Newton Untuk Komputasi-nya akan di pakai koding yang di

bawah ini #include <iostream>

#include <vector>

using namespace

std;

vector<double> getNewton( const vector<double> &x, vector<double> f )


{ int N = x.size();
vector<double>
c(N), temp(N); c[0] =
f[0];

for ( int i = 1; i < N; i++ )


{

for ( int j = 0; j < N - i; j++ ) temp[j] = ( f[j+1] - f[j] ) /


( x[j+i] - x[j] ); f = temp; c[i] = f[0];
}

return c;
}
vector<double> standardPolynomial( const vector<double> &c, const vector<double> &x )
{ int N = x.size();

vector<double> a( N,

0.0 ); vector<double>

p(N), prev(N); p[0] =

1;

a[0] = c[0] * p[0]; for (


int i = 1; i < N; i++ ) {
prev = p; p[0] = -x[i-1] *
prev[0]; a[0] += c[i] *
p[0]; for ( int j = 1; j <=
i; j++ )
{

p[j] = prev[j-1] - x[i-1] * prev[j];


a[j] += c[i] * p[j];
}
}

return a;

}
void writeNewtonPolynomial( const vector<double> &c, const vector<double> &x )
{
int N =
x.size(); cout <<
c[0];
for ( int i = 1; i < N; i++ )
{
cout << showpos << c[i]; for ( int j = 0; j < i; j++ ) cout << "(x"
<< showpos << -x[j] << ")";
}
cout << '\n';
}
void writeStandardPolynomial( const vector<double> &a )
{
int N =

a.size(); cout << a[0]; for ( int i = 1; i < N; i++ ) cout <<

showpos << a[i] << "x^" << noshowpos << i; cout << '\n';

}
double evaluateNewtonPolynomial( const vector<double> &c, const vector<double> &x,
double xval )
{ int N = c.size(); double
result = c[0], poly =

1.0; for ( int i = 1; i < N; i++


)

{
poly *= ( xval - x[i-1]
); result += c[i] * poly;
}
return result;
}
double evaluateStandardPolynomial( const vector<double> &a, double xval )
{ int N = a.size();
double result =
a[N-1];
for ( int i = N-2; i >= 0; i-- ) result = a[i] + xval* result;
return result;
}
int main()
{
vector<double> x = { 0, 1, 2, 3 };
vector<double> y = { 1, 4, 9, 16 };
vector<double> c = getNewton( x, y );
vector<double> a = standardPolynomial(
c, x ); cout << "\nAlvin Wangsawijaya-

19021103016\n"; cout << "Newton polynomial:

"; writeNewtonPolynomial( c, x ); cout <<

"Standard polynomial: ";

writeStandardPolynomial( a );

}
Dan hasil nya sebagai berikut
Dan untuk cara manual nya sebagai berikut

You might also like