Problem with definite integration using integral(). Infinite or Not-a-Number value encountered.
6 views (last 30 days)
Show older comments
Hello,
This is my function definition.
function E_j = E_fld_integ(facet_flag, pd, lower_limit, upper_limit)
F = @(x)(exp(1i*pd).*exp(1i*k*x*sin_theta));
G = @(x)(exp(1i.*(pd + (pd_def_min-sqrt(pd_def_min^2-x.^2)) ) )...
.* exp(1i*k*x.*sin_theta) );
% case 1: E_j = integral(F, lower_limit, upper_limit, 'ArrayValued', true);
% case 2: E_j = integral(G, lower_limit, upper_limit, 'ArrayValued', true);
end
Where F and G are functions of variable 'x'. All other names(k, pd_def_min, pd) are constants. Although 'sin_theta' is a vector with 1000 values.
Let us consider values of constants:
lower_limit = 30000; upper_limit = 50000; pd = 0; pd_def_min = 95;
Goal: I would like the result of the definite integral to be an array of 1000 double-valued complex numbers in both cases above for F and G functions respectively.
Current scenario and problem:
1. F evaluates conveniently with the provided limits.
2. Whereas evaluation of G translates to the following error:
- Warning: Infinite or Not-a-Number value encountered.
- > In integralCalc/iterateArrayValued (line 267)
- In integralCalc/vadapt (line 130)
- In integralCalc (line 75)
- In integral (line 88)
- In [mainfunctioncall]>E_fld_integ (line 206)
Could someone help me understand as to what is happening and is there a more elegant (and fast execution-wise) solution for the above goal?
Do I have to use Taylor's expansion or Bessels integrals to solve for "G" ?
4 Comments
Accepted Answer
More Answers (1)
See Also
Categories
Find more on Calculus in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!