# Queries To Evaluate The Given Equation In A Range [L,R]

The evaluation of all equation in an interval [L, R] give us a range of values for those variables. Examples of how this may be used include modelling, data analysis, and problem-solving scenarios.

In this situation, we define equations variable values for all point in range. Hence can be done by specifying the step size of the range and evaluating the equation for each variable value inside the range.

## Specifications

It may be called a request for information asked to database. Data is extracted using specific commands when certain requirements are met. To acquire, filter, sort, and summarize data from database, queries are frequently written in programming language Queries can be simple, depending on complexity of data and information that must be extracted.

A computer program that accepts the equation range [L, R], and step size as inputs and produces results of equation for each value of variable in range can be used to automate this process.

## Problem Approaches

Finding value of given equation inside a certain range is the goal of queries to assess any given equation in a range [L, R]. Here is a potential method to use for similar queries −

• Parse the provided equation and create an expression tree from it. A binary tree can be used to visualize the expression tree, with each node standing in for an operator or operand in the equation.

• Pre-order the expression tree and iterate through each sub-tree, evaluating the equation for each one. Each node of the expression tree should include the outcome.

• Create range query function that accepts expression tree's root, lower bound L, and upper bound R as inputs. The goal of this function is to iterate through expression tree and return equation's solution for supplied [L, R] range.

• One can additionally precompute and save equation's solutions for each sub-range of specified range [L, R] to improve range query function.

• Finally, one can evaluate equations for various ranges using range query function.

### Syntax

In C++, a loop can be used to iterate through the values in each range before applying the supplied equation to each value to determine its evaluation in the [L, R] range. For each value of x in range [L, R], create following loop to assess equation −

y = x2 + 2x + 1
// Define equation to evaluate
int equation(int x) {
return x*x + 2*x + 1;
}

// Evaluate equation for every value of x in range [L, R]
int L, R; // Define the range
for (int x = L; x <= R; x++) {
int y = equation(x);

// Do something with value of y like print it
cout << "x = " << x << ", y = " << y << endl;
}


### Algorithm

Here is C++ algorithm to assess equation in interval [L, R] −

• Step 1 − Give example of how to define equation as function that receives variable x and returns value y −

• double equation(double x) {
return x*x + 2*x + 1;
}

• Step 2 − Write function that accepts two integers L and R as arguments and outputs the solution to equation for each integer value between L and R inclusive. One can iterate across range [L, R] using loop, evaluating equation for each integer value −

• vector<double> evaluate_equation(int L, int R) {
vector<double> results;
for (int x = L; x <= R; x++) {
double y = equation(x);
results.push_back(y);
}
return results;
}

• Step 3 − After evaluating equation over range [L, R],one can use this function to get result, which are delivered as vector of double values −

• vector<double> results = evaluate_equation(1, 10);


Note − By simply substituting desired equation for equation function,one can change procedure to evaluate any equation.

## Approaches to Follow

### Approach -1

In C++, one can use a loop to cycle through each value in range and evaluate equation there in order to evaluate equation in range [L, R].

The range being assessed in example is [1, 10], and equation being evaluated is i*i + 2*i + 1. The for loop repeatedly evaluates equation at each value in range and prints answer to console. The equation and range can be changed to suit one’s needs.

### Example-1

#include <iostream>
using namespace std;
int main() {
int L = 1, R = 10; // range of values to evaluate
for (int i = L; i <= R; i++) {
int result = i*i + 2*i + 1; // equation to evaluate
cout << "Result at " << i << " = " << result << endl;
}
return 0;
}


### Output

Result at 1 = 4
Result at 2 = 9
Result at 3 = 16
Result at 4 = 25
Result at 5 = 36
Result at 6 = 49
Result at 7 = 64
Result at 8 = 81
Result at 9 = 100
Result at 10 = 121


### Appraoch-2

Here is the illustration of C++ query that can be used to analyze given equation for range of values between L and R −

In this illustration, an equation that needs to be evaluated is first defined as a function called equation. Then, we create an evaluate function, which accepts two parameters, L and R, which stand for range of values we want to evaluate equation for.

We iteratively evaluate equation for each value between L and R (inclusive) inside evaluate function. Then, using cout, we output outcome for each value.

We specify the range we want to evaluate equation for in main function (in this case, L = 1 and R = 10) and call evaluate function with these values. The programmer’s output will be solutions to problem for each number between 1 and 10.

### Example-2

#include <bits/stdc++.h>
using namespace std;

// Define the equation you want to evaluate
int equation(int x) {
return x * x + 2 * x + 1;
}

// Define a function to evaluate the equation for a given range [L, R]
void evaluate(int L, int R) {
for (int i = L; i <= R; i++) {
int result = equation(i);
cout << "The result of equation for " << i << " is " << result << endl;
}
}
int main() {
int L = 1, R = 10;
evaluate(L, R);
return 0;
}


### Output

The result of equation for 1 is 4
The result of equation for 2 is 9
The result of equation for 3 is 16
The result of equation for 4 is 25
The result of equation for 5 is 36
The result of equation for 6 is 49
The result of equation for 7 is 64
The result of equation for 8 is 81
The result of equation for 9 is 100
The result of equation for 10 is 121


## Conclusion

In conclusion, we can apply the prefix sums or cumulative sums approach to assess a given equation in the interval [L,R]. Each query can be answered in constant time by precalculating the prefix sums of the equation values up to each index. The temporal complexity of this strategy, where N is the size of the input array, is O(N) for precomputation and O(1) for each query.

Overall, the size of the input array and the quantity of queries to be run determine which method should be used. Prefix sum technique is more effective if the number of queries is much greater than the size of the array. However, the binary search strategy can be a preferable option if the number of queries is smaller.

Updated on: 10-May-2023

54 Views 