You are on page 1of 16

UNIVERZITET U BIHAĆU

PEDAGOŠKI FAKULTET
ODSJEK MATEMATIKA I FIZIKA
SMJER MATEMATIKA I INFORMATIKA

Edin Pašić

Prvi Newton-ov interpolacioni


polinom
SEMINARSKI RAD
iz predmeta
Numerička matematika

Bihać,2008.
Sadržaj

Opći problem aproksimacije.........................................................................


Kriteriji aproksimacije..................................................................................
Interpolacija..................................................................................................
Interpolacija funkcije polinomima................................................................
Newtonov interpolacioni polinom................................................................
Ocjena pogreške...........................................................................................
Prvi Newtonov interpolacioni polinom urađen u programskom jeziku 3
C/C++ .......................................................................................................... 3
Komentar koda.............................................................................................. 3
Primjeri.......................................................................................................... 4
Literatura....................................................................................................... 5
6

7
8
12
17

Opći problem aproksimacije

Šta je problem aproksimacije? Ako su poznate neke informacije o funkciji f , definiranoj na


nekom skupu X  R , na osnovu tih informacija želimo f zamijeniti nekom drugom
funkcijom  na skupu X , tako da su f i  bliske u nekom smislu. Skup X je najčešće
interval oblika  a, b  (može i neograničen), ili diskretni skup tačaka.
Problem aproksimacije javlja se u dvije bitno različite formulacije.

(a) Poznata je funkcija f (npr. analitički), ali je njena forma prekomplicirana


za računanje. U tom slučaju odabiremo neke informacije o f i po nekom

2
kriteriju odredimo aproksimacijsku funkciju  . U tom slučaju možemo birati
informacije o f koje ćemo koristiti. Jednako tako, možemo ocijeniti grešku
dobivene aproksimacije, obzirom na pravu vrijednost funkcije f .

(b) Funkcija f nije poznata, ali su poznate samo neke informacije o njoj, na
primjer, vrijednosti na nekom skupu tačaka. Zamjenska funkcija  određuje
se iz raspoloživih informacija, koje, osim samih podataka, uključuju očekivani
oblik ponašanja podataka, tj. funkcije  . U ovom se slučaju ne može napraviti
ocjena pogreške bez dodatnih informacija o nepoznatoj funkciji f .

Varijanta (b) je puno češća u praksi. Najčešće se javlja kod mjerenja raznih veličina, jer osim
izmjerenih podataka, pokušavamo aproksimirati i podatke koji se nalaze “izmedu” izmjerenih
tačaka. Primijetimo da se kod mjerenja javljaju i pogreške mjerenja, pa postoje posebne
tehnike za ublažavanje tako nastalih grešaka. Funkcija  bira se prema prirodi modela, ali
tako da bude relativno jednostavna za računanje. Ona obično ovisi o parametrima koje treba
odrediti po nekom kriteriju.

Oblike aproksimacijskih funkcija možemo (grubo) podijeliti na:


(a) linearne aproksimacijske funkcije,
(b) nelinearne aproksimacijske funkcije.

Kriteriji aproksimacije

Aproksimacijske funkcije biraju se tako da “najbolje” zadovolje uvjete koji se postavljaju na


njih. Najčešći su zahtjevi da graf aproksimacijske funkcije prolazi odredenim tačkama tj. da
interpolira funkciju u tim tačkama ili da je odstupanje aproksimacije od polazne funkcije u
nekom smislu bude minimalno, tj. tada se minimizira pogreška.

Interpolacija

Interpolacija je zahtjev da se vrijednosti funkcija f i  podudaraju na nekom konačnom


skupu argumenata (ili kraće tačaka). Te tačke obično nazivamo čvorovima interpolacije.
Ovom zahtjevu se može, ali i ne mora dodati zahtjev da se u čvorovima, osim funkcijskih
vrijednosti, poklapaju i vrijednosti nekih derivacija. Drugim riječima, u najjednostavnijem
obliku interpolacije, kad tražimo samo podudaranje funkcijskih vrijednosti, od podataka o
funkciji f koristi se samo informacija o njenoj vrijednosti na skupu od (n + 1) tačke, tj.
podaci oblika ( x k , f k ) gdje je f k  f ( xk ) , za k  0,1, , n .
Problem određivanja funkcije  na osnovu zahtijeva  ( x k )  f ( x k ) , k  0,1, , n.
nazivamo interpolacija. Funkcija  obično se bira u klasi polinoma, trigonometrijskih,
eksponencijalnih, racionalnih ili nekih drugih funkcija. Kada odredimo funkciju  , onda
možemo i procjenti vrijednosti funkcije f u nekoj tački x, x  xi tako da sastavimo
f ( x)   ( x) . Funkciju  (x) nazivamo interpolacionom funkcijom, a tačke
x k ( k  0,1,..., n) nazivamo čvorovima intetpolacije.

Interpolacija funkcije polinomima

Teorem. Neka je funkcija f zadata u n  1 čvorova ( x k , f k ) , k  0,1,..., n .Tada postoji


jedinstven polinom oblika

3
Pn ( x)  a0 x n  a1 x n 1    a n 1 x  a n , (x 0  x1    x n ) ..........(*)
takav da je
Pn ( x k )  f k ........(**)

Dokaz. Ako u jednakosti (*) zamjenimo uslove (**) dobijamo sistem jednačina za
određivanje koeficijenata a 0 , a1 , , a n , koji glasi

a0 x0n  a1 x0n 1    a n1 x0  a n  f 0


a 0 x1n  a1 x1n 1    a n 1 x1  a n  f1

a 0 x nn  a1 x nn1    a n11 xn  a n  f n

odnosno u matričnom obliku

 x0n x0n1  x0 1  a0   f 0 
 n     
 x1 x1n1  x1 1  a1   f1 
 
Kako je determinanta            
ovog sistema  x n xnn 1
    
 x n 1 a n   f n 
Vandermondova, koja ima  n
n

vrijednost  (x
i , j  0,i  j
i  x j )  0 , sistem ima jedinstveno rješenje, za koeficijente traženog

polinoma.
Dakle, interpolacioni polinom Pn (x ) je jedinstven.
Postoji više metoda za određivanje interpolacionog polinoma.U ovom seminarskom radu
obraditi ćemo prvi Newton-ov interpolacioni polinom.

Newtonov interpolacioni polinom

Pretpostavimo da su zadane vrijednosti y k  f ( x k ) k  0,1,..., n neprekidne funkcije


f :  a, b  R u čvorovima a  x0  x1    xn  b .Interpolacijski polinom ćemo tražiti u obliku

Pn ( x)  a0  a1 ( x  x0 )  a2 ( x  x0 )( x  x1 )    an ( x  x0 )( x  x1 )( x  xn 1 )

Prijeđimo na izračunavanje koeficijenata ai i  0,1, , n .Ako je n=1, onda je interpolacijski


polinom čiji graf prolazi tačkama T0 ( x0 , y0 ) i T1 ( x1 , y1 ) linearna funkcija (pravac kroz
dvije tačke).
y  y0
P1 ( x)  y0  1 ( x  x0 )
x1  x0
y1  y0
A ako uzmemo oznake f  x0   y0 , f  x0 x1   , onda možemo pisati
x1  x0

4
P1 ( x )  f  x0   f  x0 , x1  ( x  x0 )

Uzmimo sada da je n=2. Polinom P2 , čiji graf treba prolaziti tačkama T0 , T1 , T2 ima oblik

P2 ( x)  f  x0   f  x0 , x1  ( x  x0 )   ( x  x0 )( x  x1 ). ………..(*)

Očigledno je P2 ( x0 )  y0 i P2 ( x1 )  y1. Parametar  treba odrediti tako da bude


P2 ( x2 )  y2 . Ako u (*) uvrstimo x  x2 dobivamo
y  y0
y2  y0  1 ( x2  x0 )   ( x2  x0 )( x2  x1 )
x1  x0
y2  y0 y1  y0 y2  y1 y1  y0
   
( x2  x0 )( x2  x1 ) ( x1  x0 )( x2  x1 ) ( x2  x1 )( x2  x0 ) ( x1  x0 )( x2  x0 )

Pa ako uvedemo oznake

y1  y0 y  y1 f  x1 , x2   f  x0 , x1 
f  x0 x1   , f  x1 , x2   2 , f  x0 , x1 , x2  
x1  x0 x2  x1 x2  x0

onda je očigledno   f  x0 , x1 , x2  , pa polinom P2 glasi

P2 ( x)  f  x0   f  x0 , x1  ( x  x0 )  f  x0 , x1 , x2  ( x  x0 )( x  x1 ).

Općenito za (n+1)-u tačku Ti ( xi , yi ) , i  0,1, , n dobivamo

Pn ( x)  f  x0   f  x0 , x1  ( x  x0 )    f  x0 , x1 , xn  ( x  x0 )( x  x1 )( x  xn 1 )

što je opći oblik prvog Newton-og interpolacionog polinoma, gdje brojeve

f  x1 , x2 , , xi   f  x0 , x1 , , xi 1 
f  x0 , x1 , , xi   , i  0,1, , n zovemo podijeljene
xi  x0
razlike.

Kada je funkcija f (x ) zadana parovima vrijednosti ( xi , yi ) , gdje je xi  x0  ih , yi  f ( xi )


i
h  korak interpolacije tj. h  x1  x0  x2  x1    xn  xn 1 . Tada u tom slučaju vrijedi:
k y
f  x0 , x1 , , xk   k 0 , k  0,1, , n
h k!
gdje je:  yi  yi 1  yi ,  , k yi  k 1 yi 1  k 1 yi , i  0,1, , n  1.
1

Pa prvi Newton-ov interpolacioni polinom možemo zapisati i u sljedećem obliku:


y 2 y 0 n y 0
Pn ( x)  y 0  0 ( x  x0 )  ( x  x 0 )( x  x1 )    ( x  x 0 )( x  x1 )  ( x  x n 1 )
1! h 2! h 2 n! h n

Uvedemo li oznaku

5
x  x0
q
h
polinom možemo zapisati i u obliku:

q (q  1) 2 q (q  1)(q  2)(q  n  1) n
Pn ( x)  f 0  qf 0   f0     f0
2! n!

Interpolacija prvim Newton-ovim polinomom se vrši kada se interpolacija vrši u okolini tačke
x  x0 . Ako je x  x0 kažemo da se vrši ekstrapolacija.

Ocjena pogreške

Teorem. Neka je f  Cna, b1 funkcija čije vrijednosti su poznate u ( n  1) tački


xi , i  0,1, , n ,
a  x0  x1    xn  b , yi  f ( xi ) , i  0,1, , n
i neka je Pn odgovarajući interpolacijski polinom. Tada za svaki x   a, b  postoji
   a, b  , tako da je
f ( n 1) ( )
f ( x)  Pn ( x )   ( x) ,  ( x)  ( x  x0 )( x  x1 ) ( x  xn ) .......(1)
( n  1)!

Dokaz Za x  xi tvrdnja je očigledna. Za x  xi , i  0,1, , n definirajmo pomoćnu


funkciju

g ( x )  f ( x )  Pn ( x )  k ( x) ..........(2)
gdje ćemo konstantu k odrediti tako da bude g ( x)  0 . Na taj način funkcija g imat će
barem ( n  2) nultačke. Prema Rolleovom teoremu funkcija g ´ ima barem ( n  1) nultačku,
funkcija g ˝ barem n nultačaka, ... , a funkcija g ( n 1) ima barem jednu nultačku    a, b  .
d n 1 P ( x)  0
Primjetite da je n . Osim toga, kako je  polinom ( n  1) -og reda s vodećim
dx n1
d n 1
koeficijentom 1, imamo n 1  ( x )  (n  1)! . Zato je 0  g ( n1) ( )  f ( n 1) ( )  k (n  1)!
d
( n 1)
f ( )
odakle slijedi k  . Na taj način smo odredili konstantu k tako da je g ( x)  0 .
(n  1)!
Zato iz (2) sljedi (1).

( n 1) M n 1
Ako sa M n 1  xmax
 a ,b 
f ( x) , onda iz (1) sljedi f ( x )  Pn ( x )   ( x) ,
(n  1)!
što znači da pogreška aproksimacije ovisi o ponašanju funkcije .

Prvi Newtonov interpolacioni polinom urađen u programskom jeziku C/C++

Sourse code za prvi Newtonov interpolacioni polinom izgleda ovako:

6
#include<iostream>
using namespace std;

void newton(double niz[],double xv[],double yv[],int n,int m,int p){


double y=0.0, mult=1.0;
int i, j;

for(i=0;i<n;i++)
for(j=n+1;j>i;j--)
yv[j]=((yv[j]-yv[j-1])/(xv[j]-xv[j-i-1]));

cout<<"\n\n...........Ispis polinoma..............\n\n\n";
cout<<"Trazeni polinom ima sljedeci oblik:\n\n";
cout<<" "<<"P(x)= "<<yv[0];

for(i=0;i<n-1;i++){
if(yv[i+1]==0); else if(yv[i+1]>0) cout<<"+"<<yv[i+1];
else if(yv[i+1]<0) cout<<yv[i+1];
int m=i;
for(int j=0;j<=m;j++){
if(xv[j]==0) cout<<"x";
else{
cout<<"(x";
if(xv[j]>0) cout<<"-"<<xv[j]<<")";
else cout<<"+"<<((-1)*(xv[j]))<<")";
}
}
}
cout<<"\n\n.....Vrijednost polinoma u zadanim tackama.....\n\n";

for(j=0;j<m;j++){
mult=1.0;
y=yv[0];
for(i=1;i<n;i++)
y+=yv[i]*(mult*=(niz[j]-xv[i-1]));
cout.precision( p );
cout<<" P("<<niz[j]<<")= "<< fixed << y << endl;
}
}

void main(){
double *xv,*yv;
int n, i,p;

cout<<"Unesite broj tacaka,\n"


<<"kroz koje zelite da polinom prode: ";
cin>>n;

cout<<"\n.....NAPOMENA: Unijeti x-koordinate svih tacaka!....\n\n";


xv=new double[n];
for(i=0;i<n;i++){
cout<<" Unesite x-koordinatu "<<i+1<<" tacke: ";
cin>>xv[i];
}

cout<<"\n.....NAPOMENA: Unijeti y-koordinate svih tacaka!....\n\n";


yv=new double [n];
for(i=0;i<n;i++){
cout<<" Unesite y-koordinatu "<<i+1<<" tacke: ";
cin>>yv[i];

7
}

double *niz;
int m,j;

cout<<"\n\nUnesite broj tacaka za koje "


<<"zelite izracunati vrijednost polinoma P(x): ";
cin>>m;

niz=new double [m];


cout<<"\n\n";
for(j=0;j<m;j++){
cout<<"Unesite "<<j+1
<<" vrijednost za koju zelite izracunati P(x): ";
cin>>niz[j];
}

cout<<"\nSa koliko decimala zelite rezultat: ";


cin>>p;

newton(niz,xv,yv,n,m,p);

delete xv, yv, niz;


}

Komentar koda
#include<iostream>
using namespace std;
Prvi znak # simbol, je signal pretprocesoru. Include je pretprocesorska instrukcija koja kaže :
« Pronađi tu datoteku i pročitaj je prije nego kreneš s prevođenjem programa. »

void main() je glavna funkcija. Počinje s otvorenom zagradom ({).U njoj se nalazi sljedeće:

double *xv,*yv;
int n, i,p;

Pretstavlja deklaraciju varijabli gdje su *xv, *yv pokazivači na podatke tipa double, a n, i, p
varijable tipa int. xv- u našem slučaju će biti niz u koji ćemo smjestiti x-koordinate svih
tačaka, a yv- niz u koji ćemo smjestiti njima odgovarajuće y-koordinate.

cout<<"Unesite broj tacaka,\n"


<<"kroz koje zelite da polinom prode: ";
cin>>n;

Cout ispisuje na ekran: «Unesite broj tačaka kroz koje želite da polinom prođe» .Tada
korisnik sa tastature unese broj tačaka kroz koje hoće da mu polinom prođe.Taj uneseni broj
se smješta u promjenjivu n.

cout<<"\n.....NAPOMENA: Unijeti x-koordinate svih tacaka!....\n\n";


xv=new double[n];
for(i=0;i<n;i++){
cout<<" Unesite x-koordinatu "<<i+1<<" tacke: ";
cin>>xv[i];

8
}
Na ekran se ispisuje napomena koja upozorava korisnika da treba unijeti samo x-koordinate
za sve tačke. xv=new double[n];-je alokacija dinamičke memorije na Heap-u. Dok for
petlja služi za unos x-koordinata.

Analogno zanačenje ima i

cout<<"\n.....NAPOMENA: Unijeti y-koordinate svih tacaka!....\n\n";


yv=new double [n];
for(i=0;i<n;i++){
cout<<" Unesite y-koordinatu "<<i+1<<" tacke: ";
cin>>yv[i];
}

s tim što služi za unos odgovarajućih y-koordinata.

double *niz;
int m,j;

cout<<"\n\nUnesite broj tacaka za koje "


<<"zelite izracunati vrijednost polinoma P(x): ";
cin>>m;

niz=new double [m];


cout<<"\n\n";
for(j=0;j<m;j++){
cout<<"Unesite "<<j+1<<
<<" vrijednost za koju zelite izracunati P(x): ";
cin>>niz[j];
}

Ovdje deklariramo pokazivač na promjenjivu niz tipa double i promjenjive m i j tipa int.
Pokazivač *niz nam je potreban da bi u njega pohranili vrijednosti za koje želimo da
izračunamo P(x). Na ekran nam se ispisuje sljedeća poruka: Unesite broj tačaka za koje želite
izračunati vrijednost polinoma P(x). To znači da korisnik treba da unese broj x-koordinata za
koje želi da izračuna y=f(x)  P(x). Nakon što unese broj tačaka i pritisne enter, tada će unijeti
x-koordinate, odgovarajući na upit koji će se pojaviti.
cout<<"\nSa koliko decimala zelite rezultat: ";
cin>>p;

Ova naredba će korisnika upitati sa koliko decimala poslije zareza želi da dobije vrijednosti
P(x) za unešeni x.

newton(niz,xv,yv,n,m,p);

Ova naredba prestavlja poziv funkcije newton, koja ima oblik:

void newton(double niz[],double xv[],double yv[],int n,int m,int p){


double y=0.0, mult;
int i, j;

for(i=0;i<n;i++)
for(j=n+1;j>i;j--)
yv[j]=((yv[j]-yv[j-1])/(xv[j]-xv[j-i-1]));

cout<<"\n\n...........Ispis polinoma..............\n\n\n";

9
cout<<"Trazeni polinom ima sljedeci oblik:\n\n";
cout<<" "<<"P(x)="<<yv[0];

for(i=0;i<n-1;i++){
if(yv[i+1]==0); else if(yv[i+1]>0) cout<<"+"<<yv[i+1];
else if(yv[i+1]<0) cout<<yv[i+1];
int m=i;
for(int j=0;j<=m;j++){
if(xv[j]==0) cout<<"x";
else{
cout<<"(x";
if(xv[j]>0) cout<<"-"<<xv[j]<<")";
else cout<<"+"<<((-1)*(xv[j]))<<")";
}
}
}
cout<<"\n\n.....Vrijednost polinoma u zadanim tackama.....\n\n";

for(j=0;j<m;j++){
mult=1.0;
y=yv[0];
for(i=1;i<n;i++)
y+=yv[i]*(mult*=(niz[j]-xv[i-1]));
cout.precision( p );
cout<<" P("<<niz[j]<<")= "<< fixed << y << endl;
}
}

Funkcija newton je tipa void, jer ne vraća nikakvu vrijednost. Njoj su proslijeđeni parametri:
double niz[]-je niz u koji su smještene x-koordinate za koje želimo dobiti P(x).
double xv[]-je niz koji sadrži x-koordinate unesenih tačaka.
double yv[]-je niz koji sadrži y-koordinate unesenih tačaka.
int n –broj tačaka koje su unijete.
int m –broj x-koordinata za koje se želi dobiti P(x).
int p –broj decimalni mjesta poslje zaraza.

Treba napomenuti da proslijeđeni parametri predstavljaju samo kopije stvarnih unesenih


podataka tj. funkcija će raditi samo sa njihovim kopijama.

double y=0.0, mult;


int i, j;

Deklaracija i incijalizacija promjenjive y koja će u daljem toku služiti za izračunavanje


vrijednosti P(x) za zadani x.
mult –promjenjiva tipa double, dok su i,j promjenjive tipa int.

for(i=0;i<n;i++)
for(j=n+1;j>i;j--)
yv[j]=((yv[j]-yv[j-1])/(xv[j]-xv[j-i-1]));

Najvažniji dio, a služi za računanje podljeljenih razlika, s tim što se izračunate vrijednosti
spremaju u niz yv i to samo gornji dio tabele podljeljenih razlika.

cout<<"\n\n...........Ispis polinoma..............\n\n\n";
cout<<"Trazeni polinom ima sljedeci oblik:\n\n";
cout<<" "<<"P(x)="<<yv[0];

10
for(i=0;i<n-1;i++){
if(yv[i+1]==0); else if(yv[i+1]>0) cout<<"+"<<yv[i+1];
else if(yv[i+1]<0) cout<<yv[i+1];
int m=i;
for(int j=0;j<=m;j++){
if(xv[j]==0) cout<<"x";
else{
cout<<"(x";
if(xv[j]>0) cout<<"-"<<xv[j]<<")";
else cout<<"+"<<((-1)*(xv[j]))<<")";
}
}
}
Ovaj dio služi za ispis nađenog interpolacionog polinoma na ekran.

cout<<"\n\n.....Vrijednost polinoma u zadanim tackama.....\n\n";

for(j=0;j<m;j++){
mult=1.0;
y=yv[0];
for(i=1;i<n;i++)
y+=yv[i]*(mult*=(niz[j]-xv[i-1]));
cout.precision( p );
cout<<" P("<<niz[j]<<")= "<< fixed << y << endl;
}
Ovaj dio računa vrijednost polinoma u zadanim x-koordinatama i ispisuje ga na ekran sa
zadanom preciznošću odnosno brojem decimalnih mjesta poslije zaraza.

Primjeri

Sada ćemo naš program isprobati na nekoliko primjera.Zadane zadatke ćemo rješiti pomoću
našeg koda u Microsoft Visual Studio i kopirati ih.

Primjer 1. Odrediti interpolacijski polinom za sljedeće tablično zadane funkcije


a).
x -3 0 2 4
y -28 8 52 224
b)
x -2 0 2 3 4
y 88 6 20 108 370
te izračunati njegovu vrijednost za x=10.

Rješenje:

a).

Unesite broj tacaka,


kroz koje zelite da polinom prode: 4

11
.....NAPOMENA: Unijeti x-koordinate svih tacaka!....

Unesite x-koordinatu 1 tacke: -3


Unesite x-koordinatu 2 tacke: 0
Unesite x-koordinatu 3 tacke: 2
Unesite x-koordinatu 4 tacke: 4

.....NAPOMENA: Unijeti y-koordinate svih tacaka!....

Unesite y-koordinatu 1 tacke: -28


Unesite y-koordinatu 2 tacke: 8
Unesite y-koordinatu 3 tacke: 52
Unesite y-koordinatu 4 tacke: 224

Unesite broj tacaka za koje zelite izracunati vrijednost polinoma P(x): 1

Unesite 1 vrijednost za koju zelite izracunati P(x): 10

Sa koliko decimala zelite rezultat: 0

...........Ispis polinoma..............

Trazeni polinom ima sljedeci oblik:

P(x)= -28+12(x+3)+2(x+3)x+2(x+3)x(x-2)

.....Vrijednost polinoma u zadanim tackama.....

P(10)= 2468
Press any key to continue . . .

b).
Unesite broj tacaka,
kroz koje zelite da polinom prode: 5

.....NAPOMENA: Unijeti x-koordinate svih tacaka!....

Unesite x-koordinatu 1 tacke: -2


Unesite x-koordinatu 2 tacke: 0
Unesite x-koordinatu 3 tacke: 2
Unesite x-koordinatu 4 tacke: 3
Unesite x-koordinatu 5 tacke: 4

.....NAPOMENA: Unijeti y-koordinate svih tacaka!....

Unesite y-koordinatu 1 tacke: 88

12
Unesite y-koordinatu 2 tacke: 6
Unesite y-koordinatu 3 tacke: 20
Unesite y-koordinatu 4 tacke: 108
Unesite y-koordinatu 5 tacke: 370

Unesite broj tacaka za koje zelite izracunati vrijednost polinoma P(x): 1

Unesite 1 vrijednost za koju zelite izracunati P(x): 10

Sa koliko decimala zelite rezultat: 0

...........Ispis polinoma..............

Trazeni polinom ima sljedeci oblik:

P(x)= 88-41(x+2)+12(x+2)x+3(x+2)x(x-2)+2(x+2)x(x-2)(x-3)

.....Vrijednost polinoma u zadanim tackama.....

P(10)= 17356
Press any key to continue . . .

Primjer 2. Za funkciju f(x) datu parovima (2,1), (4,5), (6,10), (8,18) naći približne vrijednosti
f(3) i f(1) koristeći se prvim Newton-ovim interpolacionim polinomom.

Rješenje:
Unesite broj tacaka,
kroz koje zelite da polinom prode: 4

.....NAPOMENA: Unijeti x-koordinate svih tacaka!....

Unesite x-koordinatu 1 tacke: 4


Unesite x-koordinatu 2 tacke: 6
Unesite x-koordinatu 3 tacke: 8
Unesite x-koordinatu 4 tacke: 10

.....NAPOMENA: Unijeti y-koordinate svih tacaka!....

Unesite y-koordinatu 1 tacke: 1


Unesite y-koordinatu 2 tacke: 3
Unesite y-koordinatu 3 tacke: 8
Unesite y-koordinatu 4 tacke: 20

13
Unesite broj tacaka za koje zelite izracunati vrijednost polinoma P(x): 2

Unesite 1 vrijednost za koju zelite izracunati P(x): 5


Unesite 2 vrijednost za koju zelite izracunati P(x): 3

Sa koliko decimala zelite rezultat: 3

...........Ispis polinoma..............

Trazeni polinom ima sljedeci oblik:

P(x)= 1+1(x-4)+0.375(x-4)(x-6)+0.0833333(x-4)(x-6)(x-8)

.....Vrijednost polinoma u zadanim tackama.....

P(5)= 1.875
P(3)= -0.125
Press any key to continue . . .

Primjer 3. Zadane su vrijednosti funkcije u sljedećim tačkama

x 0.2 0.4 0.6 0.8


y 4.5910 2.2182 1.4892 1.1642

Odredite interpolacijski polinom, čji graf će prolaziti ovim tačkama, te izračunajte


njegovu vrijednost u tačkama: 0.3 , 0.5 , 0.7 .

Rješenje:
Unesite broj tacaka,
kroz koje zelite da polinom prode: 4

.....NAPOMENA: Unijeti x-koordinate svih tacaka!....

Unesite x-koordinatu 1 tacke: 0.2


Unesite x-koordinatu 2 tacke: 0.4
Unesite x-koordinatu 3 tacke: 0.6
Unesite x-koordinatu 4 tacke: 0.8

.....NAPOMENA: Unijeti y-koordinate svih tacaka!....

Unesite y-koordinatu 1 tacke: 4.5910

14
Unesite y-koordinatu 2 tacke: 2.2182
Unesite y-koordinatu 3 tacke: 1.4892
Unesite y-koordinatu 4 tacke: 1.1642

Unesite broj tacaka za koje zelite izracunati vrijednost polinoma P(x): 3

Unesite 1 vrijednost za koju zelite izracunati P(x): 0.3


Unesite 2 vrijednost za koju zelite izracunati P(x): 0.5
Unesite 3 vrijednost za koju zelite izracunati P(x): 0.7

Sa koliko decimala zelite rezultat: 3

...........Ispis polinoma..............

Trazeni polinom ima sljedeci oblik:

P(x)= 4.591-11.864(x-0.2)+20.5475(x-0.2)(x-0.4)-25.8292(x-0.2)(x-0.4)(x-0.6)

.....Vrijednost polinoma u zadanim tackama.....

P(0.3)= 3.122
P(0.5)= 1.726
P(0.7)= 1.354
Primjer 4. Zadane su vrijednosti funkcije f ( x)  3 x 2   4 ln(  x) 2  1 u sljedećim tačkama

x 3.13 3.14 3.15 3.16


f(x) 30.29918 30.44653 30.66939 30.87478
Odrediti interpolacijski
polinom, čiji će graf prolaziti ovim tačkama, te izračunajte ngegovu vrijednost u tački
  3.1416 .
Rješenje:
Unesite broj tacaka,
kroz koje zelite da polinom prode: 4

.....NAPOMENA: Unijeti x-koordinate svih tacaka!....

Unesite x-koordinatu 1 tacke: 3.13


Unesite x-koordinatu 2 tacke: 3.14
Unesite x-koordinatu 3 tacke: 3.15
Unesite x-koordinatu 4 tacke: 3.16

.....NAPOMENA: Unijeti y-koordinate svih tacaka!....

Unesite y-koordinatu 1 tacke: 30.29918


Unesite y-koordinatu 2 tacke: 30.44653

15
Unesite y-koordinatu 3 tacke: 30.66939
Unesite y-koordinatu 4 tacke: 30.87478

Unesite broj tacaka za koje zelite izracunati vrijednost polinoma P(x): 1

Unesite 1 vrijednost za koju zelite izracunati P(x): 3.1416

Sa koliko decimala zelite rezultat: 5

...........Ispis polinoma..............

Trazeni polinom ima sljedeci oblik:

P(x)= 30.2992+14.735(x-3.13)+377.55(x-3.13)(x-3.14)-15496.7(x-3.13)(x-3.14)(x-3.15)

.....Vrijednost polinoma u zadanim tackama.....

P(3.1416)= 30.47953
Press any key to continue . . .

Literatura

[1] K. Subašić, Elementi numeričke matematike i linearno programiranje, Zenica, 2004.


[2] R. Scitovski, Numerička matematika, Osijek, 2004.
[3] Z. Drmač, M. Marušić, Sanja i Saša Singer, V. Hari, M. Rogina, Numerička analiza,
Zagreb, 2003.
[4] N. Ujević, Uvod u numeričku matematiku, Split, 2004.

16

You might also like