9 Mart 2016 Çarşamba
C'DE LAGRANGE INTERPOLASYONU
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f;
int i, j, k = 0;
double a, b, *x, *fx, pn = 0, p, ival;
char s[20];
fpos_t position;
if ((f = fopen("datas.txt", "r")) == NULL)
{
printf("File could not be opened\n");
}
printf("\nEnter the point : ");
scanf("%lf", &p);
fgets(s, 20, f);
printf("\n %s", s);
fgetpos(f, &position);
do{
fscanf(f, "%lf%lf", &a, &b);
k++;
} while (!feof(f));
x = (double *)malloc(k * sizeof(double));
fx = (double *)malloc(k * sizeof(double));
fsetpos(f, &position);
printf("\n");
for (i = 0; i < k; i++)
{
fscanf(f, "%lf%lf", &x[i], &fx[i]);
printf("% lf\t\t%lf\n",x[i],fx[i]);
}
for (i = 0; i < k; i++)
{
ival = 1;
for (j = 0; j < k; j++)
{
if (i != j)
{
ival = ival * (p - x[j]) / (x[i] - x[j]);
}
}
pn = pn + (fx[i] * ival);
}
printf("\nResult is for P(nth) : %lf\n\n", pn);
system("pause");
return 0;
}
datas.txt :
x f(x)
1.0 0.7651977
1.3 0.6200860
1.6 0.4554022
1.9 0.2818186
2.2 0.1103623
Etiketler:
c,
fgetpos,
file,
fpos_t,
fsetpos,
interpolation,
lagrange,
numerical analysis,
operations,
polynomial
C'DE SECANT VE REGULA FALSI METODU
#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
#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
Etiketler:
c,
false position,
file,
math,
method,
numerical analysis,
operations,
regula falsi,
secant
Kaydol:
Yorumlar (Atom)

