Problem: Integrating symbolic expression with dblquad
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Walter Roberson
2012 年 1 月 7 日
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 件のコメント
その他の回答 (1 件)
Jakob Sievers
2012 年 1 月 7 日
2 件のコメント
Walter Roberson
2012 年 1 月 7 日
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)
参考
カテゴリ
Help Center および File Exchange で Assumptions についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!