m10_-_IF2132_Polinom.pdf
Transcript of m10_-_IF2132_Polinom.pdf
IF2132 Pemrograman Komputer
Polinom
Sem I 2014-2015
Program Studi Teknik Informatika ITB
Tujuan
� Mahasiswa memahami salah satu pemanfaatan strukturdata array untuk mengelola polinom
10/28/2014IF2132 Pemrograman Komputer2
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
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
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
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
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
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
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];
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 ?
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
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
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
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
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
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;
� 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
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
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
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