DOUBLE_DEFINITE_INTEGRAL
Compute the double integral of a symbolic input function. Example of proper syntax for the function input:
2*x*y
Example of improper syntax for the function input:
2xy Params: function : str The function that we are integrating. upper_bound_x : float The upper bound for x. lower_bound_x : float The lower bound for x. upper_bound_y : float The upper bound for y. lower_bound_y : float The lower bound for y. Returns: out : Scalar The result of the double definite integral.
Python Code
from flojoy import flojoy, Scalar
from scipy import integrate
from sympy import parse_expr, lambdify
@flojoy(deps={"sympy": "1.12"})
def DOUBLE_DEFINITE_INTEGRAL(
function: str = "",
upper_bound_x: float = 0.0,
lower_bound_x: float = 0.0,
upper_bound_y: float = 0.0,
lower_bound_y: float = 0.0,
) -> Scalar:
"""Compute the double integral of a symbolic input function.
Example of proper syntax for the function input:
2*x*y
Example of improper syntax for the function input:
2xy
Parameters
----------
function : str
The function that we are integrating.
upper_bound_x : float
The upper bound for x.
lower_bound_x : float
The lower bound for x.
upper_bound_y : float
The upper bound for y.
lower_bound_y : float
The lower bound for y.
Returns
-------
Scalar
The result of the double definite integral.
"""
func = parse_expr(function)
symbols = tuple(func.free_symbols)
f = lambdify(symbols, func)
result = integrate.nquad(
f, [(lower_bound_x, upper_bound_x), (lower_bound_y, upper_bound_y)]
)[0]
return Scalar(c=result)
Example
Having problems with this example app? Join our Discord community and we will help you out!
In this example, DOUBLE_DEFINITE_INTEGRAL
node generates a Scalar type value with the following parameters.
Function: x*y
Upper_bound_x: 2
Lower_bound_x: 0
Upper_bound_y: 1
Lower_bound_y: 0
The DOUBLE_DEFINITE_INTEGRAL
result is equal to 1. So 1 is added to the SINE
node moving up every value of the sine function by 1. This difference is visible when you compare the two SCATTER
nodes.