Вы находитесь на странице: 1из 11

LAB METODE NUMERIK 12

Dosen pengasuh : Dr. Luthfi, ST, ME

Nama : MUHAMMAD NOFRIZAL

Kelas : TI-1.3

NIM : 1757301035

Prodi : Teknik Informatika

SourceCode Header.h

void lab12_baca_data(float X[16], float Y[16], int N, char


NAMA_INPUTFILE[30]);

void lab12_tampil_data01(float X[16], float Y[16], int N);

void regresi_linier(float *A0, float *A1, float *R, float X[16], float
Y[16], int N);

void lab12_plot_regresi(float X[16], float Y_DATA[16], float


Y_PLOT[16], float A0, float A1, int N, char NAMA_OUTPUTFILE[30]);

SourceCode Main.c

#include "stdio.h"

#include "math.h"

#include "string.h"

#include "stdlib.h"

#include "lab12_header.h"

int main()

int n;

float x[16],y_data[16],y_plot[16];

char nama_inputfile[30],nama_outputfile[30];

float a0,a1,r;
//Jumlah Data

n = 15;

//Nama File Input

strcpy(nama_inputfile,"lab12_data01.dat");

//Baca Data

lab12_baca_data(x,y_data,n,nama_inputfile);

//Tampil Data

lab12_tampil_data01(x,y_data,n);

#ifdef LINIER

//Hitung persamaan regresi

regresi_linier(&a0,&a1,&r,x,y_data,n);

printf("Hasil perhitungan regresi linier.\n");

printf("a0 = %f\n", a0);

printf("a1 = %f\n", a1);

printf("r = %f\n", r);

printf("r2 = %f\n", pow(r,2));

#endif

//Nama File Output

strcpy(nama_outputfile,"lab12_hasil01.txt");

#ifdef PLOT

//Plot data

lab12_plot_regresi(x, y_data,y_plot,a0,a1,n,nama_outputfile);

lab12_tampil_data01(x,y_plot,n);
#endif

return 0;

SourceCode io.c

#include "stdio.h"

#include "math.h"

#include "string.h"

#include "stdlib.h"

#include "lab12_header.h"

void lab12_tampil_data01(float X[16], float Y[16], int N)

int I;

printf("\n Data Persamaan regresi linier.\n");

printf("|-----------------------------------------------|\n");

printf("| X | Y |\n");

printf("|-----------------------------------------------|\n");

for(I=1; I<=N; I++)

printf("| %f | %f |\n", X[I], Y[I]);

printf("|-----------------------------------------------|\n");

printf("\n");

}
void lab12_baca_data(float X[16], float Y[16], int N, char
NAMA_INPUTFILE[30])

int I;

FILE *P_BACA_DATA;

P_BACA_DATA=fopen(NAMA_INPUTFILE,"r");

if(P_BACA_DATA == NULL)

printf("Error fungsi baca data.\n");

printf("File input tidak bisa dibuka.\n");

printf("Cek kembali file inputnya.\n");

exit(0);

for(I=1; I<=N; I++)

fscanf(P_BACA_DATA,"%f %f\n", &X[I], &Y[I]);

fclose(P_BACA_DATA);

SourceCode Solver.c
#include "stdio.h"

#include "math.h"

#include "string.h"

#include "stdlib.h"

#include "lab12_header.h"

void lab12_plot_regresi(float X[16], float Y_DATA[16], float


Y_PLOT[16], float A0, float A1, int N, char NAMA_OUTPUTFILE[30])

int I;

FILE *P_OUTPUT;

P_OUTPUT=fopen(NAMA_OUTPUTFILE,"w");

for(I=1; I<=N; I++)

Y_PLOT[I] = A0 + A1 * X[I];

fprintf(P_OUTPUT,"%f %f %f\n", X[I], Y_DATA[I],


Y_PLOT[I]);

fclose(P_OUTPUT);

void regresi_linier(float *A0, float *A1, float *R, float X[16], float
Y[16], int N)

int I;

float SUMX, SUMY, SUMX2, SUMY2, SUMXY, X_RATA, Y_RATA;

SUMX = 0.0;

SUMY = 0.0;
SUMX2 = 0.0;

SUMY2 = 0.0;

SUMXY = 0.0;

for (I=1; I<=N; I++)

SUMX = SUMX+X[I];

SUMY = SUMY+Y[I];

SUMX2 = SUMX2+pow(X[I],2);

SUMY2 = SUMY2+pow(Y[I],2);

SUMXY = SUMXY+X[I]*Y[I];

//Hitung nilai rata-rata

X_RATA=SUMX/N;

Y_RATA=SUMY/N;

//Hitung A1

*A1= (N*SUMXY - SUMX*SUMY)/(N*SUMX2 - pow(SUMX,2));

//Hitung A0

*A0= Y_RATA - *A1 * X_RATA;

//Hitung R

*R = (N*SUMXY - SUMX*SUMY) / (sqrt(N*SUMX2 - pow(SUMX,2)) *


sqrt(N*SUMY2 - pow(SUMY,2)));

Input Persamaan
Makefile

Hasil Run
Output file
data x y
1 10 18.2808
3
2 16.3 20.8911
9
3 23 23.5015
5
4 27.5 26.1119
5 31 28.7222
6
6 35.6 31.3326
2
7 39 33.9429
8
8 41.5 36.5533
3
9 42.9 39.1636
9
10 45 41.7740
5
11 46 44.3844
1
12 45.5 46.9947
6
13 46 49.6051
2
14 49 52.2154
8
15 50 54.8258
4

Grafik
Data
60

50 f(x) = 2.61 x + 15.67


R² = 0.89
40
Data
Linear (Data)
30

20

10

0
0 2 4 6 8 10 12 14 16
Komentar:
Dapat dilihat dari grafik diatas bahwa jalur regresi memotong
jalur linear sebanyak 2 kali,yang pertama pada iterasi 4 regresi
melakukan pemotongan ke atas pada garis linear dan yang kedua pada
iterasi ke 12 regresi melakukan pemotongan ke bawah,regresi dilakukan
bertujuan untuk memperoleh persamaan kurva pendekatan dari titik-titik
data.

Dokumentasi

pico lab12_ver1.c
pico lab12_ver2.c
gcc lab12_ver2.c -lm
pico lab12_ver2.c
pico lab12_ver2.c
pico lab12_ver2.c
pico lab12_ver2.c
gcc lab12_ver2.c -lm
./a.out
ls
pico lab12_hasil01.txt
mkdir project12
ls
cd project12/
mkdir src
mkdir run
ls
cd src
pico lab12_header.h
pico lab12_main.c
pico lab12_IO.c
pico lab12_solver.c
pico makefile
ls
pico Makefile
make
cd ../run/
ls
./project12
pico lab12_data01.dat
history -w muhammad_nofrizal_lab12.txtpico lab12_ver1.c
pico lab12_ver2.c
gcc lab12_ver2.c -lm
pico lab12_ver2.c
pico lab12_ver2.c
pico lab12_ver2.c
pico lab12_ver2.c
gcc lab12_ver2.c -lm
./a.out
ls
pico lab12_hasil01.txt
mkdir project12
ls
cd project12/
mkdir src
mkdir run
ls
cd src
pico lab12_header.h
pico lab12_main.c
pico lab12_IO.c
pico lab12_solver.c
pico makefile
ls
pico Makefile
make
cd ../run/
ls
./project12
pico lab12_data01.dat
history -w muhammad_nofrizal_lab12.txt

Вам также может понравиться