Anda di halaman 1dari 28

Bab 1

Pengantar Metode Numerik dan Scilab

Muhammad Haris Mahyuddin, S.T., M.Eng.

Metode Analitik vs Metode Numerik


Persoalan yang melibatkan model matematika banyak muncul dalam berbagai disiplin ilmu pengetahuan, seperti dalam
bidang fisika, kimia, ekonomi, atau pada persoalan rekayasa (engineering)
Seringkali model matematika tersebut muncul dalam bentuk yang tidak ideal atau rumit. Model matematika yang rumit ini
kadang-kadang tidak dapat diselesaikan dengan metode analitik
Metode analitik adalah metode penyelesaian model matematika dengan rumus-rumus aljabar yang sudah baku (lazim)
dan yang memberikan solusi sesungguhnya (error sama dengan nol)
Contoh:
1. Tentukan akar-akar persamaan polinom berikut

23.4 7 1.25 6 + 120 4 + 15 3 120 2 + 100 = 0


2. Hitung nilai integral-tentu berikut:
2.5
1.2

100
45.3 7 +

4
2 + 1

Contoh di atas adalah contoh persoalan yang rumit, yang tidak bisa kita selesaikan dengan rumus aljabar seperti rumus
abc yang terkenal itu ataupun dengan teknik integrasi sederhana yang kita tahu.
Dengan kata lain, kita tidak bisa memecahkan masalah di atas dengan menggunakan metode analitik atau metode sejati
Bila metode analitik tidak dapat lagi diterapkan, maka solusi persoalan sebenarnya masih dapat dicari dengan
menggunakan metode numerik.
Metode numerik adalah teknik yang digunakan untuk memformulasikan persoalan matematik sehingga dapat dipecahkan
dengan operasi perhitungan/aritmetika biasa (tambah, kurang, kali, dan bagi).

Metode Analitik vs Metode Numerik


Perbedaan utama antara metode numerik dengan metode analitik adalah
Solusi dengan menggunakan metode numerik selalu berbentuk angka. Bandingkan dengan metode analitik yang biasanya
menghasilkan solusi dalam bentuk fungsi matematik yang selanjutnya fungsi matematik tersebut dapat dievaluasi untuk
menghasilkan nilai dalam bentuk angka
Dengan metode numerik, kita hanya memperoleh solusi yang menghampiri atau mendekati solusi sejati sehingga solusi
numerik dinamakan juga solusi hampiran (approxomation) atau solusi pendekatan, namun solusi hampiran dapat dibuat
seteliti yang kita inginkan. Solusi hampiran jelas tidak tepat sama dengan solusi sejati, sehingga ada selisih antara
keduanya. Selisih inilah yang disebut dengan galat (error).
Contoh Ilustrasi:
Diberikan persoalan integrasi-tentu berikut:
1

4 2

Dengan metode analitik, kita dapat menemukan solusi sejatinya berupa fungsi yang kemudian kita evaluasi menjadi bentuk
angka (numerik)

1
=
+1 +
+1

3
= 4
3

=1

=
=1

22
3

Bandingkan bila persoalan integrasi tersebut diselesaikan dengan metode numerik pada slide berikutnya

Metode Analitik vs Metode Numerik

Tentu kita masih ingat bahwa interprestasi geometri integral f(x) dari x=a sampai x=b adalah luas daerah yang dibatasi
oleh kurva f(x) itu sendiri, sumbu x, garis x=a, dan garis x=b
Luas daerah tersebut dapat dihampiri dengan cara membagi daerah integrasi [-1, 1] atas sejumlah trapesium dengan
lebar 0.5 seperti gambar di atas, maka luas daerah integrasi dihampiri dengan luas kempat buah trapesium, atau
+++

1 +

1
2

0.5
+
2

1
+ 0
2

0.5
+
2

0 +

1
2

0.5
+
2

1
+ 1
2

0.5
2

0.5
3 + 7.5 + 8 + 7.5 + 3
2

7.25
Solusi sejatinya adalah 22/3=7.33, sehingga solusi hampiran di atas memiliki galat (error) sebesar 7.33 7.25 =
0.08333... Solusi hampiran yang lebih teliti dapat dibuat dengan membuat lebar trapesium menjadi lebih kecil

Perananan Komputer dalam Metode Numerik


Komputer sebagai alat hitung sangat berperan besar dalam menyelesaikan persoalan dengan metode numerik. Di samping
karena metode numerik adalah berupa operasi aritmetika dasar seperti penjumlahan, perkalian, pembagian yang bisa
dikerjakan oleh komputer, komputernya sendiri pun adalah alat hitung yang tidak kenal bosan dan lelah, sehingga operasi
aritmetika yang dilakukan berulang-ulang dalam metode numerik sangatlah cocok menggunakan komputer

Kita dapat membuat program dengan menggunakan bahasa Fortran, Pascal, C, C++, dll untuk menyelesaikan persoalan
menggunakan metode numerik
Tapi kita juga bisa langsung menggunakan beberapa aplikasi yang sudah ada di pasaran tanpa harus menulis program
numerik. Contoh beberapa aplikasi tersebut adalah Matlab, Mathematica, Scilab, dll
Pada aplikasi-aplikasi numerik tersebut bukan berarti kita tidak perlu menulis program, tapi uniknya adalah aplikasi
tersebut sudah menyediakan beberapa library yang berisi rutin-rutin yang siap digabung dengan program utama yang
ditulis user.
Dalam metode numerik utamanya adalah pengulangan operasi aritmetika, sehingga kecepatan komputer menjadi penting.
Berkat kemajuan teknologi komputer, perkembangan metode numerik dalam menyelesaikan berbagai permasalahan
kerekayasaan pun bergerak cepat.

Tahap-tahap Memecahkan Persoalan Secara Numerik


Ada enam tahap yang dilakukan dakam pemecahan persoalan dunia nyata dengan metode numerik, yaitu:
1. Pemodelan
Ini adalah tahap pertama. Persoalan dunia nyata dimodelkan ke dalam persamaan matematika
2. Penyederhanaan model
Model matematika yang dihasilkan dari tahap 1 mungkin saja terlalu kompleks, yaitu memasukkan banyak peubah
(variable) atau parameter.
Semakin kompleks model matematikanya, semakin rumit penyelesaiannya. Mungkin beberapa penyederhanaan dibuat
sehingga beberapa parameter dapat diabaikan.
Contohnya, faktor gesekan udara diabaikan sehingga koefisian gesekan di dalam model dapat dibuang. Model
matematika yang diperoleh dari penyederhanaan menjadi lebih sederhana sehingga solusinya akan lebih mudah
diperoleh.
3. Formulasi numerik
Setelah model matematika yang sederhana diperoleh, tahap selanjutnya adalah memformulasikannya secara numerik,
antara lain:
a. menentukan metode numerik yang akan dipakai bersama-sama dengan analisis galat awal (yaitu taksiran galat,
penentuan ukuran langkah, dan sebagainya).
Pemilihan metode didasari pada pertimbangan:
- apakah metode tersebut teliti?
- apakah metode tersebut mudah diprogram dan waktu pelaksanaannya cepat?
- apakah metode tersebut tidak peka terhadap perubahan data yang cukup kecil?
b. menyusun algoritma dari metode numerik yang dipilih.
4. Pemrograman
Menerjemahkan algoritma ke dalam program komputer dengan menggunakan salah satu bahasa pemrograman
5. Operasional/Uji Coba
6. Evaluasi

Perbedaan Metode Numerik dan Analisis Numerik


Untuk persoalan tertentu tidaklah cukup kita hanya menggunakan metode untuk memperoleh hasil yang diinginkan. Kita
juga perlu mengetahui apakah metode tersebut memang memberikan solusi hampiran yang baik, dan seberapa baik
hampiran itu. Karenanya, kita perlu kajian baru dinamakan analisis numerik.
Metode numerik adalah algoritma, menyangkut langkah-langkah penyelesaian persoalan secara numerik
Analisis numerik adalah terapan matematika untuk menganalisis metode. Dalam analisis numerik, hal utama yang
ditekankan adalah analisis galat dan kecepatan konvergensi sebuah metode
Tugas para analis numerik ialah mengembangkan dan menganalisis metode numerik. Termasuk di dalamnya pembuktian
apakah suatu metode konvergen, dan menganalisis batas-batas galat solusi numerik.
Terdapat banyak sumber galat, diantaranya tingkat ketelitian model matematika, sistem aritmetik komputer, dan kondisi
yang digunakan untuk menghentikan proses pencarian solusi.
Semua ini harus dipertimbangkan untuk menjamin ketelitian solusi akhir yang dihitung

Pendahuluan dan Instalasi Scilab


Scilab merupakan salah satu perangkat lunak yang lisensinya bebas biaya yang bisa didownload di
https://www.scilab.org/
Hampir menyerupai Matlab sebagai sebuah program interaktif untuk komputasi numerik dan visualisasi data
Karena dasar dari penyelesaian sistem persamaan aljabar linier simultan adalah matriks, dalam Scilab pengembangan
variabelnya dilakukan melalui pendekatan matriks.
Tutorial: https://www.scilab.org/resources/documentation/tutorials
http://www.openeering.com/scilab_tutorials

Pendahuluan dan Instalasi Scilab


Paste
Membuka SciNotes
SciNotes adalah
jendela text editor
yang berfungsi
untuk menuliskan
program Scilab
yang dapat
disimpan

Xcos

Cut
Print

Editor grafis (tanpa


menulis program)
untuk mendesain
model sistem
dinamika hibrid

Scilab Demo
Menampilkan
beberapa pilihan
demo Scilab yang
tersedia

Help Browser

Copy

Membuka File
Membuka file
berekstensi
*.sce atau *.sci

Clear Console
Membersihkan
area konsol

Module Manager

Membuka jendela
pencarian
bantuan

Mendowload dan
menginstall
modul-modul yang
disediakan pada
Scilab
atoms.scilab.org

Scilab Preferences
Mengatur setting
Scilab

Pendahuluan dan Instalasi Scilab

Variable
Browser

Perintah bisa langsung dituliskan di jendela konsol scilab setelah


tanda panah -->
Semua variabel yang dituliskan pada konsol akan terekam di
jendela Varible Browser
Koma dituliskan dengan menggunakan titik (.). Misalnya, akan
ditulis 0.25, bukan 0,25
Contoh: mencari luas lingkaran berdasarakan rumus D 2

Console

-->D=6
D =
6.
-->luas=0.25*%pi*D^2
luas =
28.274334
Terlihat pada Varible Browser, varibel D dan variabel luas
dituliskan dalam bentuk matriks bertipe data Double
Perintah yang kita tuliskan pun terekam pada jendela Command
History

Pendahuluan dan Instalasi Scilab


Fungsi
Pada contoh di slide sebelumnya, rumus D2 hanya dapat dipakai sekali saja. Artinya, jika nilai D diganti, maka rumus
tersebut harus ditulis ulang
Untuk mengatasi hal ini, Scilab menyediakan fasilitas penulisan fungsi, sehingga dengan fungsi ini pada dasarnya
penyusunan subprogram sudah dimulai
Perintah

deff((out)=modul(in1,in2,),persamaan)

Contoh:
-->deff(A=luas(D, r),A=0.5*%pi*D*r)
-->ls=luas(3, 1.5)
ls

=
7.0685835

Pada contoh di atas, A adalah output, luas adalah nama modul, D adalah input, persamaan harus menggunakan
variabel yang sama dengan output
Pada baris kedua, modul luas digunakan untuk menghitung luas lingkaran dengan D=3 dan hasilnya disimpan pada
variabel ls (tidak disimpan dalam suatu variabel pun bisa)
Selama program tidak keluar atau perintah clear belum dituliskan, maka modul dengan nama luas masih dapat digunakan
dengan mengganti-ganti nilai D.

Pendahuluan dan Instalasi Scilab


SciNotes
Permasalahan yang muncul dengan menuliskan program pada jendela kerja seperti pada contoh di slide sebelumnya,
antara lain adalah
1. Program tidak dapat disimpan sehingga kalau sudah keluar dari Sciab, modul yang telah terdefinisikan akan hilang
(tapi akan tetap muncul pada jendela Command History asalkan pada komputer yang sama).
2. Untuk program yang panjang, kesalahan penulisan atau program akan sulit untuk diedit
Dengan menggunakan jendela editor seperti SciNotes yang disediakan Scilab (atau bisa juga menggunakan notepad++
atau text editor lainnya), perintah-perintah bisa dituliskan terlebih dahulu, kemudian disimpan sebagai file, baru
dieksekusi
Jika kita tidak menggunakan text editor seperti SciNotes ini, perintah akan dieksekusi ketika tombol enter/return ditekan,
sedangkan jika menggunakan Scipad, perintah-perintah bisa dituliskan/dikumpulkan terlebih dahulu sebagai suatu file,
baru kemudian diekskusi
Dengan kata lain, SciNotes memudahkan menulis/mengedit program yang dibuat.

function hsl=luasbs(D)
hsl=0.25*%pi*D.^2
endfunction
Penulsan fungsi diawali dengan function dan diakhiri dengan
endfunction
Pada saat menyimpan dengan save as untuk suatu function,
Scilab akan memberi nama default sesuai dengan nama modul
Program fungsi selalu mempunyai ekstensi *.sci

Pendahuluan dan Instalasi Scilab


Perintah Eksekusi File Scilab
Saat kembali ke jendela konsol, fungsi atau perintah pada jendela editor SciNotes tidak bisa digunakan sebelu dieksekusi.
Oleh karena itu kita perlu perintah -->exec() yang dituliskan di jendela konsol
-->exec(c:MyDocumentsscilabluasbs.sci);
Atau bisa menekan tombol pada icon bar yang terletak di bagian atas SciNotes

Ketika eksekusi program luasbs.sci dijalankan, tak nampak ada perubahan apa pun. Namun ketika nama fungsi dipanggil
dengan cara menuliskannya pada jendela konsol, tampak bahwa fungsi luasbs sudah aktif dan memberika hasil
perhitungan seperti di bawah ini
-->luasbs(3)
ans =

// menghitung luas untuk D=3

7.0685835
-->dm=[2
dm =
2.

3]
3.

-->luasbs(dm)
ans =
3.1415927

// menghitung luas untuk D=2 dan D=3

7.0685835

Pendahuluan dan Instalasi Scilab


Menggunakan Fungsi pada suatu Fungsi
Modul atau fungsi dapat digunakan dalam bagian dari fungsi lain (fungsi dalam fungsi)
Sebagai contoh, untuk menghitung volume tabung, luas lingkaran alas dasar dikalikan dengan tinggi tabung
Perintah

get(alamat_file)

function V=volbs(h,D)
get(c:/MyDocuments/scilab/luasbs.sci)
V=h*luasbs(D)
endfunction

Apabila fungsi atau modul yang akan digunakan cukup banyak, maka penggunaan getf() menjadi tidak efektif
Untuk mengatasi ini, Scilan menyediakan fasilitas untuk membuat semua file dnegan ekstensi *.sci dalam suatu folder
yang akan dibuat menjadi library
Perintah

genlib(nama,alamat_direktori)

-->genlib(libsbs,c:/MyDocuments/scilab)
-->ls c:/MyDocuments/scilab
// untuk menampilkan isi file dalam folder scilab
Untuk memanggil fungsi-fungsi yang sudah dijadikan library, dapat digunakan perintah load()
Perintah

load(flie_dir/lib)

-->load(c:/MyDocuments/scilab/lib)

Varibel dalam Scilab


Variabel adalah suatu naa yang digunakan untuk menyimpan nilai dari suatu objek
Nilai variabel dapat berupa angka riil ataupun nonriil, berupa bentuk persamaan maupun rangkaian huruf atau angka
Contoh:
-->Luas=5;
-->Nama=Budi;
-->Y=2*x^2-4*x+6;
-->M=[1 2 3; 5 7 9];
Di samping variabel-variabel yang kita definisikan sendiri, Scilab menyediakan konstanta yang telah terdefinisi
sebelumnya. Gunakan perintah who untuk menampilkan seluruh konstanta yang disediakan Scilab
Konstanta-konstanta tersebut ditandai dengan % di depannya, antar lain:
Konstanta Spesial pada
Scilab
%pi
%i
%e
%t dan %f

Nilai/Keterangan
= 3.1415927

1
= 2.7182818
True dan False dalam konstanta Boolean

Varibel dalam Scilab


Matriks, Deret Angka, Input
Sama halnya dengan Matlab, Scilab adalah perangkat lunak berbasikan matriks, sehingga menganggap semua variabel
data dalam bentuk matriks
Penuilsan matriks diawali dan diakhiri dengan tanda kurung siku [..]
Tiap elemen matriks dipisahkan dengan tanda spasi atau koma, sdangkan untuk berpindah pada baris berikutnya
digunakan tanda titik koma (;)
Contoh:
-->M=[1 2 3; 5 7 9]
-->B=[3,6,7; 5,1,6; 8,19,3]
Untuk membuat deret angka dalam matriks satu baris dugunakan perintah berikut
Perintah

Z=awal:step:akhir

Jika nilai step tidak dituliskan, maka akan digunakan nilai default step=1
-->X=1:4
-->Y=1:0.5:4
Untuk membuat interaksi dengan user berupa input data, digunakan perintah berikut
Perintah

X=input(pesan,string atau s)

Jika string atau s tidak dituliskan, maka tipe data input adalah default yaitu Double
-->jari-jari=input(masukan nilai jari-jari:
-->nama=input(masukan nama: , s)

Pemrograman dengan Scilab


Khususnya pada metode numerik, pemrograman komputer merupakan penggabungan dari tiga unsur, yaitu komparasi
(perbandingan), kondisional (pemilihan), dan repetisi (perulangan)
If-then-else-end
Contoh:
N=input('Masukan Nilai :
if N >= 60 then
disp(lulus)
else
disp(mengulang)
end

')

Dalam Scilab ada lima operator yang dapat digunakan untuk perbandingan dan 3 operator logika seperti tabel berikut
Simbol

Simbol

Keterangan

Sama dengan

&

and

<

Lebih kecil

or

>

Lebih besar

nor

==

Keterangan

<=

Lebih kecil atau sama dengan

>=

Lebih besar atau sama dengan

<> atau ~=

Tidak sama dengan

Pemrograman dengan Scilab


If-then-elseif-then-end
Contoh:
NA = input(Masukan nilai angka : )
if NA >= 80 then disp(A)
elseif NA >= 70 & NA < 80 then disp (B)
elseif NA >= 60 & NA < 70 then disp (C)
elseif NA >= 55 & NA < 60 then disp (D)
else disp(Tidak Lulus)
end
Select-case-else-end
Struktur
select pil
case opt1 then
perintah_1
case opt2 then
perintah_2
...
else
perintah_n
end

//pil adalah variabel yang menjadi syarat


//opt1 adalah nilai dari syarat

Pemrograman dengan Scilab


Latihan
Buatlah program untuk menghitung luas segitiga, segi empat, dan lingkaran! User diberikan pilihan untuk memilih satu
diantara 3 bentuk tersebut. Austin bonus nilai PR 20

Pemrograman dengan Scilab


For-end
Contoh:
X = [5 8 21 23 9 12 16 32 35]
jumlah = 0
for i=1:9
jumlah = jumlah + X(i)
end
While-end
Struktur Perulangan dengan Syarat
while kondisi
perintah
end
//ATAU DALAM 1 BARIS:
while kondisi do perintah, end
while kondisi then perintah, end
while kondisi, perintah, end
Contoh: menghitung volume bola dgn jari-jari 2.5-4.5 dengan beda 0.5
r=2.5;
while r < 5
vol=(4/3)*%pi*r^3;
disp([r,vol])
r=r+0.5;
end

Visualisasi Grafik dengan Scilab


Visualisasi 2 Dimensi
Perintah

plot(x,y) atau plot(y)

Contoh perintah plot:


x = [0:0.1:2*%pi]
//set(current_figure,1)
plot(sin(x))
//set(current_figure,2)
plot(x,sin(x))

Visualisasi Grafik dengan Scilab


Visualisasi 2 Dimensi
Untuk grafik 2D, perintah selain plot yang disediakan Scilab adalah plot2d
Perintah plot2d memiliki beberapa kelebihan, yaitu:
1. Dapat memvisualisasikan beberapa grafik sekaligus pada saat yang bersamaan
2. Garis dan warna garis dapat ditentukan secara spesifik
3. Judul grafik, label pada sumbu x dan y dapat ditampilkan
Contoh:
x = [0:0.1:2*%pi];
y1=sin(x);
y2=cos(x);
plot2d([x x],[y1 y2], [-4 -8])
xtitle(gambar gabungan sin_x dan cos_x, sumbu x, sumbu y)

Visualisasi Grafik dengan Scilab


Visualisasi 2 Dimensi
Bentuk garis bisa diubah dengan menggunakan perintah style seperti pada tabel di bawah ini
Perintah

Tampilan

Perintah

Tampilan

Perintah

Tampilan

Garis

-5

Hitam

-1

-6

Biru

-2

-7

Hijau

-3

-8

wajik bertanda plus

Merah

-4

-9

Pink

Perintah

plot2d(x, y, [style])

Dimana x & y harus memiliki ukuran matriks yang sama yaitu [nl, nc]. nc adalah jumlah kurva dan nl adalah jumlah data
Hasil visualisasi grafik bisa dikopi ke Ms Word misalnya dengan cara klik File > Copy to clipboard
Perintah

xtitle(judul, x_label, y_label, z_label)

Menampilkan beberapa grafik dalam satu window:


Perintah

subplot(m,n,p)

Dimana m: jumlah baris, n: jumlah kolom, p: urutan grafik

Visualisasi Grafik dengan Scilab


Visualisasi 2 Dimensi
Contoh:

x = [0:0.1:2*%pi];
y1=sin(x);
y2=cos(x);
subplot(1,2,1)
plot2d(x,y1)
xtitle(gambar 1, x, y1)
subplot(1,2,2)
plot2d(x,y2)
xtitle(gambar 2, x, y2)

Pengelolaan Data dengan Scilab


Pengelolaan data dari file luar sangatlah penting untuk keperluan numerik, oleh karena itu Scilab memfasilitasi pembacaan
dan penulisan data dari dan ke dalam sebuah file
Perintah

xsimpan=write(nama_file, nama_matriks_yang_akan_disimpan)

Perintah

[x]=read(nama_file, jumlah_baris, jumlah_kolom)

Contoh:
Hsl = [4 3 5; 7 9 2]
simpan=write(C:/try.dat, Hsl)
[baca] = read(C:try.dat,2,3)

Mengolah data spreadsheet (excel)


Perintah

data = readxls(file_path)

Data yang begitu banyak tersedia pada file excel dapat diakses dengan mengetahui lokasi tab dan lokasi sel nya.

Pengelolaan Data dengan Scilab


Contoh:
-->[baca] = readxls(C:scinumFisbs.xls)
-->tab2 = baca(2);
-->BM_Acetone = tab2(5,3)

Graphical User Interface / Antarmuka Scilab


Perangkat lunak pada umumnya telah menggunakan bantuan tombol dengan ikon tertentu untuk mengeksekusi perintah
tertentu
Perintah visualisasi seperti itu disebut antarmuka pengguna atau graphical user interface (GUI). Dengan menggunakan
GUI, pengguna bisa lebih mudah dalam menggunakan perangkat lunak yang dikembangkan.
Salah satu fasilitas GUI daam Scilab adalah fasilitas interaktif untuk memilih, yaitu dengan perintah x_choose
Sebagai contoh, kita akan melakukan perhitungan tekanan uap murni dari komponen berdasarkan persamaan di bawah ini
ln =

Dimana:
: tekanan uap murni komponen k
A, B, C : konstanta yang nilainya tergantung dari komponen
T : suhu mutlak
Data A, B, C disediakan untuk masing-masing komponen dalam file Excel
Agar program yang dibuat lebih bersifat interaktif, user hanya tinggal memilih komponen yang akan dihitiung tekanan
uapnya dan tidak perlu melihat data A, B, dan C
Perintah

[num]=x_choose(items,title,button)

//buka data dari Excel


Data=readxls(C:scinumDataFisbs.xls);
dtlb1=Data(3);
dfnamakom=dtlb1(:,2);
//memilih komponen
judul=[BANK DATA; Pilih Komponen];
Nokomp=x_choose(dfnamakom,judul,Selesai)

Graphical User Interface / Antarmuka Scilab

Jika salah satu nama di double-click, maka varibel Nokomp akan akan berubah nilainya sesuai dengan no urut pada file
excel. Jika tombol selesai diklik, maka Nokomp=0
//buka data dari Excel
Data=readxls(C:scinumDataFisbs.xls);
dtlb1=Data(3);
dfnamakom=dtlb1(:,2);
//memilih komponen
judul=[BANK DATA; Pilih Komponen];
nokomp=x_choose(dfnamakom,judul,Selesai)
//detail informasi komponen
Namakom=dtlb1(nokomp,2);
A=dtlb1(nokomp,3);
B=dtlb1(nokomp,4);
C=dtlb1(nokomp,5);