• Tidak ada hasil yang ditemukan

Visualisasi Grafik dengan Mathematica

N/A
N/A
Protected

Academic year: 2023

Membagikan "Visualisasi Grafik dengan Mathematica"

Copied!
16
0
0

Teks penuh

(1)

Visualisasi

Grafik dengan

Mathematica

N. K. Kutha Ardana

Departemen Matematika

FMIPA – IPB University

(2)

Ngakan Komang Kutha Ardana

Departemen Matematika, FMIPA - IPB University

Desember 2022

Ringkasan

Sebagai pionir dalam sistem aljabar komputer, Mathematica memiliki berbagai kemampuan dam visualisasi grafik maupun data. Berbagai metode penting dalam visualisasi grafik dalam 2 dimensi, 3 dimensi, serta visualisasi data dipaparkan pada artikel ini. Metode-metode ini amat relevan dalam komputasi teknis yang terkait dalam bidang seperti matematika, statistika, maupun sains data.

Pendahuluan

Di usianya yang telah memasuki tiga dekade sejak diperkenalkan pada tahun 1988, Mathematica (https://wolfram/mathemathica.com) dikenal dalam bidang komputasi teknis serta menyediakan lingkungan komputasi utama bagi jutaan inovator, pendidik, siswa. Mathematica menyedi- akan satu sistem terintegrasi yang meliputi sistem aljabar komputer (SAK, CAS = Computer Algebra System) yang mengintegrasikan berbagai kemampuan seperti komputasi (simbolik, numerik), visualisasi, bahasa pemrograman, algoritme pembelajaran mesin, komputasi awan, pengolah kata ke dalam suatu lingkungan interaktif yang mudah digunakan. Mathematica tersedia di semua sistem desktop modern maupun melalui komputasi awan di browser.

Selain kemampuan komputasi secara simbolik dan numerik, Mathematica juga sangat andal dalam visualisasi grafik maupun data. Pada bagian ini akan dijelaskan beberapa jenis grafik beserta opsi-opsi grafik yang penting. Contoh-contoh lainnya dapat mengacu misalnya pada (Ruskeep- ää, 2009), (Abel dan Braselton, 2022). Mathematica sendiri juga menyediakan Wolfram Documentation pada menu Help, terutama pada bagian Visualization & Graphics. Perintah-perintah pada artikel ini telah dicoba pada Mathematica versi 13.2.

Grafik Dua Dimensi

Plot

Plot[f[x], {x, xmin, xmax}]

akan menghasilkan grafik fungsi f dengan domain (xmin, xmax).

In[1]:= Plot[Sin[x] / x, {x, -10, 10}]

Out[1]=

0.2 0.4 0.6 0.8 1.0

(3)

Untuk menampilkan beberapa grafik fungsi secara bersamaan, kumpulkan ke dalam suatu list (apit fungsi-fungsi tersebut dengan tanda kurung kurawal).

In[2]:= Plot[{Sin[x], Cos[x]}, {x, -π, π}]

Out[2]=

-3 -2 -1 1 2 3

-1.0 -0.5 0.5 1.0

Evaluate

Evaluate antara lain digunakan untuk mengevaluasi Table yang digunakan sebagai argumen dari Plot. Misalkan kita ingin memplot fungsi sin(n x) untuk n=1, 2, 3 pada interval variabel bebas x∈ [0, 2π].

Terlebih dahulu dibangkitkan list sin(n x)

In[3]:= Clear[x]

Table[Sin[n x], {n, 1, 3}]

Out[4]= {Sin[x], Sin[2 x], Sin[3 x]}

Perintah berikut akan menghasilkan pesan kesalahan karena Plot belum mengevaluasi argumen pertama sebelum melakukan evaluasi titik-titik sampling.

In[5]:= Plot[Table[Sin[n x], {n, 1, 3}], {x, 0, 2 π}]

Out[5]=

1 2 3 4 5 6

-1.0 -0.5 0.5 1.0

Dengan Evaluate, Mathematica akan mengevaluasi argumennya sebelum dilakukan evaluasi titik-titik sampling.

In[6]:= Plot[Evaluate[Table[Sin[n x], {n, 1, 3}]], {x, 0, 2 π}]

Out[6]=

1 2 3 4 5 6

-1.0 -0.5 0.5 1.0

Opsi dan gaya tampilan

Plot[f[x], {x, xmin, xmax},opsi]

akan menghasilkan grafik fungsi f dengan domain (xmin, xmax) disertai beragam opsi.

(4)

Opsi grafik

Tampilan grafik dapat diatur sesuai dengan yang diinginkan, dengan cara memberikan opsi tertentu. Ada banyak opsi untuk Plot. Berikut diperlihatkan opsi bagi Plot beserta default nilai masing-masing opsi.

In[7]:= Options[Plot]

Out[7]= AlignmentPoint  Center, AspectRatio  1

GoldenRatio, Axes  True, AxesLabel  None, AxesOrigin  Automatic, AxesStyle  {}, Background  None, BaselinePosition  Automatic, BaseStyle  {}, ClippingStyle  None, ColorFunction  Automatic, ColorFunctionScaling  True, ColorOutput  Automatic, ContentSelectable  Automatic, CoordinatesToolOptions  Automatic, DisplayFunction  $DisplayFunction, Epilog  {}, Evaluated  Automatic,

EvaluationMonitor  None, Exclusions  Automatic, ExclusionsStyle  None,

Filling  None, FillingStyle  Automatic, FormatType  TraditionalForm, Frame  False, FrameLabel  None, FrameStyle  {}, FrameTicks  Automatic, FrameTicksStyle  {}, GridLines  None, GridLinesStyle  {}, ImageMargins  0., ImagePadding  All,

ImageSize  Automatic, ImageSizeRaw  Automatic, LabelingSize  Automatic, LabelStyle  {}, MaxRecursion  Automatic, Mesh  None, MeshFunctions  {#1 &}, MeshShading  None,

MeshStyle  Automatic, Method  Automatic, PerformanceGoal  $PerformanceGoal, PlotLabel  None, PlotLabels  None, PlotLayout  Automatic, PlotLegends  None, PlotPoints  Automatic, PlotRange  {Full, Automatic}, PlotRangeClipping  True, PlotRangePadding  Automatic, PlotRegion  Automatic, PlotStyle  Automatic, PlotTheme  $PlotTheme, PreserveImageOptions  Automatic, Prolog  {},

RegionFunction  (True &), RotateLabel  True, ScalingFunctions  None, TargetUnits  Automatic, Ticks  Automatic, TicksStyle  {}, WorkingPrecision  MachinePrecision

Setiap opsi dituliskan dalam sintaks:

namaOption nilai dan dipisahkan oleh tanda koma bila terdapat lebih dari satu opsi.

Berikut diberikan contoh opsi “PlotLabels” untuk memberikan label bagi masing-masing grafik sesuai dengan ekspresi fungsi yang digunakan.

In[8]:= Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi}, PlotLabels  "Expressions"]

Out[8]= sin(x)

cos(x)

1 2 3 4 5 6

-1.0 -0.5 0.5 1.0

(5)

Pada contoh berikut, grafik fungsi sin(x) /x diberi label, garis grid. Keduanya berturut-turut dinyatakan oleh opsi PlotLabels dan GridLines. Bandingkan dengan contoh sebelumnya untuk fungsi yang sama tanpa mengubah opsi apa pun.

In[9]:= PlotSin[x]

x , {x, -10, 10}, Frame  True, PlotLabels  "Expressions", GridLines  Automatic

Out[9]=

sin(x) x

-10 -5 0 5 10

-0.2 0.0 0.2 0.4 0.6 0.8 1.0

Mathematica menyediakan opsi “PlotTheme” untuk berbagai tema grafik. Tema lainnya dapat dilihat dengan mengeksplorasi perintah

“PlotThema” lebih jauh (letakkan kursor di atas perintah “PlotThema”, lalu klik informasi i.

In[10]:= Plot[Evaluate[Table[BesselJ[n, x], {n, 3}]], {x, 0, 10}, PlotTheme  #] & /@

{"Default", "Detailed", "Classic", "Monochrome", "Scientific", "Minimal"}

Out[10]=

2 4 6 8 10

-0.2 0.2 0.4 0.6

,

0 2 4 6 8 10

-0.2 0.0 0.2 0.4 0.6

J1(x) J2(x) J3(x)

,

2 4 6 8 10

-0.2 0.2 0.4 0.6

,

2 4 6 8 10

-0.2 0.2 0.4 0.6

,

0 2 4 6 8 10

-0.2 0.0 0.2 0.4 0.6

, 

Opsi-opsi penting lainnya akan diberikan pada contoh-contoh selanjutnya sesuai dengan keperluan.

Gaya tampilan grafik

Opsi grafik yang digunakan untuk mengatur gaya tampilan grafik adalah PlotStyle. Dengan opsi ini kita dapat mengatur warna (RGBCol

or[..]), jenis garis (Dashing[..]), ketebalan garis (Thickness[..]), ukuran titik (PointSize[..]), dsb.

(6)

Pada contoh berikut, grafik sin(x) ditampilkan dengan ketebalan 2% dari lebar grafik, sementara grafik cos(x) ditampilkan terputus-putus dengan panjang 3% dari lebar grafik.

In[11]:= Plot[{Sin[x], Cos[x]}, {x, -3, 3}, PlotStyle  {Thickness[0.02], Dashing[{0.03}]}]

Out[11]=

-3 -2 -1 1 2 3

-1.0 -0.5 0.5 1.0

Ada beberapa cara untuk memberikan efek warna. Perintah RGBColor[r,g,b] menyatakan warna yang tersusun dari r, g, dan b persen warna merah, hijau, dan biru. Jadi, RGBColor[1,0,0] adalah merah, dan RGBColor[1,0,1] adalah ungu (campuran merah dengan biru).

Perhatikan bahwa parameter r, g, dan b harus bernilai mulai dari 0 hingga 1.

Cara lain yang dapat dilakukan adalah dengan perintah GrayLevel[g] (0g1), dimana GrayLevel[0] adalah hitam dan GrayLevel[1] adalah putih.

ParametricPlot

Perintah

ParametricPlot[{x[t],y[t]}, {t, tmin, tmax}]

menampilkan grafik persamaan parametrik x=f(t) dan y=g(t), dengan t suatu parameter yang memiliki domain (tmin, tmax).

Berikut adalah grafik persamaan parametrik sebuah lingkaran berjari-jari 1.

In[12]:= ParametricPlot[{Sin[t], Cos[t]}, {t, 0, 2 π}]

Out[12]=

-1.0 -0.5 0.5 1.0

-1.0 -0.5 0.5 1.0

(7)

Grafik berikut ditampilkan dalam suatu bingkai (Frame->True), tanpa menggunakan sumbu (Axes->False), dengan label bingkai

"x" dan "y" (FrameLabel->{"x","y"})

In[13]:= ParametricPlot[{102 Cos[t] + 60 Cos[17 / 15 t], 102 Sin[t] - 60 Sin[17 / 15 t]}, {t, 0, 30 Pi}, AspectRatio  Automatic, Axes  False, Frame  True, FrameLabel  {"x", "y"}]

Out[13]=

-150-100 -50 0 50 100 150 -150

-100 -50 0 50 100 150

x

y

ContourPlot

ContourPlot digunakan untuk menampilkan grafik fungsi yang berbentuk implisit, F(x, y) =0.

ContourPlot[persImp, {x, a, b}]

ContourPlot[persImp,{x,a,b},{y,c,d}]

Berikut contoh sebuah grafik fungsi implisit.

In[14]:= ContourPlot3 x2+3 x y + 12 y212, {x, -2.5, 2.5}, {y, -2.5, 2.5}

Out[14]=

-2 -1 0 1 2

-2 -1 0 1 2

(8)

Seperti halnya pada Plot, ContourPlot dapat digunakanan untuk menampilkan beberapa grafik fungsi implisit secara bersamaan.

Interval tampilan kedua sumbu juga dapat dibatasi.

In[15]:= ContourPlot3 x2+3 x y + 12 y212, 12 x2+3 x y + 3 y212, 3 x2+12 x y + 3 y21, {x, -2.5, 2.5}, {y, -2.5, 2.5}

Out[15]=

-2 -1 0 1 2

-2 -1 0 1 2

Plot Tebaran Data: ListPlot

Seringkali kita harus bekerja dengan data. Misalnya, kita perlu menampilkan tebaran data sebelum melakukan analisis lebih lanjut. Perintah untuk menampilkan tebaran data (yang berupa list dalam Mathematica) adalah ListPlot, dengan format

ListPlot[listData, opsi]

listData dapat berupa list berdimensi satu atau pasangan data {xi, yi}.

Misalkan kita memiliki data berdimensi satu sebagai berikut

In[16]:= data1 = Table[Prime[n] / n, {n, 10}] // N

Out[16]= {2., 1.5, 1.66667, 1.75, 2.2, 2.16667, 2.42857, 2.375, 2.55556, 2.9}

Mathematica akan memplot list berdimensi satu {y1, y2, ..., yn} sebagai pasangan berurut {{1, y1}, {2, y2}, ..., {n, yn}}

In[17]:= ListPlot[data1, PlotStyle  PointSize[0.02], PlotRange  {{0, 10}, {1, 3}}, AxesOrigin  {0, 1}]

Out[17]=

0 2 4 6 8 10

1.0 1.5 2.0 2.5 3.0

Perhatikan opsi AxesOrigin->{0,1} yang mengontrol perpotongan sumbu di titik (0, 1), dan opsi PointSize yang mengatur ukuran titik data.

(9)

Berikut akan diplot beberapa pasangan data acak yang terlebih dahulu akan dibangkitkan

In[18]:= data2 = N[Table[{n, n + Sin[n] + RandomReal[]}, {n, 0, 5 π, 0.2` π}]];

ListPlot[data2, PlotStyle  PointSize[0.02`]]

Out[19]=

5 10 15

5 10 15

Opsi PlotJoined->True berguna untuk menghubungkan pasangan data yang bersebelahan.

In[20]:= ListPlot[data2, Joined  True]

Out[20]=

5 10 15

5 10 15

Perintah di atas dapat diringkas dengan ListLinePlot.

In[21]:= ListLinePlot[data2]

Out[21]=

5 10 15

5 10 15

Filling

Opsi Filling memungkinkan kita untuk mengisi area antara grafik dan sumbu-x atau area antar grafik dengan warna tertentu.

In[22]:= Plot[Sin[x], {x, 0, 2 π}, Filling  Axis, Ticks  {Range[0, 2 π, π / 2], {-1, 1}}]

Out[22]=

π

2 π 3π

2 2π

-1 1

(10)

In[23]:= Plot[{Sin[x], Cos[x]}, {x, 0, 2 π}, Filling  {1  {2}}]

Out[23]=

1 2 3 4 5 6

-1.0 -0.5 0.5 1.0

Grafik Tiga Dimensi

Plot3D

Plot3D adalah perintah untuk menampilkan plot permukaan dalam ruang berdimensi tiga yang analog dengan perintah Plot pada ruang berdimensi tiga. Argumennya berupa fungsi dua variabel beserta masing-masing domainnya.

Berikut ini ditampilakn grafik fungsi

z = sin x

2+y2 x2+y2

Perhatikan bahwa fungsi tersebut tak terdefinisi pada (0, 0) sehingga akan memunculkan pesan peringatan.

In[24]:= Plot3D[Sin[Sqrt[x ^ 2 + y ^ 2]] / Sqrt[x ^ 2 + y ^ 2], {x, -3 Pi, 3 Pi}, {y, -3 Pi, 3 Pi}, AxesLabel  {"x", "y", "z"}]

Out[24]=

Plot tiga dimensi menggunakan sampling titik (point sampling) dalam proses evaluasi fungsi. Secara default, sebuah grid berukuran 15 x 15 digunakan untuk menghasilkan 152 = 225 titik. Dengan memperbesar nilai ini melalui opsi PlotPoints akan dihasilkan grafik permukaan yang lebih halus, namun memerlukan waktu komputasi maupun memori yang lebih besar.

(11)

Sekarang grafik di atas akan ditampilkan kembali dengan mengatur beberapa opsi, agar diperoleh tampilan yang optimal. Semua titik pada domain disertakan (PlotRange->All), PlotPoints ditingkatkan menjadi 30 sehingga akan dihasilkan permukaan yang lebih halus, baik sumbu maupun kotak dihilangkan. Kemudian, rasio ketiga arah dibuat sama.

In[25]:= Plot3D[Sin[Sqrt[x ^ 2 + y ^ 2]] / Sqrt[x ^ 2 + y ^ 2], {x, -3 Pi, 3 Pi}, {y, -3 Pi, 3 Pi}, PlotRange  All, PlotPoints  30, Axes  False, Boxed  False, BoxRatios  {1, 1, 1}]

Out[25]=

ContourPlot

ContourPlot menampilkan grafik fungsi dua variabel, dimana daerah dengan intensitas keabuan yang sama menunjukkan nilai fungsi yang hampir sama.

In[26]:= Plot3Dx2 25

+ y2

9, {x, -2, 2}, {y, -2, 2}, ViewPoint  {-2, -1, 1}, BoxRatios  {1, 1, 1}

Out[26]=

In[27]:= ContourPlotx2 25

+ y2

9, {x, -2, 2}, {y, -2, 2}

Out[27]=

-2 -1 0 1 2

-2 -1 0 1 2

DensityPlot

DensityPlot secara otomatis menghasilkan sebuah grid level warna, dimana daerah dengan warna yang lebih ringan menyatakan suatu nilai fungsi yang lebih besar dibandingkan dengan daerah yang berwarna lebih gelap.

(12)

In[28]:= DensityPlotx2 25

+y2

9, {x, -2, 2}, {y, -2, 2}

Out[28]=

ParametricPlot3D

ParametricPlot3D analog dengan ParametricPlot. Bergantung pada input yang diberikan, ParametricPlot dapat menghasilkan suatu kurva ruang atau suatu permukaan

ParametricPlot3D akan menghasilkan suatu kurva ruang bila diberikan list dari tiga fungsi parametrik dengan satu parameter.

In[29]:= ParametricPlot3DSin[t], Cos[t], t

3, {t, 0, 6 π}, Axes  False

Out[29]=

List dari tiga fungsi parametrik dengan dua parameter menghasilkan suatu permukaan.

In[30]:= ParametricPlot3D[{Sin[v] Cos[u], Sin[v] Sin[u], Cos[v]}, {u, 0, 1.5` π}, {v, 0, π}]

Out[30]=

(13)

ParametricPlot3D juga dapat menghasilkan gabungan plot permukaan dari beberapa list persamaan parametrik.

In[31]:= ParametricPlot3D{Sin[v] Cos[u], Sin[v] Sin[u], Cos[v]},

1

2Sin[v] Cos4 u 3 , 1

2Sin[v] Sin4 u

3 , Cos[v]

2 , {u, 0, 1.5` π}, {v, 0, π}

Out[31]=

Grafik Fungsi Diskontinu

Menampilkan grafik fungsi diskontinu dimungkinkan dengan beberapa opsi. Berikut tampilan fungsi diskontinu “Floor” dengan berbagai opsi.

In[32]:= Plot[Floor[x], {x, -2, 3},

Epilog  { Table[{EdgeForm[Black], Black, Disk[{i, i}, 0.05]}, {i, -2, 2}], Table[{EdgeForm[Black], White, Disk[{i + 1, i}, 0.05]}, {i, -2, 2}]}]

Out[32]=

-2 -1 1 2 3

-2 -1 1 2

Cara yang lebih efisien adalah dengan memanfaatkan “ResouceFunction[EnhancedPlot]” yang terdapat pada Function Repository Wolfram. Terlebih dahulu didefinisikan fungsi sesepenggal (piecewise functions) f. Tekan tombol [Esc]pw[Esc] untuk menampilkan lambang kurung kurawal pembuka (pw = piecewise), lalu tekan “[Ctrl] + ,” untuk membuat matriks 22, tekan “[Ctrl + [Enter]” untuk menambah baris sehingga menjadi matriks berukuran 32. Tuliskan definisi fungsi beserta domainnya pada kolom yang berbeda.

In[33]:= f[x_] :=

x2 x < 1 x2+2 x > 1 2 x  1

(14)

Tuliskan perintah berikut. Untuk pertama kali, fungsi “EnhancedPlot” akan dicari pada Function Repository Wolfram. Opsi

"FindExceptions"True secara otomatis akan mengidentifikasi jenis ketakkontinuan pada grafik fungsi. Opsi ini juga dapat mengidenti- fikasi garis asimtot suatu fungsi.

In[34]:= ResourceFunction["EnhancedPlot"][f[x], {x, 0, 2}, "FindExceptions"  True]

Out[34]=

0.5 1.0 1.5 2.0

1 2 3 4 5 6

Menampilkan Beberapa Grafik

Perintah Plot maupun Plot3D dapat digunakan untuk menampilkan beberapa grafik sekaligus. Kita juga dapat menampilkan beberapa grafik yang telah didefinisikan sebelumnya.

Show

Show memungkinkan kita untuk menampilkan grafik(-grafik) yang telah dibuat sebelumnya. Perhatikan ilustrasi berikut

In[35]:= plot1 = Plotx Sin[x]2, {x, 0, 3 π}

Out[35]=

2 4 6 8

2 4 6 8

In[36]:= plot2 = Plotx Cos[x]2, {x, 0, 3 π}, PlotStyle  {Dashing[{0.03}], Thickness[0.01]}

Out[36]=

2 4 6 8

2 4 6 8

Show dapat digunakan untuk menampilkan keduanya pada sumbu dan skala yang sesuai.

In[37]:= Show[plot1, plot2]

8

(15)

Berikut adalah pasangan data kelas usia (tahun) dan berat badan (kg):

Clear[data]

data={{1,35},{2,55},{3,68},{4,70},{5,71},{6,75},{7,79},{8,82},{9,81},{10,80},{11,78},{12,99},{

Tebaran tampilan data tersebut adalah sebagai berikut:

In[40]:= dataPlot = ListPlot[data, PlotStyle  PointSize[0.02`], PlotRange  {20, 100}]

Out[40]=

0 2 4 6 8 10 12 14

40 60 80 100

Misalkan pasangan data tersebut diduga dengan model nonlinear

y (t) = 87 1 + e-0.4 (t-1)

In[41]:= y[t_] := 87.0 / (1 + Exp[-0.4 (t - 1)])

In[42]:= modelPlot = Plot[y[t], {t, 1, 15}, PlotRange  {20, 100}]

Out[42]=

0 2 4 6 8 10 12 14

40 60 80 100

Sekarang tebaran data maupun grafik model penduganya dapat ditampilkan bersama dengan perintah Show

In[43]:= Show[dataPlot, modelPlot]

Out[43]=

0 2 4 6 8 10 12 14

40 60 80 100

GraphicsArray

Perintah lainnya yang berguna untuk menampilkan beberapa grafik adalah GraphicsRow (baris), GraphicsColumn (kolom) dan Graphic- sGrid, (baris dan kolom).

(16)

In[44]:= Show[GraphicsRow[{plot1, plot2}]]

Out[44]=

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

GraphicsArray dapat digunakan untuk menampilkan tabel grafik dalam bentuk array dua dimensi.

In[45]:= Show[GraphicsGrid[{{plot1, plot2}, {plot2, plot1, plot2}}]]

Out[45]= 2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

2 4 6 8

Pustaka

Ruskeepää, H. 2009. Mathematica Navigator - Mathematics, Statistics, and Graph, 3rd edition. Elsevier.

Abel, M. L., J. P. Braselton. 2022. Mathematica by Example, 6th edition. Elsevier.

Referensi

Dokumen terkait

Media promosi yang digunakan oleh banyak perusahaan sticker saat ini masih banyak yang hanya menampilkan hasil design dalam bentuk dua dimensi (2D) pada objek motor

under my supervision and has not been submitted for any other degree of this or any other university. It is now being forwarded for the award of Ph.D. degree in Urdi; language

Pengaruh Mekanisme Corporate Governance dan Ukuran Perusahaan Terhadap Earnings Management (Studi Empiris pada Perusahaan Sub Sektor Consumer Goods Industry yang Terdaftar

Penelitian ini dilakukan dengan tujuan untuk mengetahui apakah ada pengaruh pendidikan kewirausahaan dan latar belakang keluarga terhadap motivasi wirausaha mahasiswa

Dari hasil penelitian ini, untuk parameter TSS penurunan yang paling optimum adalah pada dosis 300 mg/l dengan kecepatan pengadukan cepat 150 rpm dengan nilai

Pengukuran laba bukan saja penting untuk menentukan prestasi perusahaan, tetapi juga penting sebagai informasi penentuan kebijakan investasi.Angka laba rugi

Tahun Pem- belian Asal/Cara Perolehan Barang Keterangan Merk/ Type No.. BUKU INVENTARIS GABUNGAN PEMERINTAH

Dari kondisi pembelajaran bahasa Arab siswa MTS Negeri 1 Semarang, dan produk yang ditawarkan oleh peneliti, guru bahasa Arab kelas VII MTS Negeri 1 Semarang mengungkapkan