Wrong solution using solve with a logarithmic

1 Ansicht (letzte 30 Tage)
Matthew Worker
Matthew Worker am 24 Jun. 2021
Beantwortet: Walter Roberson am 25 Jun. 2021
Hello,
I wanted to solve an equation containing a log function. The solution given by Matlab is not correct, until I multiply the logarithm by 10.
I'm aware of the difference between log and log10 and want to use the natural logarithm.
f_1 = 10* (eta_p/(b_pstern * g * eps_min))*(log(W_0/(W_0-B1)))== s*1000 ;
W_K_1 = double(solve(f_1, B1))
In the equation, everything is numeric except for B1. When I type the exact same equation into my calculator, I get the correct answer. The "10*" is the correction factor I use for the "correct" solution.
Am I using the log function wrong or is there some other error?
  2 Kommentare
dpb
dpb am 24 Jun. 2021
Would have to have a complete test case including constants to do any diagnositics...
Matthew Worker
Matthew Worker am 25 Jun. 2021
Bearbeitet: N/A am 25 Jun. 2021
Thank you for your response. The code with all the variables would be as following :
syms B1
f_1 = (6314642578216891*log(-35316/(B1 - 35316)))/536870912 == 300000 % With *10
f_2 = (5051714062573513*log(-35316/(B1 - 35316)))/4294967296 == 300000 % Without *10
ans = double(solve(f_1, B1))
ans2 = double(solve(f_2, B1))
f_1 is the corrected formula, as it offers the correct solution. f_2 is the formula that I need to use, but f_2 outputs the wrong solution. If I type f_2 into my calculator, I get the solution that Matlab outputs for f_1.
I hope you can follow my explanation!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 25 Jun. 2021
The outputs cross-check properly
format long g
syms B1
f_1 = (6314642578216891*log(-35316/(B1 - 35316)))/536870912 == 300000 % With *10
f_1 = 
f_2 = (5051714062573513*log(-35316/(B1 - 35316)))/4294967296 == 300000 % Without *10
f_2 = 
f1_sol = solve(f_1)
f1_sol = 
f2_sol = solve(f_2)
f2_sol = 
double(f1_sol)
ans =
889.379424789019
subs(f_1, B1, f1_sol)
ans = 
lhs(ans)-rhs(ans)
ans = 
0
double(f2_sol)
ans =
7950.69092580946
subs(f_2, B1, f2_sol)
ans = 
lhs(ans)-rhs(ans)
ans = 
0

Weitere Antworten (0)

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by