Will not solution like this be sooo much slower than simple loops?! Short yes, efficient no.
well, I think I was wrong...This solution is slower if the degree of the polynomial is small but much faster if the degree gets higher...solving polynomials of high degree is really slow with ROOTS.
Test | Status | Code Input and Output |
---|---|---|
1 | Pass |
x0y0 = [-2 5];
P = [0.5 3 -5];
y_correct = 4.3093988461280149175163000679048;
tol = 5e-13;
assert(abs(distance2polynomial(P,x0y0)-y_correct) < tol)
|
2 | Pass |
x0y0 = [pi, pi];
P = [10];
y_correct = 6.8584073464102067615373566167205;
tol = 7e-13;
assert(abs(distance2polynomial(P,x0y0)-y_correct) < tol)
|
3 | Pass |
x0y0 = [0.25,50];
P = [1 2 3 4 5];
y_correct = 1.6470039192886012020234097061626;
tol = 5e-13;
assert(abs(distance2polynomial(P,x0y0)-y_correct) < tol)
|
4 | Pass |
x0y0 = [-3 -3];
P = [-2 1];
y_correct = 4.4721359549995793928183473374626;
tol = 5e-13;
assert(abs(distance2polynomial(P,x0y0)-y_correct) < tol)
|
5 | Pass |
x0y0 = [0 5];
P = [1 0 1];
y_correct = 1.9364916731037084425896326998912;
tol = 2e-13;
assert(abs(distance2polynomial(P,x0y0)-y_correct) < tol)
|
6 | Pass |
x0y0 = [-2 -5];
P = [0.5 3 -5];
y_correct = 1.8901381949770695260066523338279;
tol = 2e-13;
(abs(distance2polynomial(P,x0y0)-y_correct) < tol)
ans =
logical
1
|
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!