Confusing myself with Cox de boor's algorithm
$begingroup$
I am using the recursive definition to understand the algorithm, mainly:
$$ B_{i,0}(t) = begin{cases}
1 & text{if} & t_i leq t < t_{i+1} \
0 & text{otherwise}
end{cases}\
B_{i,p}(t) = frac{t-t_i}{t_{i+p} - t_i}B_{i,p-1}(t)+frac{t_{i+1}-t}{t_{i+p}-t_i}B_{i+1, p-1}(t)
$$
Now my intuition/expectation is that a degree 1 (p=1) B-spline is nothing but a bunch of straight lines put together. In other words I expect the evaluation of a degree one section on the B-spline to be a linear interpolation of the 2 values. Mathematically I expect something equivalent to:
$B_{i,1}(t) = (1-t')cdot c_i + t'cdot c_{i+1}$ for some $t'=kcdot t - c$
However I am not getting that at all.
If I simply do symbole replacement:
$B_{i,1}(t) = frac{t-t_i}{t_{i+1} - t_i}B_{i,0}(t)+frac{t_{i+1}-t}{t_{i+1}-t_i}B_{i+1, 0}(t)$
Which means that exactly one and only one of the two terms in the sum may be non-zero and the other one must be 0.
Which is not a linear interpolation.
So either my intuition is completely broken, in which case I want to be explained why, or my understanding of the recursive formula is wrong and I would like to be explained what the problem is.
EDIT: I understand what my issue is now, I wrote the definition slightly wrong, making it closer to a Lagrange polynomial than a B-spline polynomial.
calculus geometry polynomials curves spline
$endgroup$
add a comment |
$begingroup$
I am using the recursive definition to understand the algorithm, mainly:
$$ B_{i,0}(t) = begin{cases}
1 & text{if} & t_i leq t < t_{i+1} \
0 & text{otherwise}
end{cases}\
B_{i,p}(t) = frac{t-t_i}{t_{i+p} - t_i}B_{i,p-1}(t)+frac{t_{i+1}-t}{t_{i+p}-t_i}B_{i+1, p-1}(t)
$$
Now my intuition/expectation is that a degree 1 (p=1) B-spline is nothing but a bunch of straight lines put together. In other words I expect the evaluation of a degree one section on the B-spline to be a linear interpolation of the 2 values. Mathematically I expect something equivalent to:
$B_{i,1}(t) = (1-t')cdot c_i + t'cdot c_{i+1}$ for some $t'=kcdot t - c$
However I am not getting that at all.
If I simply do symbole replacement:
$B_{i,1}(t) = frac{t-t_i}{t_{i+1} - t_i}B_{i,0}(t)+frac{t_{i+1}-t}{t_{i+1}-t_i}B_{i+1, 0}(t)$
Which means that exactly one and only one of the two terms in the sum may be non-zero and the other one must be 0.
Which is not a linear interpolation.
So either my intuition is completely broken, in which case I want to be explained why, or my understanding of the recursive formula is wrong and I would like to be explained what the problem is.
EDIT: I understand what my issue is now, I wrote the definition slightly wrong, making it closer to a Lagrange polynomial than a B-spline polynomial.
calculus geometry polynomials curves spline
$endgroup$
add a comment |
$begingroup$
I am using the recursive definition to understand the algorithm, mainly:
$$ B_{i,0}(t) = begin{cases}
1 & text{if} & t_i leq t < t_{i+1} \
0 & text{otherwise}
end{cases}\
B_{i,p}(t) = frac{t-t_i}{t_{i+p} - t_i}B_{i,p-1}(t)+frac{t_{i+1}-t}{t_{i+p}-t_i}B_{i+1, p-1}(t)
$$
Now my intuition/expectation is that a degree 1 (p=1) B-spline is nothing but a bunch of straight lines put together. In other words I expect the evaluation of a degree one section on the B-spline to be a linear interpolation of the 2 values. Mathematically I expect something equivalent to:
$B_{i,1}(t) = (1-t')cdot c_i + t'cdot c_{i+1}$ for some $t'=kcdot t - c$
However I am not getting that at all.
If I simply do symbole replacement:
$B_{i,1}(t) = frac{t-t_i}{t_{i+1} - t_i}B_{i,0}(t)+frac{t_{i+1}-t}{t_{i+1}-t_i}B_{i+1, 0}(t)$
Which means that exactly one and only one of the two terms in the sum may be non-zero and the other one must be 0.
Which is not a linear interpolation.
So either my intuition is completely broken, in which case I want to be explained why, or my understanding of the recursive formula is wrong and I would like to be explained what the problem is.
EDIT: I understand what my issue is now, I wrote the definition slightly wrong, making it closer to a Lagrange polynomial than a B-spline polynomial.
calculus geometry polynomials curves spline
$endgroup$
I am using the recursive definition to understand the algorithm, mainly:
$$ B_{i,0}(t) = begin{cases}
1 & text{if} & t_i leq t < t_{i+1} \
0 & text{otherwise}
end{cases}\
B_{i,p}(t) = frac{t-t_i}{t_{i+p} - t_i}B_{i,p-1}(t)+frac{t_{i+1}-t}{t_{i+p}-t_i}B_{i+1, p-1}(t)
$$
Now my intuition/expectation is that a degree 1 (p=1) B-spline is nothing but a bunch of straight lines put together. In other words I expect the evaluation of a degree one section on the B-spline to be a linear interpolation of the 2 values. Mathematically I expect something equivalent to:
$B_{i,1}(t) = (1-t')cdot c_i + t'cdot c_{i+1}$ for some $t'=kcdot t - c$
However I am not getting that at all.
If I simply do symbole replacement:
$B_{i,1}(t) = frac{t-t_i}{t_{i+1} - t_i}B_{i,0}(t)+frac{t_{i+1}-t}{t_{i+1}-t_i}B_{i+1, 0}(t)$
Which means that exactly one and only one of the two terms in the sum may be non-zero and the other one must be 0.
Which is not a linear interpolation.
So either my intuition is completely broken, in which case I want to be explained why, or my understanding of the recursive formula is wrong and I would like to be explained what the problem is.
EDIT: I understand what my issue is now, I wrote the definition slightly wrong, making it closer to a Lagrange polynomial than a B-spline polynomial.
calculus geometry polynomials curves spline
calculus geometry polynomials curves spline
edited Dec 8 '18 at 18:51
Makogan
asked Dec 8 '18 at 1:19
MakoganMakogan
761217
761217
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Intuitively the formula transitions between 2 successive basis functions of the previous degree extending the support by one knot. The continuity order increments unless duplicate knots are encountered, but I don't think that fact is intuitive from the recurrence relation. See Theorem 3.19 for a proof.
Note that the denominators can be zero, though only if $B_{i(+1),p-1}$ is zero, so you get a $0/0$ expression. These expression can sensibly be replaced by $0$, because if you adjust the knots and $t$ slightly (less than some $delta>0$) to avoid the zero-division, then the $0/0$ expression will remain closer to zero than any $varepsilon>0$ whenever $delta$ is chosen sufficiently small. You need the theory of generalized functions (distributions) or divided differences to make a definition where the zero-division doesn't appear.
For the first order B-spline you should use half-open intervals e.g. $$B_{i,0}(t)=begin{cases} 1 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}$$ such that the basis functions sum to 1 when evaluated at the knots. In fact there is the more precise formula $$B_{i,0}(t) = begin{cases} 1/2 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}+ begin{cases} 1/2 & t_i< tleq t_{i+1} \ 0 & text{else}end{cases}$$ which is necessary to make the inner product formula from On Calculating with B-Splines II work. When using this definition for evaluation, you will get the arithmetic mean of the right and left limit at the points of discontinuity (exactly like the limit of the fourier series).
You anticipate the basis functions to be like $ (1-t)cdot c_i + tcdot c_{i+1}$ and $ (1-t)cdot c_{i+1} + tcdot c_{i+2}$, etc... But then $c_i$ would only be the start/end-points of the line segments if the basis coefficients were all equal to one. The terms you have included are kind of right, but you must gather them differently for the $c_i$s to factor.
The degree 1 B-Spline basis coefficients are the start/end-points $c_i$. The basis function gives you the weights for a particular $c_i$. The weights are something like $t$ in the first knot interval and $1-t$ in the next. Hence if you want to adjust one of the start/end-points, you just change the coefficient while the basis functions remain unchanged.
$endgroup$
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3030589%2fconfusing-myself-with-cox-de-boors-algorithm%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Intuitively the formula transitions between 2 successive basis functions of the previous degree extending the support by one knot. The continuity order increments unless duplicate knots are encountered, but I don't think that fact is intuitive from the recurrence relation. See Theorem 3.19 for a proof.
Note that the denominators can be zero, though only if $B_{i(+1),p-1}$ is zero, so you get a $0/0$ expression. These expression can sensibly be replaced by $0$, because if you adjust the knots and $t$ slightly (less than some $delta>0$) to avoid the zero-division, then the $0/0$ expression will remain closer to zero than any $varepsilon>0$ whenever $delta$ is chosen sufficiently small. You need the theory of generalized functions (distributions) or divided differences to make a definition where the zero-division doesn't appear.
For the first order B-spline you should use half-open intervals e.g. $$B_{i,0}(t)=begin{cases} 1 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}$$ such that the basis functions sum to 1 when evaluated at the knots. In fact there is the more precise formula $$B_{i,0}(t) = begin{cases} 1/2 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}+ begin{cases} 1/2 & t_i< tleq t_{i+1} \ 0 & text{else}end{cases}$$ which is necessary to make the inner product formula from On Calculating with B-Splines II work. When using this definition for evaluation, you will get the arithmetic mean of the right and left limit at the points of discontinuity (exactly like the limit of the fourier series).
You anticipate the basis functions to be like $ (1-t)cdot c_i + tcdot c_{i+1}$ and $ (1-t)cdot c_{i+1} + tcdot c_{i+2}$, etc... But then $c_i$ would only be the start/end-points of the line segments if the basis coefficients were all equal to one. The terms you have included are kind of right, but you must gather them differently for the $c_i$s to factor.
The degree 1 B-Spline basis coefficients are the start/end-points $c_i$. The basis function gives you the weights for a particular $c_i$. The weights are something like $t$ in the first knot interval and $1-t$ in the next. Hence if you want to adjust one of the start/end-points, you just change the coefficient while the basis functions remain unchanged.
$endgroup$
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
add a comment |
$begingroup$
Intuitively the formula transitions between 2 successive basis functions of the previous degree extending the support by one knot. The continuity order increments unless duplicate knots are encountered, but I don't think that fact is intuitive from the recurrence relation. See Theorem 3.19 for a proof.
Note that the denominators can be zero, though only if $B_{i(+1),p-1}$ is zero, so you get a $0/0$ expression. These expression can sensibly be replaced by $0$, because if you adjust the knots and $t$ slightly (less than some $delta>0$) to avoid the zero-division, then the $0/0$ expression will remain closer to zero than any $varepsilon>0$ whenever $delta$ is chosen sufficiently small. You need the theory of generalized functions (distributions) or divided differences to make a definition where the zero-division doesn't appear.
For the first order B-spline you should use half-open intervals e.g. $$B_{i,0}(t)=begin{cases} 1 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}$$ such that the basis functions sum to 1 when evaluated at the knots. In fact there is the more precise formula $$B_{i,0}(t) = begin{cases} 1/2 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}+ begin{cases} 1/2 & t_i< tleq t_{i+1} \ 0 & text{else}end{cases}$$ which is necessary to make the inner product formula from On Calculating with B-Splines II work. When using this definition for evaluation, you will get the arithmetic mean of the right and left limit at the points of discontinuity (exactly like the limit of the fourier series).
You anticipate the basis functions to be like $ (1-t)cdot c_i + tcdot c_{i+1}$ and $ (1-t)cdot c_{i+1} + tcdot c_{i+2}$, etc... But then $c_i$ would only be the start/end-points of the line segments if the basis coefficients were all equal to one. The terms you have included are kind of right, but you must gather them differently for the $c_i$s to factor.
The degree 1 B-Spline basis coefficients are the start/end-points $c_i$. The basis function gives you the weights for a particular $c_i$. The weights are something like $t$ in the first knot interval and $1-t$ in the next. Hence if you want to adjust one of the start/end-points, you just change the coefficient while the basis functions remain unchanged.
$endgroup$
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
add a comment |
$begingroup$
Intuitively the formula transitions between 2 successive basis functions of the previous degree extending the support by one knot. The continuity order increments unless duplicate knots are encountered, but I don't think that fact is intuitive from the recurrence relation. See Theorem 3.19 for a proof.
Note that the denominators can be zero, though only if $B_{i(+1),p-1}$ is zero, so you get a $0/0$ expression. These expression can sensibly be replaced by $0$, because if you adjust the knots and $t$ slightly (less than some $delta>0$) to avoid the zero-division, then the $0/0$ expression will remain closer to zero than any $varepsilon>0$ whenever $delta$ is chosen sufficiently small. You need the theory of generalized functions (distributions) or divided differences to make a definition where the zero-division doesn't appear.
For the first order B-spline you should use half-open intervals e.g. $$B_{i,0}(t)=begin{cases} 1 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}$$ such that the basis functions sum to 1 when evaluated at the knots. In fact there is the more precise formula $$B_{i,0}(t) = begin{cases} 1/2 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}+ begin{cases} 1/2 & t_i< tleq t_{i+1} \ 0 & text{else}end{cases}$$ which is necessary to make the inner product formula from On Calculating with B-Splines II work. When using this definition for evaluation, you will get the arithmetic mean of the right and left limit at the points of discontinuity (exactly like the limit of the fourier series).
You anticipate the basis functions to be like $ (1-t)cdot c_i + tcdot c_{i+1}$ and $ (1-t)cdot c_{i+1} + tcdot c_{i+2}$, etc... But then $c_i$ would only be the start/end-points of the line segments if the basis coefficients were all equal to one. The terms you have included are kind of right, but you must gather them differently for the $c_i$s to factor.
The degree 1 B-Spline basis coefficients are the start/end-points $c_i$. The basis function gives you the weights for a particular $c_i$. The weights are something like $t$ in the first knot interval and $1-t$ in the next. Hence if you want to adjust one of the start/end-points, you just change the coefficient while the basis functions remain unchanged.
$endgroup$
Intuitively the formula transitions between 2 successive basis functions of the previous degree extending the support by one knot. The continuity order increments unless duplicate knots are encountered, but I don't think that fact is intuitive from the recurrence relation. See Theorem 3.19 for a proof.
Note that the denominators can be zero, though only if $B_{i(+1),p-1}$ is zero, so you get a $0/0$ expression. These expression can sensibly be replaced by $0$, because if you adjust the knots and $t$ slightly (less than some $delta>0$) to avoid the zero-division, then the $0/0$ expression will remain closer to zero than any $varepsilon>0$ whenever $delta$ is chosen sufficiently small. You need the theory of generalized functions (distributions) or divided differences to make a definition where the zero-division doesn't appear.
For the first order B-spline you should use half-open intervals e.g. $$B_{i,0}(t)=begin{cases} 1 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}$$ such that the basis functions sum to 1 when evaluated at the knots. In fact there is the more precise formula $$B_{i,0}(t) = begin{cases} 1/2 & t_ileq t<t_{i+1} \ 0 & text{else}end{cases}+ begin{cases} 1/2 & t_i< tleq t_{i+1} \ 0 & text{else}end{cases}$$ which is necessary to make the inner product formula from On Calculating with B-Splines II work. When using this definition for evaluation, you will get the arithmetic mean of the right and left limit at the points of discontinuity (exactly like the limit of the fourier series).
You anticipate the basis functions to be like $ (1-t)cdot c_i + tcdot c_{i+1}$ and $ (1-t)cdot c_{i+1} + tcdot c_{i+2}$, etc... But then $c_i$ would only be the start/end-points of the line segments if the basis coefficients were all equal to one. The terms you have included are kind of right, but you must gather them differently for the $c_i$s to factor.
The degree 1 B-Spline basis coefficients are the start/end-points $c_i$. The basis function gives you the weights for a particular $c_i$. The weights are something like $t$ in the first knot interval and $1-t$ in the next. Hence if you want to adjust one of the start/end-points, you just change the coefficient while the basis functions remain unchanged.
edited Dec 9 '18 at 10:35
answered Dec 8 '18 at 9:46
MeMyselfIMeMyselfI
619319
619319
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
add a comment |
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
$begingroup$
None of this answers the question. Is an order 1 b-spline a sequence of straight segments? And if yes, why doesn;t the formula return that?
$endgroup$
– Makogan
Dec 8 '18 at 16:46
add a comment |
Thanks for contributing an answer to Mathematics Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3030589%2fconfusing-myself-with-cox-de-boors-algorithm%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown