how to code equation

조회 수: 11 (최근 30일)
Cesar Cardenas
Cesar Cardenas 2023년 10월 28일
댓글: Walter Roberson 2023년 11월 4일
Hello, I'm trying to code this equation but I think it is not right. Not sure how to adjust the LHS to avoid errors. Any help will be greatly appreciated. Thanks.
psi - log(psi) = -3 * -4 * log(l/2) + 4 * log(E) + 2 * l/E
  댓글 수: 1
Walter Roberson
Walter Roberson 2023년 10월 30일
See by the way https://www.mathworks.com/matlabcentral/answers/225896-how-can-i-calculate-ln-x-in-matlab-code#answer_1195970 in which I talk about how different computer languages represent natural logarithm in practice.

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

채택된 답변

Star Strider
Star Strider 2023년 10월 28일
Using the Symbolic MAth Toolbox —
syms xi lambda psi
Eqn = psi - log(psi) == -3 * -4 * log(lambda/2) + 4 * log(xi) + 2 * lambda/xi
Eqn = 
You can then manipulate it symbolically and calculate with it symbolically.
.
  댓글 수: 18
Cesar Cardenas
Cesar Cardenas 2023년 11월 4일
Right thank you. Could you give at least any clue on how to set up the code for this? I'm not a matlab expert. Thank you.
Walter Roberson
Walter Roberson 2023년 11월 4일
Q = @(v) sym(v);
k = Q(physconst('Boltzmann'));
T = Q(1.2)*(1e6);
mH = Q(1.66)*(1e-27);
G = Q(6.67)*(1e-11);
Ms = Q(1.99)*(1e30);
uc = sqrt(2 * k * T/mH);
rc = G * Ms * mH/4 * k * T;
syms u r real
Eqn = (u/uc)^2 - 2 * log(u/uc) == 4 * log(r/rc) + 4 * log(rc/r) - 3
Eqn = 
simplify(Eqn)
ans = 
sol = simplify(solve(Eqn, u))
Warning: Possibly spurious solutions.
Warning: Solutions are only valid under certain conditions. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'.
sol = 
sol1 = sol(1);
sol1r = real(sol1);
sol1i = imag(sol1);
tiledlayout('flow');
nexttile(); fplot(sol1r, [0.01 1]); title('real component')
nexttile(); fplot(sol1i, [0.01 1]); title('imaginary component')
Look at the right hand side of your Eqn. You have
4 * log(r/rc) + 4 * log(rc/r) - 3
When r and rc are positive and non-zero then log(r/rc) = -log(rc/r) and the log terms on the right hand side cancel.
Eqn1 = (u/uc)^2 - 2 * log(u/uc) == - 3
Eqn1 = 
solve(Eqn1, u)
ans = Empty sym: 0-by-1
syms x
solve( x^2 - 2*log(x) == -3 )
ans = 
vpa(ans)
ans = 
so u/uc would have to be complex-valued for there to be a solution.

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

추가 답변 (0개)

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by