9 Mart 2016 Çarşamba

C'DE SECANT VE REGULA FALSI METODU

 Secant Method : 

Regula Falsi Method : 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double functionOfX(double x)
{
double  fx;
fx = pow(x, 3) + 4 * pow(x, 2) - 10; //write here your function
return fx;
}

int main(){

FILE *f;
int i = 2;
double P[10], Q[2];
double q, TOL = pow(10, -5);
P[0] = 1;
P[1] = 2;

if ((f = fopen("results.txt", "a+")) == NULL)
{
printf("File could not be opened\n");
}

Q[0] = functionOfX(P[0]);
Q[1] = functionOfX(P[1]);
printf("\n ### SECANT METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
printf("\n # %d # --> %lf\n", i - 2, P[0]);
printf(" # %d # --> %lf\n", i - 1, P[1]);
fprintf(f, "\n ### SECANT METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
fprintf(f, "\n # %d # --> %lf\n", i - 2, P[0]);
fprintf(f, " # %d # --> %lf\n", i - 1, P[1]);
while (i <= 10)
{
P[i] = P[i - 1] - (Q[1] * (P[i - 1] - P[i - 2]) / (Q[1] - Q[0]));
printf(" # %d # --> %lf\n", i, P[i]);
fprintf(f, " # %d # --> %lf\n", i, P[i]);
if (fabs(P[i] - P[i - 1]) <= TOL)
{
break;
}
Q[0] = Q[1];
Q[1] = functionOfX(P[i]);
i++;
}

printf("\n\n");

i = 2;
Q[0] = functionOfX(P[0]);
Q[1] = functionOfX(P[1]);
printf("\n ### REGULA FALSI METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
printf("\n # %d # --> %lf\n", i - 2, P[0]);
printf(" # %d # --> %lf\n", i - 1, P[1]);
fprintf(f, "\n ### REGULA FALSI METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
fprintf(f, "\n # %d # --> %lf\n", i - 2, P[0]);
fprintf(f, " # %d # --> %lf\n", i - 1, P[1]);
while (i <= 10)
{
P[i] = P[i - 1] - (Q[1] * (P[i - 1] - P[i - 2]) / (Q[1] - Q[0]));
printf(" # %d # --> %lf\n", i, P[i]);
fprintf(f, " # %d # --> %lf\n", i, P[i]);
if (fabs(P[i] - P[i - 1]) <= TOL)
{
break;
}

q = functionOfX(P[i]);
if (q * Q[1] < 0)
{
Q[0] = Q[1];
}
Q[1] = q;
i++;
}

printf("\n");
system("pause");
fclose(f);
return 0;
}

results.txt : 

 ### SECANT METHOD ###

 > FUNCTION is : x^3 + 4(x^2) - 10
 > TOLERANCE VALUE is : 0.000010
 > INTERVAL is : [1,2]
 > Q(0) : -5.000000
 > Q(1) : 14.000000

 # 0 # --> 1.000000
 # 1 # --> 2.000000
 # 2 # --> 1.263158
 # 3 # --> 1.338828
 # 4 # --> 1.366616
 # 5 # --> 1.365212
 # 6 # --> 1.365230
 # 7 # --> 1.365230

 ### REGULA FALSI METHOD ###

 > FUNCTION is : x^3 + 4(x^2) - 10
 > TOLERANCE VALUE is : 0.000010
 > INTERVAL is : [1,2]
 > Q(0) : -5.000000
 > Q(1) : 14.000000

 # 0 # --> 1.000000
 # 1 # --> 2.000000
 # 2 # --> 1.263158
 # 3 # --> 1.338828
 # 4 # --> 1.336571
 # 5 # --> 1.336644
 # 6 # --> 1.336642


Hiç yorum yok:

Yorum Gönder