- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm aware that this question is close to that being asked in: https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/815604
I'm using an older version of MKL, version 11.0.5, and I am having problems with the use of the Akima cubic spline that I can't find any concrete answer for in the documentation.
I'm using a combination of boundary conditions on the spline, depending on the case, of either a fixed value to the 1st or 2nd derivative at the left and right edge (both left and right BC are always defined). I don't define any internal conditions, and I use a non-uniform partition for the x breakpoints.
The problem I am encountering is that if there is <= 4 breakpoints, the dfdConstruct1D method will fail with the error 'Error: the number of breakpoints is invalid (code -1004).' At the moment, the code will enforce a linear interpolation of there are <= 2 breakpoints which I understood to be the minimum.
However, I can't seem to find anywhere in the documentation that the minimum number of breakpoints required for each cubic spline method is defined.
Can someone clarify what the minimum number of breakpoints required is for each of the methods, and how the BC's and/or IC's change this behaviour?
Thanks,
Ewan
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Ewan,
Construction of Akima spline requires at least 5 breakpoints as defined in “A New Method of Interpolation and Smooth Curve Fitting Based on Local Procedures” by Hiroshi Akima (Journal of the Association for Computing Machinery, Vol.17, No.4, October 1970 pp. 589-602), paragraph 2: The slope of the curve at each given point is determined locally by the coordinates of five points. For this reason, the library reports unsuccessful status code when number of breakpoints <= 4.
We will update Intel MKL Data Fitting documentation in one of future releases to make this information clear for all types of splines.
Thanks,
Alina
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Alina,
Is there any chance you could post the minimum number of breakpoints required for each type of spline here?
I am struggling to figure out which types can be used in different scenarios. For example, the natural cubic spline I have used in the past works with only 2 breakpoints, but in the MKL version the natural spline seems to require 3?
Thanks,
Ewan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Ewan,
Here you can find minimal numbers of breakpoints for the different types of cubic splines:
Cubic Default 3 breakpoints
Cubic Natural 2 breakpoints (in case of not-a-knot boundary conditions: 3 breakpoints)
Cubic Hermite 3 breakpoints
Cubic Bessel 4 breakpoints
Cubic Akima 5 breakpoints
Cubic Hyman 4 breakpoints
As I mentioned before we will update Intel MKL Data Fitting documentation in the future releases.
Thank you for bringing this question, feel free to ask more.
Best regards,
Alina
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Alina,
If you are updating the documentation, it might be a good idea to change the include line from 'mkl.h' to 'mkl_df.h' within the Data FItting manual section. There only seems to be one place in the manual where it mentions that this is the minimum required include to get access to the DF functionality, at the start of chapter 15. For each and every description of the DF routines the required include section only mentions 'mkl.h' which is a bit misleading.
In many cases, incuding 'mkl.h' can result in a lot of linking conflicts if you are using an alternative library for some other numerical calculations (e.g LAPACK, BLAS, etc.).
Thanks,
Ewan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>> In many cases, including 'mkl.h' can result in a lot of linking conflicts if you are using an alternative library for some other numerical calculations (e.g LAPACK, BLAS, etc.).
Actually mkl.h includes all mkl's header files including mkl_df.h also. What kind of linking conflict do you see? Could you show more details and examples?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Gennady,
I think you've misunderstood my point.
To get access to the Data Fitting routines the minimum include is mkl_df.h. There is no need to include the entirety of the MKL library by including mkl.h.
In my particular case, if I include mkl.h it causes a lot of linking conflicts as I include other numerical libraries elsewhere in my code that are redefined in MKL.
It's a little misleading to suggest in the manual that you need to include mkl.h when actually mkl_df.h is more than sufficient to access the DF routines.
Ewan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Elizarova, Alina (Intel) wrote:Hi Ewan,
Here you can find minimal numbers of breakpoints for the different types of cubic splines:
Cubic Default 3 breakpoints
Cubic Natural 2 breakpoints (in case of not-a-knot boundary conditions: 3 breakpoints)
Cubic Hermite 3 breakpoints
Cubic Bessel 4 breakpoints
Cubic Akima 5 breakpoints
Cubic Hyman 4 breakpointsAs I mentioned before we will update Intel MKL Data Fitting documentation in the future releases.
Thank you for bringing this question, feel free to ask more.
Best regards,
Alina
Hey,
I tried the provided example with MKL 'dfdhermitecubicspline.c' and I only changed the number of breakpoints from 7 to 3 but I get 'DF_ERROR_MEM_FAILURE' when calling dfdConstruct1D. It works with more than 3 breakpoints. Does the hermite interpolation only work with > 3 breakpoints?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
checked the problem with MKL 2020 and when the #breakppoins == 3
dfdhermitecubicspline.exe
Number of break points : 3
i x(i) y(i) y'(i)
0 +0.000000 +0.000000 +1.884956
1 +1.500000 +0.309017 -1.792699
2 +3.000000 -0.587785 +1.524961
Coefficients are calculated for a polynomial of the form:
Pi(x) = Ai + Bi*(x - x(i)) + Ci*(x - x(i))^2 + Di*(x - x(i))^3
where x(i) <= x < x(i+1)
Spline coefficients for Y:
i Ai Bi Ci Di P(x(i)) P(x(i+1)) P'(x(i)) P'(x(i+1))
0 +0.000000 +1.884956 -0.906119 -0.142118 +0.000000 +0.309017 +1.884956 -1.792699
1 +0.309017 -1.792699 +0.177889 +0.412444 +0.309017 -0.587785 -1.792699 +1.524961
i Sites Spline value
Computed Expected
0 +1.391320 +0.485773 +0.485773
1 +2.915025 -0.702936 -0.702936
2 +1.377971 +0.505020 +0.505020
3 +1.235440 +0.677742 +0.677742
4 +0.228633 +0.381899 +0.381899
5 +0.571236 +0.754588 +0.754588
6 +2.980018 -0.617449 -0.617449
7 +2.721153 -0.863813 -0.863813
8 +0.987973 +0.840779 +0.840779
9 +1.046622 +0.817321 +0.817321
10 +0.535681 +0.727875 +0.727875
11 +2.266246 -0.774634 -0.774634
12 +0.839760 +0.859756 +0.859756
13 +1.134457 +0.764735 +0.764735
14 +1.326985 +0.573649 +0.573649
Computed Hermite cubic spline coefficients, spline values are correct
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page