symbolic integrating only one variable of three
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
KOZI
le 3 Nov 2018
Modifié(e) : Walter Roberson
le 6 Nov 2018
Hellow every one. I have one function with three variables. Variables typicaly are x,y,z where y=0 but in function i am using spherical coordinates which i have define in the begining of my code. I have one extra variable th1 which i want to integrate and the new function will have only x,z(r,th in spherical ). My problem is i cannot do that because when i run this:
syms x z th1;
r=(x^2 + z^2)^0.5;
th=acos(z/r);
d=2;
a=1;
d1=(a^2)/d;
L=1.5;
R1=(r^2 + d^2 - 2*r*d*(cos(th)*cos(th1) + sin(th)*sin(th1)))^0.5;
R2=(r^2 + d1^2 - 2*r*d1*(cos(th)*cos(th1) + sin(th)*sin(th1)))^0.5;
F1=d/R1;
F2=-(a/R2);
a1=-L/d;
a2=L/d;
f=@(x,z,th1)(F1+F2)
g = @(x,z) integral(@(th1) f(x,z,th1) , a1,a2)
I get :
f =
function_handle with value:
@(x,z,th1)(F1+F2)
I just want the symbolic expression of the above integration. I am stuck a lot of hours looking in already answered post but nothing so far. thanks in advance.
0 commentaires
Réponse acceptée
Walter Roberson
le 3 Nov 2018
f = matlabFunction(F1+F2, 'vars', [x, z, th1]);
It turns out there is a closed form solution for g, but it is long and a bit complicated, and MATLAB cannot find it.
9 commentaires
Walter Roberson
le 5 Nov 2018
I ran that code preceded by
syms x z th1
and it worked. It did give two messages about
Warning: Infinite or Not-a-Number value encountered.
One of those messages is for (0,0). r(0,0) = 0, and so acos(z/r(x,z)) is acos(z/0) which is 0/0 which is nan. This is the case for all th1 for (0,0)
The other of the messages is for (0,2). F1(0,2,th1) = 2^(1/2)/(2*(1 - cos(th1))^(1/2)) and when th1 is sufficiently close to 0, 1-cos(th1) becomes 0, leading to a division by 0, which leads to an infinite result. This the case for two of the th1 values that are generated internally, both near +/- 7E-9, but it is enough to "poison" the entire integral, so g(0,2) is infinite.
Plus de réponses (1)
madhan ravi
le 3 Nov 2018
just change your last Line to this:
g = int( f(x,z,th1) ,th1, a1,a2)
12 commentaires
Walter Roberson
le 5 Nov 2018
-2*(-a^2+(b^2+c^2)^(1/2))*(-(sin(x-arctan(-b,c))*(b^2+c^2)^(1/2)+a^2)/(-a^2 +(b^2+c^2)^(1/2)))^(1/2)*(-(sin(x-arctan(-b,c))-1)*(b^2+c^2)^(1/2)/(a^2+(b^ 2+c^2)^(1/2)))^(1/2)*((sin(x-arctan(-b,c))+1)*(b^2+c^2)^(1/2)/(-a^2+(b^2+c^ 2)^(1/2)))^(1/2)*EllipticF((-(sin(x-arctan(-b,c))*(b^2+c^2)^(1/2)+a^2)/(-a^ 2+(b^2+c^2)^(1/2)))^(1/2),(-(-a^2+(b^2+c^2)^(1/2))/(a^2+(b^2+c^2)^(1/2)))^( 1/2))/(b^2+c^2)^(1/2)/cos(x-arctan(-b,c))/((a^2*(b^2+c^2)^(1/2)+b^2*sin(x- arctan(-b,c))+c^2*sin(x-arctan(-b,c)))/(b^2+c^2)^(1/2))^(1/2)
Is the antiderivative of that function, Torsten
Torsten
le 6 Nov 2018
Modifié(e) : Walter Roberson
le 6 Nov 2018
My suggestion is to differentiate f with respect to r, set r=a and use "integral" to do the integration.
Interchanging integration and differentiation is justified by "Leibniz integral rule":
Best wishes
Torsten.
Voir également
Catégories
En savoir plus sur Calculus dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!