Numerically Integral over one variable only

15 次查看(过去 30 天)
Hi,
I am stuggling with numerically intergral ove one variable. Here's a simplified verision of my code:
syms x y
f=x^2+y;
g=3x-y;
fg=f*g;
F=@(y)intergal(@(x) fg,1,3)
After getting F(y), I need to solve the equation F(y)=constant to find the value y.
Is there any numerically way to realize this, since in my real problem, my function can not be solve using definite integrals( "int").
Attached bellow is the real problem I am solving (complicated details omitted, involving Bessel funcitons). The"%Normalization" part is where this question is related to. A and r are the only two variables and I need to integral r to get the equation of A and then solve A from boundary conditions. Thanks a lot for your help!
syms r A
A=A;%assume
B=i*(beta*m)/(mu0*omega)*(1/x1a^2-1/x2a^2)*(I_mda/(x1a*I_ma)-K_mda/(x2a*K_ma))^(-1) * A;
C=I_ma/K_ma * A;
D=I_ma/K_ma * B;
x1=sqrt(beta^2-eps1*k0^2)*r;
x2=sqrt(beta^2-eps2*k0^2)*r;
I_m=besseli(m,x1); I_mp=besseli(m+1,x1); I_md=I_mp+(m/x1)*I_m;
K_m=besselk(m,x2); K_mp=besselk(m+1,x2); K_md=-K_mp+(m/x2)*K_m;
%Field in 1
E1z=A*I_m;
E1r=-i*(beta*r/x1^2)*(A*x1*I_md+i*(m*mu0*omega/beta)*B*I_m);
E1phi=-i*(beta*r/x1^2)*(i*m*A*I_m-(mu0*omega/beta)*B*x1*I_md);
H1z=B*I_m;
H1r=-i*(beta*r/x1^2)*(B*x1*I_md-i*(m*eps0*eps1*omega/beta)*A*I_m);
H1phi=-i*(beta*r/x1^2)*(i*m*B*I_m+(eps0*eps1*omega/beta)*A*x1*I_md);
E1=[E1r, E1phi, E1z];
H1=[H1r,H1phi,H1z];
%Field in 2
E2z=C*K_m;
E2r=-i*(beta*r/x2^2)*(C*x2*K_md+i*(m*mu0*omega/beta)*D*K_m);
E2phi=-i*(beta*r/x2^2)*(i*m*C*K_m-(mu0*omega/beta)*D*x2*K_md);
H2z=D*K_m;
H2r=-i*(beta*r/x2^2)*(D*x2*K_md-i*(m*eps0*eps2*omega/beta)*C*K_m);
H2phi=-i*(beta*r/x2^2)*(i*m*D*K_m+(eps0*eps2*omega/beta)*C*x2*K_md);
E2=[E2r,E2phi,E2z];
H2=[H2r,H2phi,H2z];
%Normalization
S1=matlabFunction(vpa(r*dot(conj(E1),E1)));
S2=matlabFunction(vpa(r*dot(conj(E2),E2)));
S1int=@(A) integral(@(r) S1,0,a);
S2int=@(A) integral(@(r) S2,0,Int);
Asol=double(vpasolve(2*pi*(S1int+S2int)==2*omega*mu0/abs(beta),A));
  2 个评论
Walter Roberson
Walter Roberson 2019-12-9
fg=f*g;
I wonder if you do mean multiplication, or if instead you should be doing a convolution ?
Walter Roberson
Walter Roberson 2019-12-9
Lots of undefined variables, so we cannot run the code to test.

请先登录,再进行评论。

回答(1 个)

Navya Seelam
Navya Seelam 2019-12-9
编辑:Navya Seelam 2019-12-9
Hi,
Try the following
syms x y
f=x^2+y;
g=3*x-y;
fg=f*g;
F=int(fg,x,1,3)% to integrate symbolic expression fg with x varying from 1 to 3
s=vpasolve(F==0,y) % solve for y
What is the probem you are facing when you use "int"?

类别

Help CenterFile Exchange 中查找有关 Calculus 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by