Integrating a multivariate function w.r.t. a single variable
古いコメントを表示
Hello,
I am defining a function using
f = @(x,y) (expression in x and y)
This definition I believe it is correct as I can call f(0,0) for example and I get the numerical value.
What I need to do next is integrate f(x,y) with respect to y between a and b and call this g(x). I need then to be able to pass g(x) to fsolve in order to compute the roots. How do I do this? I tried dblquad, but it integrates w.r.t. both variables at once. quad gives me and error as I am not sure what's the correct syntax for this.
Thanks, Alex
採用された回答
その他の回答 (3 件)
Walter Roberson
2013 年 2 月 13 日
1 投票
You cannot do this with numeric integration.
If you have the symbolic toolbox, then expression the function symbolically and do symbolic integration with int(). Then if you need, you can use matlabFunction to turn the symbolic result into a function handle of a numeric function.
2 件のコメント
Adrian Martinez
2021 年 6 月 5 日
Can you please show an example of how to do this?
f = @(x,y) (x.^2-y.^2).*cos(x./(1+y.^2));
% Some limits of integration
a = 0;
b = 3;
syms x y
% Define g as the integral of f(x,y) dy from a to b
g(x) = int(f(x,y), y, a, b)
x0 = -100;
vpasolve(g, x0)
G = matlabFunction(g)
fsolve(G, x0)
In some cases, the int() step would be able to calculate a closed form expression, so G will not always end up with an integral() in it.
Youssef Khmou
2013 年 2 月 13 日
Hi, try this :
syms x y
h=exp(-x^2-y^2)
F1=int(h,x)
F2=int(h,y)
Based on F1 and F2 you make function handle :
Fx=@(x) 1/2/exp(x^2)*pi^(1/2) % truncated ERF(Y)
Y=fsolve(Fx,0.1)
2 件のコメント
Walter Roberson
2013 年 2 月 13 日
How do you get from the "F1 and F2" to the Fx ? And where do the limits of integration over y come in?
Youssef Khmou
2013 年 2 月 13 日
Hi,i used the undefined integration or "primitive" , for F1 you get :
F1 =
1/2/exp(y^2)*pi^(1/2)*erf(x)
you have an analytic integration w.r.t. x, so its function of y , now manually you set a function handle Fy :
Fy=@(x) 1/2/exp(y^2)*pi^(1/2)
and then solve it with "fslove" as Alexandru said he wants to use "fslove" .
Yang Zhang
2015 年 3 月 15 日
0 投票
Use Symbolic Math Toolbox to your problem.
カテゴリ
ヘルプ センター および File Exchange で Calculus についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!