TUGAS METODE NUMERIK
METODE HORNER UNTUK EVALUASI POLINOM
Disusun oleh :
Akmal (08011381621064)
Widya Dwi Wulandari (08011381621068)
Dosen pengajar :
Anita Desiani, [Link]., [Link]
FAKULTAS MIPA JURUSAN MATEMATIKA
UNIVERSITAS SRIWIJAYA
2017
1. Landasan Teori
a. Pengertian Suku Banyak
Suku banyak adalah suatu bentuk yang memuat variabel berpangkat. Suku banyak dalam x
berderajat n dinyatakan dengan :
Dengan syarat: n bagian dari bilangan cacah dan an, an 1, , a0 disebut koefisien-koefisien
suku banyak, a0 disebut suku tetap dan an 0.
Contoh :
1) 6 3 + 3 2 + 4 8 adalah suku banyak berderajat 3, dengan koefisien 3 adalah
6,koefisien 2 adalah 3, koefisien x adalah 4, dan suku tetapnya 8.
7 7
2) 2 2 + 5 + 4 adalah bukan suku banyak karena memuat pangkat negatif yaitu atau
7x1 dengan pangkat 1 bukan anggota bilangan cacah.
b. Nilai Suku Banyak
Suku banyak dengan derajat n dapat dinyatakan sebagai suatu fungsi f(x) berikut ini.
f(x) = anxn + an-1xn-1 + an-2xn-2 + ...... + a1x1 + a0 , di mana n bagian dari bilangan cacah dan an
0. Nilai f(x) tersebut merupakan nilai suku banyak. Untuk menentukan nilai suku banyak
dapat dilakukan dengan dua cara berikut :
(1) Cara substitusi
Misalkan suku banyak f(x) = ax3 + bx2 + cx +d. Jika nilai x diganti k, maka nilai suku
banyak f(x) untuk x = k adalah f(k) = ak3 + bk2 + ck +d.
(2) Cara Horner/bangun/skema/sintetik
Misalkan suku banyak f(x) = ax3 + bx2 + cx +d. Jika akan ditentukan nilai suku banyak
x = k, maka:
f(x) = ax3 + bx2 + cx + d
f(x) = (ax2 + bx + c)x + d
f(x) = ((ax + b)x + c)x + d
Sehingga f(k) = ((ak + b)k + c)k + d.
Bentuk tersebut dapat disajikan dalam bentuk skema berikut ini.
Agar lebih memahami tentang cara Horner, pelajarilah contoh soal berikut.
Contoh soal
Hitunglah nilai suku banyak untuk nilai x yang diberikan berikut ini.
1. f(x) = x3 + 2x2 + 3x -4 untuk x = 5
2. f(x) = 2x3 -3x2 + 9x +12 untuk x =
Penyelesaian :
Jadi nilai suku banyak f(x) untuk x = 5 adalah 186.
Jadi, nilai suku banyak f(x) untuk x = adalah 16.
INGAT !!!
Masing-masing koefisien x disusun dari pangkat terbesar sampai terkecil
(perpangkatan x yang tidak ada, ditulis 0).
Tanda panah pada skema berarti mengalikan dengan k, kemudian dijumlahkan dengan
koefisien yang berada di atasnya.
2. Program
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
int main()
{
int a[20]={0};//koefisien dari suku banyak
int b[20]={0}; // hasil dari pembagian horner
int d[20]={0};
int i;//perulangan
int n; //derajat polinom
int o; // nilai x yang diketahui disoal
int p; //nilai suku banyak
string lanjut; // variabel untuk memilih melanjutkan kembali program / berhenti
kembali:
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<" AKAR-AKAR POLINOM "<<endl;
cout<<METODE HORNER UNTUK EVALUASI POLINOM "<<endl<<endl<<endl;
cout<<" ======= Disusun Oleh ======= "<<endl<<endl;
cout<<" Akmal "<<endl;
cout<<" Widya Dwi Wulandari "<<endl<<endl<<endl;
cout<<" ======== Dosen Pengajar ======== "<<endl;
cout<< Anita Desiani, [Link]., [Link] "<<endl<<endl<<endl;
cout<<" JURUSAN MATEMATIKA "<<endl;
cout<<FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM"<<endl;
cout<<" UNIVERSITAS SRIWIJAYA "<<endl;
cout<<" 2017 "<<endl;
getch ();
system("cls");
aku:
cout<<" - Metode horner untuk evaluasi polinom - "<<endl<<endl;
cout<<"\n Input nilai pangkat tertinggi dari fungsi : ";cin>>n; // masukkan nilai untuk
menentukan derajatnya
if(n>20 || n<= 0)
{ system ("cls");
Beep(987,800); // untuk mengeluarkan bunyi bip yg pertama (seperti peringatan)
Beep(988,1500); // untuk mengeluarkan bunyi bip yg kedua
system ("color 47"); // untuk mengubah backgroud menjadi warna merah
cout<<"\n XXX PROGRAM ERROR XXX"<<endl<<endl;
cout<<"NOTE !! (Program hanya bisa menginputkan nilai sampai derajat ke
20)"<<endl<<endl<endl<<endl;
cout<<"Apakah anda ingin mengulang program (ketik 'ingin' jika ulang )."<<endl;
cin>>lanjut; //ketik 'ingin' jika ingin mengulang kembali program
system ("color 0F"); // untuk mengubah background menjadi warna hitam
if(lanjut=="ingin")
goto kembali;
return 0;}
cout<<"\n Input nilai koefisien !\n";for(i=n;i>=0;i--)
{cout<<" Koefisien X^"<<i<<" : ";cin>>a[i];} // masukkan masing2 koefisien
dari suku banyak sampai ke-n
cout<<"\n\nP(x) = ";
for(i=n;i>=0;i--)
{if(i==0)
{cout<<" + ("<<a[i]<<") = 0";break;} // pada perulangan i=0 maka akan kita
keluarkan nilai dari a[0] = 0
cout<<"("<<a[i]<<")X"; // keluarkan nilai a[i](koefisien) yang telah diinputkan
tadi dgn perulangan sebanyak n
if (i==1)
continue;
cout<<"^"<<i<<" + ";}
cout<<endl;
cout<<"Masukkan nilai x = ";cin>>o; // masukkan nilai x yang telah diketahui
system ("cls"); //untuk menghapus layar sebelumnya agar terlihat lebih rapi
cout<<"Tentukan nilai suku banyak dari P(x) = ";
for(i=n;i>=0;i--)
{if(i==0)
{cout<<" + ("<<a[i]<<") = 0";break;}
cout<<"("<<a[i]<<")x";
if (i==1)
continue;
cout<<"^"<<i<<" + ";}
cout<<" untuk x = "<<o<<" beserta polinom sisanya."<<endl<<endl;
cout<<"Penyelesaian : ";
cout<<endl;
cout<<endl<<endl<<endl;
cout<<"x = "<<o<<" | ";
for(i=n;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
cout<<" |\n";
cout<<" | ";
b[n]=a[n]*1;
for(i=n-1;i>=0;i--)
{
d[i]=o*b[i+1];
if(i==0)
p=a[i]+d[i];
b[i]=a[i]+d[i];
cout<<d[i]<<" ";
}
cout<<endl;
for(i=n;i>=0;i--)
{
cout<<"_________"; }
cout<<" + "; cout<<endl;
cout<<" | ";
for(i=n;i>=0;i--)
cout<<b[i]<<" ";
cout<<endl<<endl;
cout<<"Nilai dari P(x) untuk x = "<<o<<" memiliki nilai sebesar "<<p<<endl; //
cout<<"Dan menghasilkan polinom sisa ";
for(i=n;i>=0;i--)
{
if(i==1)
{cout<<" + "<<b[i];break;}
cout<<"("<<b[i]<<")X";
if (i==2)
continue;
cout<<"^"<<i-1<<" + ";
}
cout<<endl<<endl;
cout<<" Apakah anda ingin mengulanginya lagi? ketik 'ya' jika ingin. "<<endl;
cin>>lanjut;
if (lanjut=="ya")
{system ("cls");
goto aku;}
else
{ system ("cls");
cout<<"Terima kasih atas kontribusi anda ^_^ sampai berjumpa lagi"<<endl;}
}
3. Pseudo Code
Algoritma_mencari_nilai_suku_banyak
Deklarasi
a[20]={0} : integer;//koefisien dari suku banyak
b[20]={0} : integer; // hasil dari pembagian horner
d[20]={0} : integer;
i : integer;//perulangan
n : integer; //derajat polinom
o : integer; // nilai x yang diketahui disoal
p : integer; //nilai suku banyak
lanjut : string; // variabel untuk memilih melanjutkan kembali program / berhenti
Deskripsi
begin
aku:
write( - Metode horner untuk evaluasi polinom - )
write(Input nilai pangkat tertinggi dari fungsi : )
read(n); // masukkan nilai untuk menentukan derajatnya
if (n>20 || n<= 0) then
system ("cls");
Beep(987,800); // untuk mengeluarkan bunyi bip yg pertama (seperti peringatan)
Beep(988,1500); // untuk mengeluarkan bunyi bip yg kedua
system ("color 47"); // untuk mengubah backgroud menjadi warna merah
write( XXX PROGRAM ERROR XXX )
write( NOTE !! (Program hanya bisa menginputkan nilai sampai derajat ke 20) )
write( Apakah anda ingin mengulang program (ketik 'ingin' jika ulang ))
read(lanjut) //ketik 'ingin' jika ingin mengulang kembali program
system ("color 0F"); // untuk mengubah background menjadi warna hitam
if (lanjut=="ingin") then
goto kembali;
return 0;
end if
write(Input nilai koefisien !)
for(i=n to >= 0)
write(Koefisien X^ , i)
read(a[i])// masukkan masing2 koefisien dari suku banyak sampai ke-n
end for
write (P(x) = )
for(i=n to >= 0)
if(i==0) then
write(+ (, a[i] ,) = 0)// pada perulangan i=0 maka akan kita keluarkan nilai
dari a[0] = 0
break;
end if
write((, a[i], )x) // keluarkan nilai a[i](koefisien) yang telah diinputkan tadi dgn
perulangan sebanyak n
if (i==1) then
continue;
write (^ , i ,+ )
end for write (Masukkan nilai x =)
read(o) // masukkan nilai x yang telah diketahui
system ("cls"); //untuk menghapus layar sebelumnya agar terlihat lebih rapi
write (Tentukan nilai suku banyak dari P(x) =)
for(i=n to >= 0)
if(i==0) then
write(+ (, a[i] ,) = 0)// pada perulangan i=0 maka akan kita keluarkan nilai
dari a[0] = 0
break;
end if
write((, a[i], )x)// keluarkan nilai a[i](koefisien) yang telah diinputkan tadi dgn
perulangan sebanyak n
if (i==1) then
continue;
write (^ , i ,+ )
end for
write( untuk x =, o ,beserta polinom sisanya.)
write(Penyelesaian :)
write(x =, o, |)
for(i=n to >= 0)
write(a[i], " ")
write(| )
write(| )
b[n] a[n]*1;
for(i=n to >= 0)
d[i] o*b[i+1];
if(i==0) then
p a[i]+d[i];
b[i] a[i]+d[i];
write (d[i]," ")
end for
for(i=n to >= 0)
write(_________)
end for
write(+)
write (| )
for(i=n to >= 0)
write(b[i], " ")
write(Nilai dari P(x) untuk x =, o, memiliki nilai sebesar, p) //
write(Dan menghasilkan polinom sisa )
for(i=n to >= 0)
if(i==1) then
write(+,b[i])
break;
end if
write((, b[i],)x)
if (i==2) then
continue;
write(^, i-1, + )
end for
write ( Apakah anda ingin mengulanginya lagi? ketik 'ya' jika ingin.)
read(lanjut) if (lanjut=="ya") then
system ("cls");
goto aku;
end if
else
system ("cls");
write(Terima kasih atas kontribusi anda ^_^ sampai berjumpa lagi)
end if
end
4. Hasil Program