Full code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EXPECTED_ARGS 2
#define INTEGRAL_STEPS 100
#define LOG_2 log(2)
#define MAX_N 10
int main(int argc, char* argv[])
{
double integral_yn[MAX_N], recursive_yn[MAX_N];
double a;
double sum, x;
int valid_input;
int i, j, n;
int steps = INTEGRAL_STEPS;
FILE *output;
/* Get command line input */
if(argc == EXPECTED_ARGS)
{
valid_input = sscanf(argv[1], "%lf", &a);
printf("a stored\n");
}
else
{
printf("***Enter program name followed by a strictly positive number***\n");
valid_input = 0;
}
/* Checks a strictly positive */
if(a <= 0)
{
printf("***Number must be strictly positive***\n");
valid_input = 0;
}
/* Final validation */
if(!valid_input)
{
printf("Input validation failed!!!\n");
return(EXIT_FAILURE);
}
/* Evaluate y_1 using integral */
double y1 = 1 - a*LOG_2;
integral_yn[0] = y1;
printf("integral_yn[0] done\n");
recursive_yn[0] = y1;
printf("recursive_yn[0] done\n");
/* Evaluate integral y_n */
for(n=1; n<10; n++)
{
printf(" n = %d ", n);
integral_yn[n] = 0;
printf("integral_yn began/n");
for(i=0; i<steps; i++)
{
x = i/steps;
sum = pow(x, n+1)/( (x + a)*steps );
integral_yn[n] = integral_yn[n] + sum;
}
printf("integral_yn[%d] done/n", n);
}
printf("integral_yn done/n");
/* Evaluate recursive y_n */
for(j=1; j<10; j++)
{
recursive_yn[j] = 1/(j+1) - a*recursive_yn[j-1];
}
printf("recursive_yn done/n");
/* Prints to file assign4.out */
output = fopen("assign4.out", "w");
fprintf(output, "a = %.4lf, y_1 = %.6lf\n", a, integral_yn[0]);
for(i=1; i++; i<10)
{
fprintf(output, "%10.9lf %10.9lf", integral_yn[i], recursive_yn[i]);
}
fclose(output);
return(0);
}