Constructing cubic spline interpolation polynomials

  • Thread starter Thread starter bremenfallturm
  • Start date Start date
  • Tags Tags
    Cubic Interpolation
Click For Summary
SUMMARY

This discussion focuses on constructing cubic spline interpolation polynomials using three points. The polynomials are defined as ##p_1(x)=c_1x^3+c_2x^2+c_3x+c_4## for the interval ##x\in [-5,-4]## and ##p_2(x)=c_5x^3+c_6x^2+c_7x+c_8## for ##x\in [-4,-3]##. The user encountered issues with their calculations, specifically in setting up the equations for continuity and derivatives at the joining point. The solution was ultimately found by correcting a minor arithmetic error in the matrix input used for solving the system.

PREREQUISITES
  • Cubic spline interpolation concepts
  • Matrix algebra for solving systems of equations
  • Understanding of derivatives and continuity conditions
  • Familiarity with Mathematica for matrix calculations
NEXT STEPS
  • Learn about cubic spline interpolation techniques in detail
  • Explore the use of Mathematica for numerical solutions
  • Study cubic Bezier curves and their properties
  • Investigate common pitfalls in polynomial interpolation
USEFUL FOR

Mathematicians, data scientists, and engineers involved in numerical analysis and curve fitting will benefit from this discussion.

bremenfallturm
Messages
81
Reaction score
13
Homework Statement
Given the following points:
(-5,1.561), (-4,2) and (-3, 2.56).
Construct cubic spline interpolation polynomials between them.
Relevant Equations
General equations for a third-degree / cubic polynomial:
##y=ax^3+bx^2+cx+d##
##\frac{dy}{dx}=3ax^2+2bx+c##
##\frac{d^2y}{dx^2}=6ax+2b##
My attempt at a solution: We have three points, hence we will have two polynomials ##p_1(x)## for ##x\in [-5,-4]## and ##p_2(x)## for ##x\in [-4,-3]##. Define: ##p_1(x)=c_1x^3+c_2x^2+c_3x+c_4## and ##p_2(x)=c_5x^3+c_6x^2+c_7x+c_8## where the ##c_n## stuff are coefficients for the polynomial.

I came up with the following equations:
  1. For ##p_1##, it must pass through the first two points:
    1. ##1,5610=c_1(-5)^3+c_2(-5)^2+c_3(-5)+c_4##
    2. ##2=c_1(-4)^3+c_2(-4)^2+c_3(-4)+c_4##
  2. For ##p_2##, it must pass through the middle point and the last point:
    1. ##2=c_5(-4)^3+c_6(-4)^2+c_7(-4)+c_8##
    2. ##2,56=c_1(-3)^3+c_2(-3)^2+c_3(-3)+c_8##
  3. 1st and 2nd order derivatives of the polynomials should be equal at the middle point, i.e. ##(-4,2)##
    1. ##3\cdot (-4^2)c_1+2\dot(-4)c_2+c_3-3\cdot (-4^2)c_5-2\cdot (-4)c_6-c_7=0##
    2. ##6c_1\cdot (-4)+2c_2-6c_5\cdot (-4)-2c_6=0##
  4. Finally I make the decision that the 2nd derivatives should be equal to 0 at the endpoints.
    1. ##6c_1\cdot (-5)+2c_2=0##
    2. ##6c_5\cdot (-3)+2_6 =0##
I turned all equations into matrix form and plugged it into an online matrix calculator. The matrix form is this:
1721069081633.png

The matrix calculator gave me the following solutions:
1721069140654.png

If I try to plot it, it looks *almost* right but it's certainly not what I expected.
I assume it's a calculation problem, maybe it's even trival but I can not find it.
The plots look like below by the way, and you can find them using this link.
1721069233425.png

Many thanks for help!
 
Physics news on Phys.org
bremenfallturm said:
Many thanks for help!
Check your arithmetic.
Here's the 8x8 matrix I get in Mathematica using your method of solution:
1721080804473.png

Using this to solve your system results in the cubic-spline plot:
1721081424709.png

This looks correct to me.
 
  • Like
Likes   Reactions: bremenfallturm and FactChecker
Why not start with the acutal expression for a cubic bezier curve with control points \mathbf{x}_i, \mathbf{x}(t) = (1-t)^3\mathbf{x}_0 + 3(1-t)^2 \mathbf{x}_1 + 3(1-t)t\mathbf{x_2} + t^3\mathbf{x}_3 which has the properties that \mathbf{x}(0) = \mathbf{x}_0, \mathbf{x}(1) = \mathbf{x}_3, \mathbf{x}'(0) = 3(\mathbf{x}_1 - \mathbf{x}_0) and \mathbf{x}'(1) = 3(\mathbf{x}_3 - \mathbf{x}_2). Fitting two of these to the curve in question gives you eight unknowns; fixing the end points immediately determines four of them. Continuity of the derivative gives you a fifth equation. For the other three, we have only three points so we should fit them with a quadratic. The conditions therefore are that the coefficients of t^3 each vanish and the coefficients of t^2 are equal.
 
renormalize said:
Check your arithmetic.
Here's the 8x8 matrix I get in Mathematica using your method of solution:
View attachment 348354
Using this to solve your system results in the cubic-spline plot:
View attachment 348355
This looks correct to me.
Haha what I silly mistake I made, I forgot a parenthesis when feeding the equations into the matrix calculator. All worked out now, thank you!
 
  • Like
Likes   Reactions: renormalize
pasmith said:
Why not start with the acutal expression for a cubic bezier curve with control points \mathbf{x}_i, \mathbf{x}(t) = (1-t)^3\mathbf{x}_0 + 3(1-t)^2 \mathbf{x}_1 + 3(1-t)t\mathbf{x_2} + t^3\mathbf{x}_3 which has the properties that \mathbf{x}(0) = \mathbf{x}_0, \mathbf{x}(1) = \mathbf{x}_3, \mathbf{x}'(0) = 3(\mathbf{x}_1 - \mathbf{x}_0) and \mathbf{x}'(1) = 3(\mathbf{x}_3 - \mathbf{x}_2). Fitting two of these to the curve in question gives you eight unknowns; fixing the end points immediately determines four of them. Continuity of the derivative gives you a fifth equation. For the other three, we have only three points so we should fit them with a quadratic. The conditions therefore are that the coefficients of t^3 each vanish and the coefficients of t^2 are equal.
The reason I didn't start with that is because I didn't learn about it yet 😁 I am currently looking into more math regarding curve fitting so hopefully I will get there soon:)
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
Replies
12
Views
4K
Replies
8
Views
1K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
1K