Symbolic integration has 3 solutions based on integration variable range, how to extract one of these?

조회 수: 7 (최근 30일)
r is the integration variable. The integration is:
mom_2 = int((umax*(1-r/Radius)^(1/7))^2*2*pi*r,r,0,Radius)
and the result is:
size(mom_2) = 1 1
Question: how do I access each of these three possible solutions?
For example, I would like to use (50/49)*pi*U_0^2 in further calculations. Thanks ahead of time!

채택된 답변

Paul
Paul 2024년 2월 17일
syms U_0 r Radius
mom_2 = int((U_0*(1-r/Radius)^(1/7))^2*2*sym(pi)*r,r,0,Radius)
mom_2 = 
One approach that just extracts the case you want
c = children(mom_2)
c = 3×2 cell array
{[(49*pi*U_0^2)/72 ]} {[Radius == 1]} {[(49*pi*Radius^2*U_0^2)/72 ]} {[0 < Radius ]} {[2*U_0^2*pi*int(r*(1 - r/Radius)^(2/7), r, 0, Radius)]} {[~0 < Radius]}
case1 = c{1,1}
case1 = 

추가 답변 (1개)

John D'Errico
John D'Errico 2024년 2월 17일
Or do this:
syms r umax Radius
mom_2 = int((umax*(1-r/Radius)^(1/7))^2*2*pi*r,r,0,Radius)
mom_2 = 
subs(mom_2,Radius,1)
ans = 
Note that it resolves the three cases into 1.
  댓글 수: 5
Paul
Paul 2024년 2월 17일
It's usually better to use assume before calling int to give it some help. In this case, if R>0, we'd try
syms U_0 r Radius
assume(Radius,'positive')
mom_2 = int((U_0*(1-r/Radius)^(1/7))^2*2*sym(pi)*r,r,0,Radius)
mom_2 = 
Not sure why that didn't work. Instead, we can do
syms rho
assume(rho,'positive')
mom_2 = int((U_0*(1-r/rho)^(1/7))^2*2*sym(pi)*r,r,0,Radius)
mom_2 = 
mom_2 = subs(mom_2,rho,Radius)
mom_2 = 

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Solvers에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by