Rounding errors when using quadprog

1 Ansicht (letzte 30 Tage)
Willem Aarts
Willem Aarts am 22 Okt. 2021
Beantwortet: Matt J am 22 Okt. 2021
When using quadprog, my output vector consists of numbers between 0 and 1 (what I wanted), but the numbers that should be exactly 0 are displayed as below. Obviously, I want all those very small numbers to be exactly zero, is there a way to do this (besides using round)?
4.44933945790336e-17
4.43024857154471e-17
1.38794710581954e-16
9.76943947509898e-17
2.57912017416732e-17
1.12856039637895e-16
2.51735116865162e-16
3.04176974448411e-17
9.76031101698955e-17
8.82231674489508e-17
1.93623111616387e-17
4.92957780026237e-17
0.603568110306370
1.50690096511644e-17
1.08658472749935e-16
7.57132250704934e-17
2.66708857540784e-17
3.46149910955351e-17
4.60978724678206e-17
1.08662313490113e-16
3.42358702150843e-17
6.83050304959970e-17
3.19996471309376e-17
2.16907081538632e-17
3.86591323728191e-17
3.79905582515998e-17
0.396431889693630
7.91948069773015e-17
4.45074411271270e-17
1.62958265807977e-17
3.82178738490695e-17
6.29223776757741e-17
0.396431889693630
1.67754047209576e-17
9.29887909458497e-17
1.97404623930945e-16
3.21006025529018e-17
1.67710094162830e-17
6.66239520645662e-17
5.10705211487009e-17
6.60990290141418e-17
9.57923943544337e-17
1.63832398168987e-17
1.09271312617687e-16
9.86367617174531e-17
1.04778191828700e-17
1.63328769628357e-17
2.38964338862913e-17
3.31525936867943e-17
1.50611423756745e-17
1.63584208473992e-17
4.77231692759105e-18
1.71376002724474e-17
4.31323742881893e-17
0.396431889693627
1.66301917233621e-17
4.82083728961189e-17
0.396431889693630
0.603568110306370
2.10715955520674e-17
3.13644682835338e-17
3.14812533719443e-17
0.603568110306370
3.14554957117173e-17
2.13533177480005e-17
2.12752992135221e-17
2.22721447422380e-17
1.04619418830474e-16
2.06781467381881e-17
4.48010344135470e-17
3.22580040952438e-16
9.27628888218478e-17
2.72418435850740e-17
5.02352395116210e-16
1.76731781201018e-17
1.94510019414797e-17
1.95654458571480e-17
6.44635719788115e-17
0.396431889693627
8.87190649432377e-18
3.32600042326679e-15
1.43844728919083e-17
1.88259667380649e-17
0.603568110306370
9.09055592297213e-18
7.66497777615146e-17
2.09304785104558e-17
0.603568110306373
3.79279708304661e-17
1.59997709593021e-18

Antworten (1)

Matt J
Matt J am 22 Okt. 2021
There's nothing wrong with post-rounding, however setting lb(i)=ub(i)=0 for the appropriate variables should force them to an exact value of zero.
Of course, since you know the variables are zero, an even better approach would be to not include them in the list of unknowns in the first place. Possibly, quadprog will pre-process the problem this way for you when it sees that lb(i)=ub(i)=0, but I'm not completely sure.

Kategorien

Mehr zu Quadratic Programming and Cone Programming 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