Senin, 27 Januari 2014

Program Bisection dan Secant C++

Program Bisection dan Secant


















#include <iostream.h> #include <stdlib.h> #include <coni0.h> #include <mah.h> //variabel global float galat; int iterasi,i; //variabel secant float x0,x1; float x2,xi; float fx0,fx1; int fnol(float x0); int fsatu(float x1); //variabel bisection float xl,xu,xm0; float fxl,fxu; float fxm,xm; float h1,h2; int fungsi(float xm); int fungsi2(float xl); int fungsi3(float xu); int step4(float xm,float xm0); //fungsi yg dipakai void secant(); void bisection(); void main(){ int pilih; char lagi='y'; while(lagi=='y'||lagi=='Y'){ cout<<"---------persamaan linear------\n"; cout<<" 1.metode bisection\n"; cout<<" 2.metode secant\n"; cout<<" 0.keluar program\n"; cout<<"masukan pilihan (0-2): ";cin>>pilih; if(pilih>=0&&pilih<3){ switch(pilih){ case 0:exit(1);break; case 1:bisection();break; case 2:secant();break; } cout<<"\nmau coba lagi (y/t)??";cin>>lagi; } else{cout<<"\nanda salah memasukan pilihan,silahkan coba lagi!!\n\n";} } system("pause"); } void bisection(){ cout<<"persamaan:f(x)=x^4-2.709x^3+0.665x^2-2.0012*10^-5\n"; //masukan konstanta cout<<"masukan nilai awal(xl): ";cin>>xl; cout<<"masukan nilai awal(xu): ";cin>>xu; cout<<"masukan banyaknya iterasi=";cin>>iterasi; //hitungan untuk xm 0 xm0=(xl+xu)/2; //lakukan looping iterasi for(i=1;i<=iterasi;i++){ cout<<"\n*iterasi"<<i<<"\n"; cout<<"step1:\n"<<xl<<"----------->"<<xu<<"\n"; xm=(xl+xu)/2; cout<<"step2(akar):\n"<<"("<<xl<<"+"<<xu<<")"<<"/2="<<xm<<"\n"; fungsi(xm); fungsi2(xl); fungsi3(xu); h1=fxl*fxm; h2=fxm*fxu; cout<<"step3:\n"; cout<<fxl<<"*"<<fxm<<"="<<h1<<"\n"; cout<<fxm<<"*"<<fxu<<"="<<h2<<"\n"; if(h1>0||h2<0){ xl=xm; cout<<"jadi xl--->xm="<<xl; cout<<"\ndan xu tetap="<<xu<<"\n"; if(i>=2){ step4(xm,xm0);} else if(i==1){ cout<<"iterasi 1 belum bisa menghitung galat\n"; } } else if(h1<0||h2>0){ xu=xm; cout<<"jadi xl tetap="<<xl; cout<<"\ndan xu--->xm="<<xu<<"\n"; if(i>=2){ step4(xm,xm0);} else if(i==1){ cout<<"iterasi 1 belum bisa menghitung galat\n";} } else{ iterasi=iterasi-(iterasi-1); cout<<"\niterasi gagal, tidak bisa menghitung galat\n"; } xm0=xm; } } int fungsi(float xm){ fxm=pow(xm,4)-2.709*pow(xm,3)+0.665*pow(xm,2)-2.0012*pow(10,-5); return xm; } int fungsi2(float xl){ fxl=pow(xl,4)-2.709*pow(xl,3)+0.665*pow(xl,2)-2.0012*pow(10,-5); return xl; } int fungsi3(float xu){ fxu=pow(xu,4)-2.709*pow(xu,3)+0.665*pow(xu,2)-2.0012*pow(10,-5); return xu; } int step4(float xm,float xm0){ galat=((xm-xm0)/xm)*100; cout<<"step4(galat):\n"; cout<<"("<<xm<<"-"<<xm0<<")*100="<<galat<<"\n"; return xm0; } void secant(){ cout<<"Persamaan:f(x)=2x^3-2.663x^2+4.009*10^-5\n"; cout<<"masukan nilai awal untuk(x0): ";cin>>x0; cout<<"masukan nilai awal untuk(x1): ";cin>>x1; cout<<"masukan banyaknya iterasi=";cin>>iterasi; for(i=1;i<=iterasi;i++){ cout<<"\n*iterasi"<<i<<"\n"; cout<<"step1:\n"; fnol(x0); fsatu(x1); x2=x0-(fx0*(x0-x1))/(fx0-fx1); cout<<x0<<"-("<<fx0<<"*("<<x0<<"-"<<x1<<"))/("<<fx0<<"-"<<fx1<<")"; cout<<"\n="<<x2<<"\n"; cout<<"step2(galat):\n"; galat=((x2-x1)/x2)*100; cout<<"(("<<x2<<"-"<<x1<<")/"<<x2<<")*100="<<galat<<"\n"; x0=x1; x1=x2; } } int fnol(float x0){ //fungsi untuk fnol fx0=2*pow(x0,3)-2.663*pow(x0,2)+4.009*pow(10,-5); return fx0; } int fsatu(float x1){ //fungsi untuk fsatu fx1=2*pow(x1,3)-2.663*pow(x1,2)+4.009*pow(10,-5); return fx1; }

silahkan copas dan edit sendiri... :D

0 komentar:

Posting Komentar