0% found this document useful (0 votes)
35 views

C Programs

The document describes two numerical analysis methods: 1) The Bairstow method, which uses successive approximations to find the roots of a polynomial equation. It takes as input the polynomial coefficients and initial guesses for the roots, then iteratively improves the guesses. 2) Curve fitting, which takes experimental data points and uses the method of least squares to determine the coefficients a and b in an equation of the form y = ae^bx that best fits the data. It calculates the necessary sums and takes the derivatives to find a and b.

Uploaded by

naj
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

C Programs

The document describes two numerical analysis methods: 1) The Bairstow method, which uses successive approximations to find the roots of a polynomial equation. It takes as input the polynomial coefficients and initial guesses for the roots, then iteratively improves the guesses. 2) Curve fitting, which takes experimental data points and uses the method of least squares to determine the coefficients a and b in an equation of the form y = ae^bx that best fits the data. It calculates the necessary sums and takes the derivatives to find a and b.

Uploaded by

naj
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 4

Bairstow Method:

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
int i, n;
float p, q, delta_p = 0, delta_q = 0, deno, a[10], b[10], c[10];
flushall();
clrscr();
printf("Enter degree of polynomial: ");
scanf ("%d", &n);
printf("\nEnter coefficients of polynomial:\n");
for (i=0; i<=n; i++)
{
printf("a(%d)= ",i);
scanf ("%f", &a[i]);
}
printf("\nEnter initial guess for coefficient p: ");
scanf ("%f", &p);
printf("\nEnter initial guess for coefficient q: ");
scanf ("%f", &q);
do
{
b[0] = a[0]; c[0] = a[0];
b[1] = a[1] - p*b[0];
c[1] = b[1] - p*c[0];
for (i=2; i<=n; i++)
{
b[i] = a[i] - p*b[i-1] - q*b[i-2];
c[i] = b[i] - p*c[i-1] - q*c[i-2];
}
deno = c[n-2]*c[n-2] - c[n-3]*(c[n-1] - b[n-1]);
delta_p = (b[n-1]*c[n-2] - b[n]*c[n-3])/deno;
delta_q = (b[n]*c[n-2] - b[n-1]*(c[n-1] - b[n-1]))/deno;
p += delta_p; q += delta_q;
} while (delta_p > 0.01 || delta_q > 0.01);
printf("\n\nThe complex factor of the given polynomial is \n\n\n\t\tx^2 + (%f)x + (%f)",
p, q);
getch();
}
Output of program (Bairstow Method):
Enter degree of polynomial: 5

Enter coefficients of polynomial:


a(0)= 1
a(1)= -3
a(2)= -10
a(3)= 10
a(4)= 35
a(5)= 55

Enter initial guess for coefficient p: 1.5

Enter initial guess for coefficient q: 2

The complex factor of the given polynomial is

x^2 + (1.644495)x + (2.052706)


Curve Fitting:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
int i, n;
float x[10], y[10], s_x=0, s_y=0, s_xy=0,s_x2=0, a, b;
flushall();
clrscr();
printf("Enter number of data points available for curve fitting: ");
scanf ("%d", &n);
printf("\nThe curve will have equation as \n\t\ty = a*e^(bx)");
printf("\n\nEnter all the data points:\n");
for (i=0; i<n; i++)
{
printf("x(%d)= ",i);
scanf ("%f", &x[i]);
printf("y(%d)= ",i);
scanf ("%f", &y[i]);
}
for (i=0; i<n; i++)
{
s_x += x[i];
s_y += log(y[i]);
s_xy += x[i]*log(y[i]);
s_x2 += pow(x[i],2);
}
b = (s_y/n - s_xy/s_x) / (s_x/n - s_x2/s_x);
a = exp ((s_y - b*s_x)/n);
printf("\n\nThe equation of fitting curve is\n\n\t\ty = %fe^(%fx)", a ,b);
getch();
}
Output of program (Curve Fitting):
Enter number of data points available for curve fitting: 5

The curve will have equation as


y = a*e^(bx)

Enter all the data points:


x(0)= 1
y(0)= 71
x(1)= 2
y(1)= 87
x(2)= 3
y(2)= 106
x(3)= 4
y(3)= 129
x(4)= 5
y(4)= 158

The equation of fitting curve is

y = 58.251339e^(0.199373x)

You might also like