solve function give a wrong solution
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Adriano
il 23 Lug 2020
Risposto: John D'Errico
il 23 Lug 2020
Hi all,
I'm trying to solve a simple equation in Matlab using solve function. The code is:
syms x
solv = solve( (1+x/12)^12 == 1.02)
The solution is 0.0204 however Matalb give me this solution:
solv =
- (6*50^(11/12)*51^(1/12))/25 - 12
(6*50^(11/12)*51^(1/12))/25 - 12
- (50^(11/12)*51^(1/12)*6i)/25 - 12
(50^(11/12)*51^(1/12)*6i)/25 - 12
- (6*50^(11/12)*51^(1/12)*(3^(1/2)/2 - 1i/2))/25 - 12
(6*50^(11/12)*51^(1/12)*(3^(1/2)/2 - 1i/2))/25 - 12
- (6*50^(11/12)*51^(1/12)*(3^(1/2)/2 + 1i/2))/25 - 12
(6*50^(11/12)*51^(1/12)*(3^(1/2)/2 + 1i/2))/25 - 12
- (6*50^(11/12)*51^(1/12)*((3^(1/2)*1i)/2 - 1/2))/25 - 12
(6*50^(11/12)*51^(1/12)*((3^(1/2)*1i)/2 - 1/2))/25 - 12
- (6*50^(11/12)*51^(1/12)*((3^(1/2)*1i)/2 + 1/2))/25 - 12
(6*50^(11/12)*51^(1/12)*((3^(1/2)*1i)/2 + 1/2))/25 - 12
>> round(solv)
ans =
-24
0
- 12 - 12i
- 12 + 12i
- 22 + 6i
- 2 - 6i
- 22 - 6i
- 2 + 6i
- 6 - 10i
- 18 + 10i
- 18 - 10i
- 6 + 10i
Why it happen? Someone can help me? Thanks!
Risposta accettata
Vladimir Sovkov
il 23 Lug 2020
Modificato: Vladimir Sovkov
il 23 Lug 2020
syms x
solv = double(solve( (1+x/12)^12 == 1.02))
There are many solutions. The one you are interested in is rather 0.0198189756230421 but not 0.0204.
Più risposte (1)
John D'Errico
il 23 Lug 2020
Just an addendum, though the answer by @Vladimir Sovkov is correct.
Using round to convert those results is wrong. Instead use either double or vpa to do so, depending on whether you want a symbolic or double precision answer. Thus we see:
digits 20
>> vpa(solv)
ans =
-24.019818975623042098
0.019818975623042097611
- 12.0 - 12.019818975623042098i
- 12.0 + 12.019818975623042098i
- 22.40946858177980274 + 6.0099094878115210488i
- 1.5905314182201972597 - 6.0099094878115210488i
- 22.40946858177980274 - 6.0099094878115210488i
- 1.5905314182201972597 + 6.0099094878115210488i
- 5.9900905121884789512 - 10.40946858177980274i
- 18.009909487811521049 + 10.40946858177980274i
- 18.009909487811521049 - 10.40946858177980274i
- 5.9900905121884789512 + 10.40946858177980274i
The second solution is apparently the one you wanted, as has already been shown.
0 Commenti
Vedere anche
Categorie
Scopri di più su Particle & Nuclear Physics in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!