Program di bawah ini merupakan program penyelesaian non linear menggunakan metode biseksi.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
void input(int *a,int *b,int *c,int *d,int *e,float *xn, float *xn1,float *error);
float hitungxmid(float xn, float xn1);
float hitungfxn(float a,float b, float c, float d,float e,float xn);
float hitungfxn1(float a,float b, float c, float d,float e,float xn1);
float hitungfxmid(float a,float b, float c, float d,float e,float xmid);
void switchval(float *xn, float*xn1,float*xmid,float*fxn,float*fxmid);
void output(float *xn,float *xn1,float *xmid,float *fxn,float *fxn1,float *fxmid,int *count);
//FUNGSI UTAMA
int main(){
char repeat;
do{
SetConsoleTitle("Created By Herdian");
int a,b,c,d,e,count=1;
float xn, xn1,error,xmid,fxn,fxn1,fxmid;
system("cls");
printf("\t\t\tPROGRAM BISEKSI\n\n");
input(&a,&b,&c,&d,&e,&xn,&xn1,&error);
while(fabs(xn1-xn)>= error){
xmid=hitungxmid(xn,xn1);
fxn=hitungfxn(a,b,c,d,e,xn);
fxn1=hitungfxn(a,b,c,d,e,xn1);
fxmid=hitungfxmid(a,b,c,d,e,xmid);
output(&xn,&xn1,&xmid,&fxn,&fxn1,&fxmid,&count);
switchval(&xn,&xn1,&xmid,&fxn,&fxmid); count++;
}
printf("Ingin Mengulang Program ? <Y/N>"); repeat=getch();
}while(repeat=='y'||repeat=='Y');
}
//FUNGSI INPUT
void input(int *a,int *b,int *c,int *d,int *e,float *xn, float *xn1,float *error){
printf("f(x)= (a)x^4 + (b)x^3 + (c)x^2 + (d)x + e\n");
printf("\nINPUT:\n");
printf("a = "); scanf("%d",a); fflush(stdin);
printf("b = "); scanf("%d",b); fflush(stdin);
printf("c = "); scanf("%d",c); fflush(stdin);
printf("d = "); scanf("%d",d); fflush(stdin);
printf("e = "); scanf("%d",e); fflush(stdin);
printf("\ninputkan xn, xn+1 dan batas error\n");
printf("xn = "); scanf("%f",xn); fflush(stdin);
printf("xn+1 = "); scanf("%f",xn1); fflush(stdin);
printf("batas error = "); scanf("%f",error); fflush(stdin);
}
//FUNGSI HITUNG XMID
float hitungxmid(float xn, float xn1){
float xmid;
xmid = (xn + xn1)/2;
return(xmid);
}
//FUNGSI HITUNG F(xn)
float hitungfxn(float a,float b, float c, float d,float e,float xn){
float fxn;
fxn = ((a*pow(xn,4))+(b*pow(xn,3))+(c*pow(xn,2))+(d*xn)+e);
return (fxn);
}
//FUNGSI HITUNG F(xn+1)
float hitungfxn1(float a,float b, float c, float d,float e,float xn1){
float fxn1;
fxn1 = ((a*pow(xn1,4))+(b*pow(xn1,3))+(c*pow(xn1,2))+(d*xn1)+e);
return (fxn1);
}
//FUNGSI HITUNG F(xmid)
float hitungfxmid(float a,float b, float c, float d,float e,float xmid){
float fxmid;
fxmid = ((a*pow(xmid,4))+(b*pow(xmid,3))+(c*pow(xmid,2))+(d*xmid)+e);
return (fxmid);
}
//FUNGSI MENUKAR NILAI
void switchval(float *xn, float*xn1,float*xmid,float*fxn,float*fxmid){
if((*fxn) * (*fxmid) < 0 ) {*xn1 = *xmid; }
else if ((*fxn) * (*fxmid) > 0 )*xn = *xmid;
}
//FUNGSI OUTPUT
void output(float *xn,float *xn1,float *xmid,float *fxn,float *fxn1,float *fxmid,int *count){
if(*count==1){
printf("ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ\n");
printf("no xn xn+1 xmid f(xn) f(xn+1) f(xmid) \n");
printf("ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ\n");}
printf("%0d %f %f %f %f %f %f \n",*count,*xn,*xn1,*xmid,*fxn,*fxn1,*fxmid);
}
Flowchart Program :
Source Code :
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
void input(int *a,int *b,int *c,int *d,int *e,float *xn, float *xn1,float *error);
float hitungxmid(float xn, float xn1);
float hitungfxn(float a,float b, float c, float d,float e,float xn);
float hitungfxn1(float a,float b, float c, float d,float e,float xn1);
float hitungfxmid(float a,float b, float c, float d,float e,float xmid);
void switchval(float *xn, float*xn1,float*xmid,float*fxn,float*fxmid);
void output(float *xn,float *xn1,float *xmid,float *fxn,float *fxn1,float *fxmid,int *count);
//FUNGSI UTAMA
int main(){
char repeat;
do{
SetConsoleTitle("Created By Herdian");
int a,b,c,d,e,count=1;
float xn, xn1,error,xmid,fxn,fxn1,fxmid;
system("cls");
printf("\t\t\tPROGRAM BISEKSI\n\n");
input(&a,&b,&c,&d,&e,&xn,&xn1,&error);
while(fabs(xn1-xn)>= error){
xmid=hitungxmid(xn,xn1);
fxn=hitungfxn(a,b,c,d,e,xn);
fxn1=hitungfxn(a,b,c,d,e,xn1);
fxmid=hitungfxmid(a,b,c,d,e,xmid);
output(&xn,&xn1,&xmid,&fxn,&fxn1,&fxmid,&count);
switchval(&xn,&xn1,&xmid,&fxn,&fxmid); count++;
}
printf("Ingin Mengulang Program ? <Y/N>"); repeat=getch();
}while(repeat=='y'||repeat=='Y');
}
//FUNGSI INPUT
void input(int *a,int *b,int *c,int *d,int *e,float *xn, float *xn1,float *error){
printf("f(x)= (a)x^4 + (b)x^3 + (c)x^2 + (d)x + e\n");
printf("\nINPUT:\n");
printf("a = "); scanf("%d",a); fflush(stdin);
printf("b = "); scanf("%d",b); fflush(stdin);
printf("c = "); scanf("%d",c); fflush(stdin);
printf("d = "); scanf("%d",d); fflush(stdin);
printf("e = "); scanf("%d",e); fflush(stdin);
printf("\ninputkan xn, xn+1 dan batas error\n");
printf("xn = "); scanf("%f",xn); fflush(stdin);
printf("xn+1 = "); scanf("%f",xn1); fflush(stdin);
printf("batas error = "); scanf("%f",error); fflush(stdin);
}
//FUNGSI HITUNG XMID
float hitungxmid(float xn, float xn1){
float xmid;
xmid = (xn + xn1)/2;
return(xmid);
}
//FUNGSI HITUNG F(xn)
float hitungfxn(float a,float b, float c, float d,float e,float xn){
float fxn;
fxn = ((a*pow(xn,4))+(b*pow(xn,3))+(c*pow(xn,2))+(d*xn)+e);
return (fxn);
}
//FUNGSI HITUNG F(xn+1)
float hitungfxn1(float a,float b, float c, float d,float e,float xn1){
float fxn1;
fxn1 = ((a*pow(xn1,4))+(b*pow(xn1,3))+(c*pow(xn1,2))+(d*xn1)+e);
return (fxn1);
}
//FUNGSI HITUNG F(xmid)
float hitungfxmid(float a,float b, float c, float d,float e,float xmid){
float fxmid;
fxmid = ((a*pow(xmid,4))+(b*pow(xmid,3))+(c*pow(xmid,2))+(d*xmid)+e);
return (fxmid);
}
//FUNGSI MENUKAR NILAI
void switchval(float *xn, float*xn1,float*xmid,float*fxn,float*fxmid){
if((*fxn) * (*fxmid) < 0 ) {*xn1 = *xmid; }
else if ((*fxn) * (*fxmid) > 0 )*xn = *xmid;
}
//FUNGSI OUTPUT
void output(float *xn,float *xn1,float *xmid,float *fxn,float *fxn1,float *fxmid,int *count){
if(*count==1){
printf("ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ\n");
printf("no xn xn+1 xmid f(xn) f(xn+1) f(xmid) \n");
printf("ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ\n");}
printf("%0d %f %f %f %f %f %f \n",*count,*xn,*xn1,*xmid,*fxn,*fxn1,*fxmid);
}