solve function give a wrong solution
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Adriano
am 23 Jul. 2020
Beantwortet: John D'Errico
am 23 Jul. 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!
Akzeptierte Antwort
Vladimir Sovkov
am 23 Jul. 2020
Bearbeitet: Vladimir Sovkov
am 23 Jul. 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.
Weitere Antworten (1)
John D'Errico
am 23 Jul. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Particle & Nuclear Physics finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!