Problem: Integrating symbolic expression with dblquad
2 views (last 30 days)
Show older comments
Hi there
I have a long list of symbolic functions which I would like to integrate with dblquad (this is an example of one such function):
sym x y
FUN(ii)=1/(x^(4/7)*exp(1/(8*x))*exp(y^2/(3*x^(2/5))));
IntFUN(ii)=dblquad(@(x,y) FUN(ii),0.1,400,0,200)
But the integration itself fails (error: Matrix dimensions must agree). If instead I do it with "." before all */^ it works fine:
IntFUN(ii)=dblquad(@(x,y) 1./(x.^(4./7).*exp(1./(8.*x)).*exp(y.^2./(3.*x.^(2./5)))),0.1,400,0,200)
ans =
103.9509
Problem is, symbolic math apparently doesn't store the use of "." so I can't just convert all expressions to char, find the operators, add a "." and convert back to sym.
How do I solve this problem?
0 Comments
Accepted Answer
Walter Roberson
on 7 Jan 2012
Use matlabFunction to convert the symbolic expression to a function handle.
You should not be using a symbolic expression for dblquad() -- dblquad() must be passed a function handle, and a symbolic expression is not a function handle.
0 Comments
More Answers (1)
Jakob Sievers
on 7 Jan 2012
2 Comments
Walter Roberson
on 7 Jan 2012
If the structure is the same but the constants are different, you could use symbolic variables for the constants, matlabFunction() up the result, and pass the constants in using (e.g.)
@(x,y) mf_FUN{i}(x, y, c1, c2, c3)
where c1, c2, c3 had been retrieved (or calculated if appropriate)
See Also
Categories
Find more on Assumptions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!