m10_-_IF2132_Polinom.pdf

20
IF2132 Pemrograman Komputer Polinom Sem I 2014-2015 Program Studi Teknik Informatika ITB

Transcript of m10_-_IF2132_Polinom.pdf

Page 1: m10_-_IF2132_Polinom.pdf

IF2132 Pemrograman Komputer

Polinom

Sem I 2014-2015

Program Studi Teknik Informatika ITB

Page 2: m10_-_IF2132_Polinom.pdf

Tujuan

� Mahasiswa memahami salah satu pemanfaatan strukturdata array untuk mengelola polinom

10/28/2014IF2132 Pemrograman Komputer2

Page 3: m10_-_IF2132_Polinom.pdf

Deskripsi PersoalanSebuah 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 :

10/28/2014BY/IF20313

Contoh polinom :P1(x) = 4 x5 + 2 x4 +7x2 + 10P2(x) = 23 x100 +9 x9 +2 x7 + 4 x5 +9 x9 + 2 x4 +3 x2 + 1P3(x) = 10P4(x) = 3 x2 + 2 x +8P5(x) = x1000

Page 4: m10_-_IF2132_Polinom.pdf

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

BerapaA(x) + B(x)A(x) = 4 x5 + 2x4 + 7x2 + 10A(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) = ? Turunan dari A(X) ?

10/28/2014BY/IF20314

Page 5: m10_-_IF2132_Polinom.pdf

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.

0 21 3 4 5 6 87

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

10/28/2014BY/IF20315

10 0 7 0 2 4 0 0 0

0 21 3 4 5 6 87

10 -2 0 0 0 0 0 4 0

0 21 3 4 5 6 87

Page 6: m10_-_IF2132_Polinom.pdf

Representasi Polinom dalam Array C++ (1)

int main()

{

int P1[10];

int i;

/* Perlu inisialisasi suku dengan nol .. Kenapa? *//* Perlu inisialisasi suku dengan nol .. Kenapa? */

for (i = 0; i < 10; i ++)

{

P1[i] = 0;

}

return 0;

}

10/28/2014BY/IF20316

Page 7: m10_-_IF2132_Polinom.pdf

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;

}

10/28/2014BY/IF20317

Page 8: m10_-_IF2132_Polinom.pdf

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 “-”

10/28/2014BY/IF20318

Page 9: m10_-_IF2132_Polinom.pdf

Bagaimana menjumlah Polinom ?

for (i = 0; i < 100; i++)

P3[i] = P1[i] + P2[i];

Bagaimana mengurangi Polinom ?

10/28/2014BY/IF20319

Bagaimana mengurangi Polinom ?

for (i = 0; i < 100; i++)

P3[i] = P1[i] - P2[i];

Page 10: m10_-_IF2132_Polinom.pdf

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;P1[i] = 0;

}

Degree1 = -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/28/2014BY/IF203110

Kenapa -1 ?

Page 11: m10_-_IF2132_Polinom.pdf

Pencetakanvoid 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);

}

10/28/2014BY/IF203111

Page 12: m10_-_IF2132_Polinom.pdf

Tipe Bentukan untuk Polinom

� Untuk persoalan ini lebih mudah dibuat suatu tipe baruyang menyimpan array polinom sekaligus maksimum daridegree.

typedef struct {

int P[10];

int Degree;

} Polinom;

10/28/2014BY/IF203112

Page 13: m10_-_IF2132_Polinom.pdf

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(x) = 4 x7 - 2 x + 10 */

P1.P[0] = 10; P1.P[1] = -2; P1.P[7] = 4;

P1.Degree = 7;

10/28/2014BY/IF203113

Page 14: m10_-_IF2132_Polinom.pdf

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 lain seperti 9999

• Apa gunanya?

10/28/2014BY/IF203114

Page 15: m10_-_IF2132_Polinom.pdf

Cetak Polinom

void Cetak(Polinom X)

{

int i;

for (i = 0; i <= X.Degree; i++)

if (i<X.Degree) {

cout << P[i] << “x^” << i << “ + “;}cout << P[i] << “x^” << i << “ + “;}

else {

cout << P[i] << “x^” << i;}

}

/* Bagaimana mencetak Polinom kosong? */

10/28/2014BY/IF203115

Page 16: m10_-_IF2132_Polinom.pdf

Bagaimana menjumlahkan 2 Polinom

for (i = 0; i < 100; i++)

P3.P[i] = P1.P[i] + P2.P[i];

Bagaimana dengan degree?

10/28/2014BY/IF203116

Bagaimana dengan degree?

if (P1.Degree > P2.Degree)

P3.Degree = P1.Degree;

else

P3.Degree = P2.Degree;

Page 17: m10_-_IF2132_Polinom.pdf

� 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:

Bagaimana Membuat Turunan Polinom ?

10/28/2014BY/IF203117

� Contoh:

� P = 4 x5 + 2x4 + 7x2 + 10

� P1 = 20 x4 + 8x3 + 14x

Page 18: m10_-_IF2132_Polinom.pdf

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 secaraterurut mengecil menurut Degree� Bagaimana jika pemakai memasukkan data lebih dari satu suku berderajat

10/28/2014BY/IF203118

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

2. Menuliskan sebuah polinom

Page 19: m10_-_IF2132_Polinom.pdf

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

10/28/2014BY/IF203119

� Polinom P1 “tidak ada lagi”, karena “ditimpa” oleh hasil operasi

Page 20: m10_-_IF2132_Polinom.pdf

Latihan

� Buatlah program lengkap yang:

� Mendefinisikan tipe bentukan polinom

� Membaca sebuah polinom

� Melakukan penambahan polinom

� Melakukan pengurangan polinom

Mencari turunan polinom� Mencari turunan polinom

� Menampilkan polinom

10/28/2014BY/IF203120