C_Panel | Contact
Search the Web:

.:.fajarari.co.nr.:.kefahaman ilmu menuju kesempurnaan amal.:.


Monday, May 21, 2007
Faktorisasi Doolittle

tugas akhir praktikum pemrograman dasar sungguh belum cukup menantang adrenalinku,karena mirip dengan praktikum komputasi Dasar yang menggunakan bahasa Scilab,yaitu disuruh untuk membuat program dalam bahasa C faktorisasi Doolittle.
Dengan dirembuk teman2 lain seperjuangan akhirlah lahir source code yang masih belum sempurna.Dibawah ini adalah souce codenya

#include<stdio.h>

#include<stdlib.h>

float* getElemPtr(float* matrix, int size, int row, int col){

     return (matrix+(row* size)+col);

}

void printMatrix(float* m,int size){

int row,col;

for (row=0;row<size;row++){

  for (col=0;col<size;col++){

  printf ("%.3f",*getElemPtr(m,size,row,col));

  printf(" ");

  }

  printf (" ");

}

}

void setZeroToAllElem (float* m,int size){

int row,col;

for (row=0;row<size;row++){

  for (col=0;col<size;col++){

   *getElemPtr (m,size,row,col)=0.0f;

  }

}

}

int promptSize(){

int size=0;

printf ("matriks harus bujur sangkar (nxn). n= ");

scanf ("%d",&size);

return size;

}

void promptMatrix (float *m,int size){

int row,col;

for (row=0;row<size;row++){

  for (col=0;col<size;col++){

    float f=0.0;

    printf ("m[%d][%d]=",row,col);

    scanf ("%f",&f);

    *getElemPtr (m,size,row,col)=f;

  }

}

}

 
int main(){

  int n=promptSize();

  printf ("size=%d ",n);

  float a[n][n];

  promptMatrix (&a[0][0],n);

  printf ("a= ");

  printMatrix (&a[0][0],n);

  float u[n][n];

  float l[n][n];

  setZeroToAllElem (&u[0][0],n);

  setZeroToAllElem (&l[0][0],n);

//================BEGIN DOOLITTLE=======================

int k;

for (k=0;k<n;k++){

   l[k][k]=1;

 

   int j;

   for (j=k;j<n;j++){

  

      float sigma1=0;

      int m=0;

      for (m=0;m<k;m++){

     sigma1=sigma1+l[k][m]*u[m][j];

      }

      u[k][j]=a[k][j]-sigma1;

   }

 
   int i;

   for (i=k+1;i<n;i++){

      float sigma2=0;

      int m=0;

      for (m=0;m<k;m++){

     sigma2=sigma2+l[i][m]*u[m][k];

      }

      l[i][k]=(a[i][k]-sigma2)/u[k][k];

   }

}

 
//===========END DOOLITTLE=============================

printf ("l= ");

printMatrix (&l[0][0],n);

printf ("u= ");

printMatrix (&u[0][0],n);

}

 

 
download program doolitle

Posted at 11:09 pm by feedback

eko
May 23, 2007   01:33 AM PDT
 
good jar kebetulan gw bwlum
eko
May 23, 2007   01:32 AM PDT
 
good jar kebetulan gw belum buat bisa gw jadiin referensi buat tugas gw.thanks alot....
 

Leave a Comment:

Name


Homepage (optional)


Comments




Previous Entry Home Next Entry

Blogdrive