Explanation
The program calculates the value of the sine function \( \sin(x) \) using the Taylor series expansion up to a specified number of terms. The sine series is given by \( \sin(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \frac{x^9}{9!} - \ldots \), where \( x \) is entered by the user in degrees.
Header
The code begins with including the standard input-output header file and math header file using #include <stdio.h> and #include <math.h>.
Function Declaration
The program declares a recursive function fact to calculate the factorial of a number:
long long fact(int n): Declares the function with an integer parametern.
Function Definition
The program defines the fact function:
if (n == 0) return 1;: Defines the base case where the factorial of 0 is 1.return n * fact(n - 1);: Defines the recursive case where the factorial ofnis equal tonmultiplied by the factorial ofn - 1.
Variable Declaration
The main() function is defined, and several variables are declared:
float x, Q, sum = 0;: Variables to hold the input value \( x \), its radian conversion \( Q \), and the sum of the series.int i, j, limit;: Variables to control the loop and the limit for the series expansion.
Program Description
The program prints a description message for the user to understand its functionality.
User Input
The user is prompted to enter the value of \( x \) and the limit for the series expansion:
printf("Enter the value of x of sinx series (in degrees): ");: Prompts the user to enter the value of \( x \) in degrees.scanf("%f", &x);: Reads the value entered by the user and stores it inx.printf("Enter the limit upto which you want to expand the series: ");: Prompts the user to enter the limit for the series expansion.scanf("%d", &limit);: Reads the limit entered by the user and stores it inlimit.
Angle Conversion
The program converts the angle from degrees to radians:
Q = x;: Stores the original value of \( x \) for output.x = x * (3.1415 / 180);: Converts the angle from degrees to radians.
Series Calculation
The program calculates the value of the sine function using the series expansion:
for (i = 1, j = 1; i <= limit; i++, j = j + 2): Loops through the terms of the series.if (i % 2 != 0): Checks if the term index is odd.sum += pow(x, j) / fact(j);: Adds the current term to the sum if the term index is odd.
else: Executes if the term index is even.sum -= pow(x, j) / fact(j);: Subtracts the current term from the sum if the term index is even.
Output Result
The program prints the calculated value of the sine function:
printf("Sin(%.1f degrees): %f\n\n", Q, sum);: Prints the value of \( x \) in degrees and the calculated sum.
Program End
The program ends with return 0; to indicate successful execution.
Code
/*
* -----------------------------------------------------------
* Logic Building with Computer Programming (CSU1128)
* Instructor: Dr. Pankaj Vaidya | Author: Divya Mohan
*
* This code is a part of the educational initiative by dmj.one
* with aim of empowering and inspiring learners in the field of
* Computer Science and Engineering through the respective courses.
*
* (c) 2022, Divya Mohan for dmj.one. All rights reserved.
* -----------------------------------------------------------
*/
#include <stdio.h>
#include <math.h>
long long fact(int n) {
if (n == 0) return 1;
return n * fact(n - 1);
}
int main() {
printf("\n\n Program to calculate the value of Sin(x) series where x entered by the user. Sin series is sin(x): x - x^3/3! + x^5/5! - x^7/7! + x^9/9! .... \n\n");
float x, Q, sum = 0;
int i, j, limit;
printf("Enter the value of x of sinx series (in degrees): ");
scanf("%f", &x);
printf("Enter the limit upto which you want to expand the series: ");
scanf("%d", &limit);
Q = x;
x = x * (3.1415 / 180); // Convert degree to radian
for (i = 1, j = 1; i <= limit; i++, j = j + 2) {
if (i % 2 != 0) {
sum += pow(x, j) / fact(j);
} else {
sum -= pow(x, j) / fact(j);
}
}
printf("Sin(%.1f degrees): %f\n\n", Q, sum);
return 0;
}
Output
Program to calculate the value of Sin(x) series where x entered by the user. Sin series is sin(x): x - x^3/3! + x^5/5! - x^7/7! + x^9/9! ....
Enter the value of x of sinx series: 4
Enter the limit upto which you want to expand the series: 5
Sin(4.0): 0.069754