You are on page 1of 12

NAMA : RISKA SAFIRA

NIM : 200170017

KELAS : METODE NUMERIK (A2)

TUGAS !

1. Buatlah 1 soal tentang metode newton, secant, dan direct (selain soal dari modul) dan
selesaikan, lalu buatlah program untuk menyelesaikan soal – soal tersebut !

A. Metode Newton

• Sourcecode Program :

#include <stdio.h>
#include <math.h>
#include <conio.h>
float Fungsi(float x);
float FungsiTurunan(float x);

main()
{
int n=0;
float x[100];
float e = 0.0005;
printf(” Program Newton Rapshon \n”);
printf(” ====================== \n\n”);
printf(“Persamaan Fungsi f(x) : \n”);
printf(” x*x + 3x – 10 \n\n”);
printf(“x(n+1) : \n”);
printf(” x(n)-(f(xn)/f'(xn)) \n\n”);
printf(“Nilai e = 0.0005\n\n”);

printf(“Masukkan nilai x Awal : “); scanf(“%f”,&x[0]);

printf(“==========================================================
========\n”);
printf(“! n ! xn ! f(xn) ! f'(xn) ! f(xn)/f'(xn) ! x(n+1) !\n”);
printf(“==========================================================
========\n”);

do
{
x[n+1] = x[n] – (Fungsi(x[n])/FungsiTurunan(x[n]));
printf(“! %d ! %2.4f ! %2.4f ! %2.4f ! %2.4f ! %2.4f !\n”, n, x[n],Fungsi(x[n]),
FungsiTurunan(x[n]),Fungsi(x[n])/FungsiTurunan(x[n]),x[n+1]);
n++;
}while(abs(x[n-1]-x[n-2])>e);
printf(“! %d ! %2.4f ! %2.4f ! %2.4f ! %2.4f ! %2.4f !\n”, n, x[n],Fungsi(x[n]),
FungsiTurunan(x[n]),Fungsi(x[n])/FungsiTurunan(x[n]),x[n+1]);
printf(“==========================================================
========\n\n”);
printf(“Jadi, Hasil yang memenuhi dari persamaan tersebut x = %2.4f”, x[n]);
getch();
}

float Fungsi(float x)
{
return pow(x,2)+(3*x)-10;
}

float FungsiTurunan(float x)
{
return 2*x+3;
}

• Screenshoot Hasil Program

a. Output – 1

Jika x awal diinput mendekati 2


b. Output – 2

Jika x awal diinput mendekati -5

B. Metode Secant
• Sourcecode Program

#include <iostream>
#include <conio.h>
#include <cmath>
#include <iomanip>
using namespace std;

float f(float x);


int main() {
float d,e,r,q,p,n,epsilon;

cout<<"========================================================"<
<endl;
cout<<"================= ============"<
<endl;
cout<<"==================== Secant
Method ======="<<endl;
cout<<"================= ==========="<
<endl;
cout<<"========================================================"<
<endl;
cout<<"Function: f(x) = e^x - (x^2)/3 - x^3"<<endl;
cout<<"Enter the 2 initial guess "<<endl;
cout<<"Guess 1: ";cin>>d;
cout<<"Guess 2: ";cin>>e;
cout<<"Enter the relative error [E]: "; cin>>epsilon;
n=1;
if(e>d)
{p=d;
q=e;}
else
{q=d;
p=e;}
cout<<setw(10)<<"i"<<setw(15)<<"x0"<<setw(15)<<"x1";

cout<<setw(15)<<"xk"<<setw(15)<<"|E|"<<endl;
do{
r=q-((f(q)*(q-p))/(f(q)-f(p)));
s=fabs((r-q)/r);
cout<<setw(10)<<n<<setw(15)<<p<<setw(15)<<q<<setw(15)<<r<<setw(15)<<s<<en
dl;
p=q;
q=r;
n++;
} while (n<30 && s>epsilon && s!=0);
cout<<"\n\n Approx. root = "<<r;
cout<<endl<<endl<<endl;

return 0;
}

//FUNCTION

float f( float x) {
return (exp(x) - x*x/3-pow(x,3));
}
• Screenshoot Hasil Program

C. Metode Direct
• Sourcecode Program

// Program 1.3a

// Metode Iterasi

#include <stdio.h>

#include <math.h>

/* Daftar Variable

x0 = harga awal

tol = toleransi

max_iter = jumlah iterasi maksimum */

float x0,tol;

int max_iter;

float g(float x)

return (x*x + exp(x) – 2)/3;

int main()

int it;

float epsilon,xb;

printf(“Harga awal = “); scanf(“%f”,&x0);

printf(“Toleransi = “); scanf(“%f”,&tol);

printf(“Jumlah iterasi maksimum = “); scanf(“%d”,&max_iter);

it = 0;

printf(“It. x g(x) f(x)\n”);

do
{

it = it + 1;

xb = g(x0);

epsilon = fabs(xb-x0);

printf(“%3d %8.5f %8.5f %8.2e\n”,it,x0,xb,epsilon);

x0 = xb;

} while(it <= max_iter && epsilon > tol);

if(it<=max_iter)

printf(“Toleransi terpenuhi\n”);

printf(“Hasil akhir = %g\n”,xb);

else printf(“Toleransi tidak terpenuhi\n”);

[07.37, 8/5/2022] Nisa: #include

#include

float i,x0,tol_error;

int iterasi_max;

float f(float x)

return x+exp(x);

float g(float x)

return -exp(x);
}

void main()

int i;

float epsilon,xb;

printf(" METODE ITERASI SEDERHANA\n");

printf("\n");

printf(" Input Pendekatan Nilai awal : ");

scanf("%f",&x0);

printf(" Input Toleransi error : ");

scanf("%f",&tol_error);

printf(" Jumlah Iterasi Maksimum : ");

scanf("%d",&iterasi_max);

i=0;

printf("\n");

printf(" ~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~");

printf(" i g(x) f(x) |f(x)|\n");

printf(" ~~~~~~~~~~~~~~

~~~~~~~~~~~~~\n");

do
{

i=i+1;

xb=g(x0);

epsilon=fabs(f(xb));

printf(" %3d %8.5f %8.5f %8.5f\n", i, xb, f(xb), epsilon);

x0=xb;

while(i<=iterasi_max && epsilon>tol_error);

printf(" ~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~\n");

if(i<=iterasi_max)

printf("\n Nilai Toleransi terpenuhi\n");

printf("\n Maka, Hasil Akhir= %g\n",xb);

printf(" -Azizul Hakim Prabowo-\n");

else printf("\n Toleransi tidak terpenuhi\n");

}
• Screenshoot Hasil Program

You might also like