Transformasi-z dan simulasi dengan Delphi





ahmad aris syaefuddin | 01.11 | Be the first to comment! | +1





(Solve LTI systems using Z - Transform and how to generate this algorithm in Delphi language)


Mari kita mencoba menyelesaikan LTI sistem dengan transformasi-z, kemudian membuat algoritmanya dengan bahasa Delphi.

Cara menyelesaikan sistem LTI dangan transformasi-Z  


Dibawah ini adalah kode script yang saya buat dengan menggunakan bahasa Delphi :

procedure TForm1.BitBtn_generateClick(Sender: TObject);
var
    frek_respon   :array[0..100] of real;
    frek_respon_db:array[0..100] of real;
    phase_respon  :array[0..100] of real;
    frequence     :array[0..100] of real;
    freq_sampling :real;
    angel         :real;
    rad           :real;
    rad_limit     :real;
    i             :integer;
begin
    //clear the chart
    chart1.Series[0].Clear;
    chart1.Series[1].Clear;
    chart2.Series[0].Clear;
    chart3.Series[0].Clear;
    chart3.Series[0].Clear;

    //generate the magnitude frequency respons
    rad_limit:=strtofloat(edit_rad_limit.Text);
    rad:=0;
    i:=0;
    repeat
        frek_respon[i]:=1/(sqrt(sqr(1+0.5*cos(pi*rad)+0.2*cos(2*pi*rad))+sqr(-0.5*sin(pi*rad)-0.2*sin(2*pi*rad))));
        chart1.Series[0].AddXY(i,frek_respon[i],'');
        chart1.Series[1].AddXY(i,frek_respon[i],'');
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;

    //generate the magnitude frequency respons in Decibels
    rad:=0;
    i:=0;
    repeat
        frek_respon_db[i]:=20*math.LogN(10,frek_respon[i]);
        chart3.Series[0].AddXY(i,frek_respon_db[i],'',clblue);
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;

    //generate phase respons
    rad:=0;
    i:=0;
    repeat
        angel:=arctan((-0.5*sin(rad))-(0.2*sin(2*rad))/(1+0.5*cos(rad)+0.2*cos(2*rad)));
        phase_respon[i]:=radtodeg(angel);
        chart4.Series[0].AddXY(i,phase_respon[i],'',clyellow);
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;

    //generate frequence
    rad:=0;
    i:=0;
    freq_sampling:=strtofloat(edit_freq_sampling.Text);
    repeat
        frequence[i]:=(rad/2)*freq_sampling;
        chart2.Series[0].AddXY(i,frequence[i],'',clgreen);
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;
end;




untuk aplikasi delphinya silakan download di sini
Demikian, kritik dan saran sangat saya harapkan

Bahasa C untuk Aproksimasi Integral dengan teknik komputasi





ahmad aris syaefuddin | 22.27 | 1 Comment so far | +1




   
    Untuk menghitung integral dengan bahasa pemrograman, terlebih dahulu kita mengubah bentuk matematis dari integral menjadi bentuk komputasi. 
    Cara tersebut akan kita bahas dalam posting kali ini.



1.     Aproksimasi Integral dengan cara matematika





Untuk meng-aproksimasi luas daerah A, yang dibatasi oleh kurva y=f(x), sumbu x dan ordinat x1=a, dan x2=b diberikan oleh persamaan :

Permasalahan.1
Misalkan diketahui  y=x2 dengan ordinat x1=2 dan x2=4, carilah luas daerah yang dibatai oleh kurva f(x), dan ordinat x.
→ Penyelesaian matematis :


        2.    Aproksimasi Integral dengan teknik komputasi

Salah satu metode komputasi yang dapat digunakan untuk meng-aproksimasi nilai integral seperti permasalahan diatas dapat dituliskan dengan :
                             

Misalkan diberikan permasalahan yang sama seperti diatas,  y=x2 dengan ordinat x1=2 dan x2=4 dan kita disuruh menentukan luas daerah yang dibatasi oleh kurva f(x), dan ordinat x. Bila diberikan nilai   delta x=0,01
Maka dapat dituliskan persamaannya sebagai berikut :


        3. Program untuk menghitung Integral dengan bahasa C

Algoritma untuk mensimulasikan persamaan komputasi diatas, dapat dilakukan dengan menggunakan bahasa C.

Ini melibatkan fungsi header stdio.h untuk mengakses librarry yang berhubungan dengan input output dan header math.h untuk mengakses librarry operasi matematis.  

Kode selengkapnya dapat dilihat dibawah :

#include <stdio.h>
#include <math.h>
float f_x(float x);
main()
{
     float integral;
     float x1;
     float x2;
     float dx;
    
     printf("Aproksimasi Integral dengan teknik komputasi\n");
     printf("Oleh : Ahmad Aris Syefudin, NIM: 123600012\n");
     printf("\nMasukan x1     : ");
     scanf("%f",&x1);
     printf("Masukan x2     : ");
     scanf("%f",&x2);
     printf("Masukan delta x: ");
     scanf("%f",&dx);
    
     do
     {
          integral=integral+(f_x(x1)*dx);
          x1=x1+dx;
                  
     }
     while (x1<=x2);
     printf("\nnilai integral=%f\n",integral);
     scanf("");        
}
float f_x(float x)
{
     return pow(x,2);
}




 Gbr. 1. Hasil eksekusi program

~~~~Terima kasih~~~