Re: Getting scipy.interpolate.pchip_interpolate to return the first derivative of a pchip interpolation

Samuel Dupree <[email protected]> Mon, 23 Jan 2023 18:07:57 -0500
Newsgroups gmane.comp.python.scientific.user
Organization XayDeltaOne
Message-ID <[email protected]>
VGhhbmsgeW91IGZvciBhbGwgdGhlIHJlc3BvbnNlcywgaG93ZXZlciBteSBxdWVzdGlvbiBzdGls
bCByZW1haW5zOiBob3cgDQpkb2VzIHBjaGlwX2ludGVycG9sYXRlIGtub3cgdGhlIGlkZW50aXR5
IG9mIHRoZSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlZCANCnRoZSBkYXRhIGFuZCB0aGUgZmlyc3Qg
ZGVyaXZhdGl2ZSB0byBiZSBpbnRlcnBvbGF0ZWQ/IEl0IGNhbid0IGJlY2F1c2UgDQphbGwgcGNo
aXBfaW50ZXJwb2xhdGUgZ2V0cyBpcyBhIGxpc3Qgb2YgbnVtYmVycy4gVGhlIGlkZW50aXR5IG9m
IHRoZSANCmZ1bmN0aW9ucyBhcmUgbm90IHBhc3NlZCB0byBpdCB1bmxlc3MgdGhlcmUgaXMgYSB3
YXkgcGNoaXBfaW50ZXJwb2xhdGUgDQprbm93cy4NCg0KU2FtIER1cHJlZS4NCg0KDQpPbiAxLzIz
LzIzIDE0OjM1LCBzY2lweS11c2VyLXJlcXVlc3RAcHl0aG9uLm9yZyB3cm90ZToNCj4gU2VuZCBT
Y2lQeS1Vc2VyIG1haWxpbmcgbGlzdCBzdWJtaXNzaW9ucyB0bw0KPiAJc2NpcHktdXNlckBweXRo
b24ub3JnDQo+DQo+IFRvIHN1YnNjcmliZSBvciB1bnN1YnNjcmliZSB2aWEgdGhlIFdvcmxkIFdp
ZGUgV2ViLCB2aXNpdA0KPiAJaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbjMvbGlzdHMv
c2NpcHktdXNlci5weXRob24ub3JnLw0KPiBvciwgdmlhIGVtYWlsLCBzZW5kIGEgbWVzc2FnZSB3
aXRoIHN1YmplY3Qgb3IgYm9keSAnaGVscCcgdG8NCj4gCXNjaXB5LXVzZXItcmVxdWVzdEBweXRo
b24ub3JnDQo+DQo+IFlvdSBjYW4gcmVhY2ggdGhlIHBlcnNvbiBtYW5hZ2luZyB0aGUgbGlzdCBh
dA0KPiAJc2NpcHktdXNlci1vd25lckBweXRob24ub3JnDQo+DQo+IFdoZW4gcmVwbHlpbmcsIHBs
ZWFzZSBlZGl0IHlvdXIgU3ViamVjdCBsaW5lIHNvIGl0IGlzIG1vcmUgc3BlY2lmaWMNCj4gdGhh
biAiUmU6IENvbnRlbnRzIG9mIFNjaVB5LVVzZXIgZGlnZXN0Li4uIg0KPg0KPiBUb2RheSdzIFRv
cGljczoNCj4NCj4gICAgIDEuIFJlOiBTY2lQeS1Vc2VyIERpZ2VzdCwgVm9sIDIzMSwgSXNzdWUg
MSAoU2FtdWVsIER1cHJlZSkNCj4gICAgIDIuIFJlOiBTY2lQeS1Vc2VyIERpZ2VzdCwgVm9sIDIz
MSwgSXNzdWUgMSAoRXZnZW5pIEJ1cm92c2tpKQ0KPiAgICAgMy4gUmU6IFNjaVB5LVVzZXIgRGln
ZXN0LCBWb2wgMjMxLCBJc3N1ZSAxIChSdXN0eSBHZW50aWxlKQ0KPg0KPg0KPiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQo+DQo+IE1lc3NhZ2U6IDENCj4gRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMzoyNTo1MCAt
MDUwMA0KPiBGcm9tOiBTYW11ZWwgRHVwcmVlIDxzZHVwcmVlQHNwZWFrZWFzeS5uZXQ+DQo+IFN1
YmplY3Q6IFtTY2lQeS1Vc2VyXSBSZTogU2NpUHktVXNlciBEaWdlc3QsIFZvbCAyMzEsIElzc3Vl
IDENCj4gVG86IHNjaXB5LXVzZXJAcHl0aG9uLm9yZywgc2NpcHktdXNlci1yZXF1ZXN0QHB5dGhv
bi5vcmcNCj4gTWVzc2FnZS1JRDogPGVmYmYzNzUwLWY3ZDMtNTQ2OS0xOTc4LTgxODhiZWZhZTE1
MEBzcGVha2Vhc3kubmV0Pg0KPiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRG
LTg7IGZvcm1hdD1mbG93ZWQNCj4NCj4gVGhlIHByb2JsZW0gSSBoYXZlIGlzIGlmIHRoZSBpbnRl
cnBvbGF0b3Igb25seSBzZWVzIG51bWJlcnMuIFVubGVzcw0KPiB0aGVyZSBpcyBzb21lIHVuZGVy
Y292ZXIgbWVhbnMgYnkgd2hpY2ggdGhlIGludGVycG9sYXRvciBzZWVzIHRoZQ0KPiBmdW5jdGlv
biB1c2VkIHRvIGdlbmVyYXRlIHRoZSBudW1iZXJzIHBhc3NlZCB0byBpdCwgaG93IGRvZXMgaXQg
a25vdyB0aGUNCj4gY29udmVyc2lvbiBmYWN0b3IgaXMgdXNlZCBhcmd1bWVudCB0byB0aGUgc2lu
ZSBmdW5jdGlvbj8gRnVydGhlcm1vcmUsIElmDQo+IEkgd2VyZSB0byByZXdyaXRlIHRoZSBwcm9n
cmFtIGFzIGZvbGxvd3MsIEkgc3RpbGwgZ2V0IHRoZSBzYW1lIHJlc3VsdHMuDQo+DQo+DQo+DQo+
IGltcG9ydCBudW1weSBhcyBucA0KPiBpbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0DQo+
IGZyb20gc2NpcHkuaW50ZXJwb2xhdGUgaW1wb3J0IHBjaGlwX2ludGVycG9sYXRlDQo+DQo+IHhf
b2JzZXJ2ZWTCoMKgwqAgPSBucC5saW5zcGFjZSgwLjAsIDM2MC4wLCAxMDApDQo+IHh4X29ic2Vy
dmVkwqDCoCA9IG5wLnBpKnhfb2JzZXJ2ZWQvMTgwDQo+DQo+IHlfb2JzZXJ2ZWTCoMKgwqAgPSBu
cC5zaW4oeHhfb2JzZXJ2ZWQpDQo+IGR5ZHhfb2JzZXJ2ZWQgPSBucC5jb3MoeHhfb2JzZXJ2ZWQp
DQo+DQo+IHjCoMKgwqAgPSBucC5saW5zcGFjZShtaW4oeF9vYnNlcnZlZCksIG1heCh4X29ic2Vy
dmVkKSwgbnVtPTEwMCkNCj4gecKgwqDCoCA9IHBjaGlwX2ludGVycG9sYXRlKHhfb2JzZXJ2ZWQs
IHlfb2JzZXJ2ZWQsIHgsIGRlcj0wLCBheGlzPTApDQo+IGR5ZHggPSBwY2hpcF9pbnRlcnBvbGF0
ZSh4X29ic2VydmVkLCB5X29ic2VydmVkLCB4LCBkZXI9MSwgYXhpcz0wKQ0KPg0KPg0KPiBuZGlt
ID0gbGVuKCBkeWR4ICkNCj4gcHJpbnQoKQ0KPiBmb3IgaSBpbiByYW5nZSgwLG5kaW0pOg0KPiAg
IMKgwqDCoMKgIHByaW50KCBkeWR4X29ic2VydmVkW2ldLCAiwqAgIiwgZHlkeFtpXSApDQo+DQo+
DQo+IHBsdC5wbG90KHhfb2JzZXJ2ZWQswqDCoMKgIHlfb2JzZXJ2ZWQsICJibyIgLCBsYWJlbD0i
b2JzZXJ2YXRpb24gZnVuY3QiKQ0KPiBwbHQucGxvdCh4X29ic2VydmVkLCBkeWR4X29ic2VydmVk
LCAicngiICwgbGFiZWw9Im9ic2VydmF0aW9uIGRlcml2IikNCj4NCj4gcGx0LnBsb3QoeMKgwqDC
oMKgwqDCoMKgwqAgLCB5wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAsICJjLSIsIGxhYmVsPSJwY2hp
cCBpbnRlcnBvbGF0aW9uIGZ1bmN0IikNCj4gcGx0LnBsb3QoeMKgwqDCoMKgwqDCoMKgwqAgLCBk
eWR4wqDCoMKgwqDCoMKgwqDCoCAsICJrLSIsIGxhYmVsPSJwY2hpcCBpbnRlcnBvbGF0aW9uIGRl
cml2IikNCj4gcGx0LmxlZ2VuZCgpDQo+IHBsdC5ncmlkKCkNCj4gcGx0LnNhdmVmaWcoInBjaGlw
X2V4YW1wbGVfMDEucG5nIikNCj4gcGx0LnNob3coKQ0KPg0KPg0KPiBBbnkgdGhvdWdodHM/DQo+
DQo+IFNhbSBEdXByZWUuDQo+DQo+DQp7c25pcF0NCj4NCj4gX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gU2NpUHktVXNlciBtYWlsaW5nIGxpc3QgLS0g
c2NpcHktdXNlckBweXRob24ub3JnDQo+IFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8g
c2NpcHktdXNlci1sZWF2ZUBweXRob24ub3JnDQo+IGh0dHBzOi8vbWFpbC5weXRob24ub3JnL21h
aWxtYW4zL2xpc3RzL3NjaXB5LXVzZXIucHl0aG9uLm9yZy8NCj4NCj4NCj4gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQo+DQo+IEVuZCBvZiBTY2lQeS1Vc2VyIERpZ2VzdCwgVm9sIDIz
MSwgSXNzdWUgMg0KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
Cj4NCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KU2Np
UHktVXNlciBtYWlsaW5nIGxpc3QgLS0gc2NpcHktdXNlckBweXRob24ub3JnClRvIHVuc3Vic2Ny
aWJlIHNlbmQgYW4gZW1haWwgdG8gc2NpcHktdXNlci1sZWF2ZUBweXRob24ub3JnCmh0dHBzOi8v
bWFpbC5weXRob24ub3JnL21haWxtYW4zL2xpc3RzL3NjaXB5LXVzZXIucHl0aG9uLm9yZy8KTWVt
YmVyIGFkZHJlc3M6IGdjcHN1LXNjaXB5LXVzZXJAbS5nbWFuZS1teC5vcmcK