Anda di halaman 1dari 20

IF2132 Pemrograman Komputer

Polinom
Sem I 2014-2015
Program Studi Teknik Informatika ITB

Tujuan
Mahasiswa memahami salah satu pemanfaatan struktur
data array untuk mengelola polinom

IF2132 Pemrograman Komputer

10/28/2014

Deskripsi Persoalan
Sebuah polinom berderajat n didefinisikan sebagai fungsi P(x) sebagai berikut :
P(x) = an x n + an-1 x n-1 +an-2 x n-2 + .............+a2 x 2 +a1 x 1 + a0
Definisi polinom di matematika
P(x) = a0 + a1 x 1 +a2 x 2 + ............. + an-2 x n-2 + an-1 x n-1 + an x n
Contoh polinom :
P1(x) = 4 x5 + 2 x4 +7x2 + 10
P2(x) = 23 x100 +9 x9 +2 x7 + 4 x5 +9 x9 + 2 x4 +3 x2 + 1
P3(x) = 10
P4(x) = 3 x2 + 2 x +8
P5(x) = x1000

BY/IF2031

10/28/2014

Operasi Polinom
Contoh polinom :
A(x) = 4 x5 + 2 x4 +7x2 + 10
B(x) = 9 x9 +2 x7 + 4 x5 +2 x4 +3 x2 + 1
Berapa A(x) + B(x)
A(x) =
4 x5 + 2x4 + 7x2 + 10
B(x) = 9 x9 +2 x7 + 4 x5 + 2x4 + 3x2 + 1
A(x)+B(x) = 9 x9 +2 x7 + 8 x5 + 4x4 + 10x2 + 11
Berapa A(x) B(x) ?
A(x)-B(x) =
Berapa A(X) =
4

Turunan dari A(X) ?


BY/IF2031

10/28/2014

Representasi Polinom dalam Array


A(x) = 4 x5 + 2 x4 +7x2 + 10
Suku dari polinom di representasikan sebagai isi array,
sedangkan pangkat dari polinom adalah index nya.

10 0

A(x) = 4 x7 - 2 x + 10
0

10 -2 0
5

4 0
BY/IF2031

10/28/2014

Representasi Polinom dalam Array C++ (1)


int main()
{
int P1[10];
int i;
/* Perlu inisialisasi suku dengan nol .. Kenapa? */
for (i = 0; i < 10; i ++)
{
P1[i] = 0;
}

return 0;
}

BY/IF2031

10/28/2014

Representasi Polinom dalam Array C++ (2)


int main()
{
int P1[10];
int i;
/* Perlu inisialisasi suku dengan nol
for (i = 0; i < 10; i ++)
{
P1[i] = 0;
}

*/

/* P1(x) = 4 x^7 - 2 x + 10 */
/* isi suku polinom secara manual */
P1[0] = 10;
P1[1] = -2;
P1[7] = 4;
...
return 0;
}

BY/IF2031

10/28/2014

Bagaimana mencetak Polinom ?


void Cetak( int *P)
{
int i;
for (i = 0; i < 10; i++)
cout << P[i] << x^ << i << ;
}

Apa saja masalahnya?




Seberapa banyak yang dicetak?




Bagaimana jika ingin mencetak dari pangkat terbesar ?


Bagaimana jika ingin mencetak yang sukunya tidak nol

Format pencetakan memerlukan hasil yang lebih rapi, misalnya menyisipkan tanda +

Bagaimana dengan suku negatif? Tanda + harus diganti dengan -

BY/IF2031

10/28/2014

Bagaimana menjumlah Polinom ?


for (i = 0; i < 100; i++)
P3[i] = P1[i] + P2[i];

Bagaimana mengurangi Polinom ?


for (i = 0; i < 100; i++)
P3[i] = P1[i] - P2[i];

BY/IF2031

10/28/2014

Variabel Pangkat Terbesar


int main()
{
int P1[10];
int Degree1; /* menyimpan pangkat terbesar */
/* biasanya dikenal juga index degree efektif */
int i;
for (i = 0; i < 10; i ++) {
P1[i] = 0;
}
Degree1 = -1;

Kenapa -1 ?

/* P1(x) = 4 x7 - 2 x + 10 */
/* isi suku polinom secara manual */
P1[0] = 10;
P1[1] = -2;
P1[7] = 4;
Degree1 = 7;
...
return 0;
}
10

BY/IF2031

10/28/2014

Pencetakan
void Cetak( int *P, int maxDegree)
{
int i;
for (i = 0; i <= maxDegree; i++) {
if (i<maxDegree) {cout << P[i] << x^ << i << + ;}
else {cout << P[i] << x^ << i;}
}
}
int main()
{
......
......
Cetak(P1, Degree1);
}
11

BY/IF2031

10/28/2014

Tipe Bentukan untuk Polinom




Untuk persoalan ini lebih mudah dibuat suatu tipe baru


yang menyimpan array polinom sekaligus maksimum dari
degree.

typedef struct {
int P[10];
int Degree;
} Polinom;

12

BY/IF2031

10/28/2014

Mengisi Polinom
for (i = 0; i < 10; i++)
P1.P[i] = 0;
P1.Degree = -1;
/* Isi polinom */
/* P1(x) = 4 x7 - 2 x + 10 */
P1.P[0] = 10;

P1.P[1] = -2;

P1.P[7] = 4;

P1.Degree = 7;

13

BY/IF2031

10/28/2014

Definisi Polinom Kosong





Polinom adalah kosong jika tidak ada definisi polinom.


Representasi struktur polinom kosong
Polinom P1;
P1.Degree = -1

Selain nilai -1, bisa juga digunakan nilai


lain seperti 9999
Apa gunanya?

14

BY/IF2031

10/28/2014

Cetak Polinom
void Cetak(Polinom X)
{
int i;
for (i = 0; i <= X.Degree; i++)
if (i<X.Degree) {
cout << P[i] << x^ << i << + ;}
else {
cout << P[i] << x^ << i;}
}
/* Bagaimana mencetak Polinom kosong? */

15

BY/IF2031

10/28/2014

Bagaimana menjumlahkan 2 Polinom


for (i = 0; i < 100; i++)
P3.P[i] = P1.P[i] + P2.P[i];

Bagaimana dengan degree?


if (P1.Degree > P2.Degree)
P3.Degree = P1.Degree;
else
P3.Degree = P2.Degree;

16

BY/IF2031

10/28/2014

Bagaimana Membuat Turunan Polinom ?




Membuat turunan P1 dari polinom P




proses sekuensial  setiap suku ke-i, i >0, yaitu ai xi pada


polinom P, dihitung i * ai dan disimpan pada tabel ke i-1 pada
polinom P1

Contoh:



17

P = 4 x5 + 2x4 + 7x2 + 10
P1 = 20 x4 + 8x3 + 14x

BY/IF2031

10/28/2014

Latihan
1.

Membentuk sebuah polinom dari pasangan harga


yang dibaca dari alat masukan




Data yang dimasukkan pasangan: degree dan koefisien


Diakhiri dengan: degree -1
Proses: membaca masukan dan melakukan penyisipan secara
terurut mengecil menurut Degree


2.

18

Bagaimana jika pemakai memasukkan data lebih dari satu suku berderajat
sama ???

Menuliskan sebuah polinom

BY/IF2031

10/28/2014

Latihan


Pada operasi penjumlahan, pengurangan dan derivasi


polinom, hasilnya disimpan pada salah satu operan
P1 = P1 + P2
P1 = P1 - P2
P1 = P1

Polinom P1 tidak ada lagi, karena ditimpa oleh hasil


operasi

19

BY/IF2031

10/28/2014

Latihan


Buatlah program lengkap yang:









20

Mendefinisikan tipe bentukan polinom


Membaca sebuah polinom
Melakukan penambahan polinom
Melakukan pengurangan polinom
Mencari turunan polinom
Menampilkan polinom

BY/IF2031

10/28/2014

Anda mungkin juga menyukai