how to get an analytical solution

조회 수: 11 (최근 30일)
Darcy Chou
Darcy Chou 2018년 6월 26일
댓글: Ameer Hamza 2018년 6월 26일
syms tp t
NN=((exp(-1.45*10^(-4)*tp^1.274))^1.5)/2
z=4/3*pi*NN*(t-tp)^3
Z=int(z,tp,0,t)
output is
Z =
int((2*pi*exp(-(2674777890687885*tp^(637/500))/18446744073709551616)^(3/2)*(t - tp)^3)/3, tp, 0, t)
that is not an analytical solution, then how can I get the analytical solution?
If t=10 ,how to get the numerical solution?
Thanks for reading.
  댓글 수: 1
Walter Roberson
Walter Roberson 2018년 6월 26일
You cannot expect analytic solutions when you use exponents that are floating point numbers, as calculus does not define integrals with floating point exponents.
You should not be asking for an analytic integral for any expression that involves any floating point constants at all. If you want to express uncertainty in value (floating point values need to be considered as uncertain) then replace the floating point numbers with rationals plus a symbolic uncertainty.

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

채택된 답변

Ameer Hamza
Ameer Hamza 2018년 6월 26일
The existence of an analytical solution is not always necessary. I cannot prove mathematically but it might be the case that this function does not have an analytical solution at all. It might also be the limitation of MATLAB symbolic engine. In the first case, there is not much you can do other than resorting to the numerical solution. In the second case, you may try some other symbolic math engine. As far as the numerical result is concerned, you can get it as with integral().
syms tp t
NN=((exp(-1.45*10^(-4)*tp^1.274))^1.5)/2;
z=4/3*pi*NN*(t-tp)^3;
Z=int(z,tp,0,t);
Z_function = matlabFunction(z);
Z_numerical = integral(@(tp) Z_function(10, tp), 0, 10);
  댓글 수: 2
Darcy Chou
Darcy Chou 2018년 6월 26일
Thank you, your comments are helpful. It is not necessary to get an analytical solution. And the problem is solved using numerical method. Have a nice day!
Ameer Hamza
Ameer Hamza 2018년 6월 26일
You are welcome.

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

추가 답변 (2개)

KSSV
KSSV 2018년 6월 26일
syms tp t
NN=((exp(-1.45*10^(-4)*tp^1.274))^1.5)/2 ;
z=4/3*pi*NN*(t-tp)^3 ;
Z=int(z,0,t)
subs(Z,'t',10)
  댓글 수: 4
Walter Roberson
Walter Roberson 2018년 6월 26일
No, the syntax
Z=int(z,tp,0,t)
means integrate z(tp) over tp = 0 to tp = t . tp is not a constant in the integral.
t might be a constant, but tp is not.
Darcy Chou
Darcy Chou 2018년 6월 26일
편집: Darcy Chou 2018년 6월 26일
Z=int(z,tp,0,t)
in this syntax, z is the integrand and tp is the variable of integration,
Z is a definite integral whose upper limit is the variable t.

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


Walter Roberson
Walter Roberson 2018년 6월 26일
You have
NN=((exp(-1.45*10^(-4)*tp^1.274))^1.5)/2
Remember that exp(A*x)^B is the same as exp(A*B*x), so you can bring the 1.5 inside, forming
NN=exp(-1.5*1.45*10^(-4)*tp^1.274)/2
Now introduce a symbolic variable A and rewrite this as
syms tp nonnegative
syms A positive
NN = exp(-A*tp^sym(1.274)) / 2
for A = 1.5*1.45*10^(-4) but leave A as symbolic at the moment.
Then look at
z=4/3*pi*NN*(t-tp)^3
and see that this can be rewritten as
z = B * exp(-A*tp^sym(1.274)) * (t-tp)^3
for B = 4/3*pi/2
Now you want int(z, tp, 0, t)
which is int(B * exp(-A*tp^sym(1.274)) * (t-tp)^3, tp, 0, t)
which is B * int(exp(-A*tp^sym(1.274)) * (t-tp)^3, tp, 0, t)
And it turns out that MATLAB can calculate
temp = int(exp(-A*tp^sym(1.274)) * (t-tp)^3, tp, 0, t)
fairly quickly.
So the overall result is 4/3*pi/2 * subs(temp, A, 1.5*1.45*10^(-4))
  댓글 수: 3
Walter Roberson
Walter Roberson 2018년 6월 26일
Oooo... I just discovered that I had a bracket in the wrong place when I was doing the int(). MATLAB cannot calculate temp easily after all :(
Ameer Hamza
Ameer Hamza 2018년 6월 26일
Wolfram Alpha does produce a solution for indefinite integral of the form
int(exp(A*tp^1.274)*(t-tp)^3, tp)
in term of gamma function. Although gamma function is itself defined in term of an integral for most cases.
I cannot find the required definite integral because its calculation requires a pro license. But I guess maple or Mathematica might be able to give a solution for the definite integral. Although I am not sure whether such a solution will be useful for any practical purpose.
Also from @Darcy comment, it appears that the result will later be used in a numerical optimization problem. Since you are eventually using a numerical optimization algorithm, it might be better to also use numerical integration techniques instead of searching for a closed form solution.

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

카테고리

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