Salut tout le monde,
J'ai un curieux problème que je n'arrive pas à comprendre. J'ai 2 variables (disons Y et X) pour lesquelles je souhaite extraire la dérivée d'une fonction lisse reliant les deux. Je peux le faire "manuellement" si mes deux variables sont dans un tableau. J'ajuste simplement une spline lisse, enregistre la formule prédite, va dans l'éditeur de formule et utilise l'option dérivée dans l'éditeur lui-même. Maintenant, je veux faire la même chose, mais de manière automatisée, car j'aurai des dizaines de tels ajustements à faire, donc je suis revenu à l'utilisation de JSL. Autant que je sache, la seule façon d'y arriver en JSL est d'abord d'extraire les coefficients de spline comme
splcoef= Coefficient de spline (X, Y, 1 );
Dans l'exemple particulier où j'utilise cette matrice serait :
[0,5 0,997009092716414 0,00052834644305232 0 0,0000661345992050551,
1 0,997281532762841 0,000577947392456002 0,0000992018988076818 0,0000439565382573196,
1,5 0,997600801501053 0,000710116694956763 0,000165136706193727
-0,0000523992394403174,
2 0,99799059412015 0,000835953971570102 0,0000865378470331725 -0,0000897493429406088,
2,5 0,998418986899826 0,00085517981139797 -0,0000480861673778753
-0,0000494911432825247,
3 0,99882836887077 0,000769975286558009 -0,000122322882301737 -0,0000204292892022263,
3,5 0,999180222132323 0,000632330437354731 -0,000152966816105107
-0,0000100612562586075,
4 0,999456887989942 0,000471817679055371 -0,000168058700493033 0,0000251846412034386,
4,5 0,999653930234497 0,000322647459465303 -0,000130281738687837
0,0000199230550287456,
5 0,999785173911436 0,000207308012048703 -0,000100397156144689 0,0000256287090160626,
5,5 0,999866932217051 0,000126132387666307 -0,0000619540926205567
0,0000114058197541642,
6 0,999915935615199 0,00007273265986134 -0,0000448453629892932 0,0000100640302564247,
7 0,999953886942327 0,0000132340246520343 -0,0000146532722199889
0,0000064471411305935,
7,5 0,999957646529239 0,0000034161082800262 -0,000004982560524089
0,0000026947675920361,
8 0,999958445789198 0,0000004546234498223 -0,0000009404091360308
0,0000012459427765851,
8,5 0,999958593741486 0,000000448671396435 0,0000009285050288488
-0,0000002521994682104,
9 0,999959018678507 0,0000011880268241599 0,0000005502058265328
-0,0000001515710315195,
9,5 0,999959731296997 0,0000016245543768191 0,0000003228492792533
-0,0000002152328528353,
10 0,999960597382399 0 0 0]
Je peux trouver les valeurs prédites à partir de la spline comme :
predvalues = évaluation spline ( X,splcoef);
pour obtenir la dérivée, j'ai essayé d'utiliser :
dervalues=eval(derivative(spline eval(X, splcoef),X));
mais cela donne une valeur unique de zéro (0).
Cependant, si je remplace la référence matricielle splcoef par son contenu réel dans l'instruction spline eval, cela fonctionne bien !!
dervalues=eval(dérivé(spline eval(X,
[0,5 0,997009092716414 0,00052834644305232 0 0,0000661345992050551,
1 0,997281532762841 0,000577947392456002 0,0000992018988076818 0,0000439565382573196,
1,5 0,997600801501053 0,000710116694956763 0,000165136706193727
-0,0000523992394403174,
2 0,99799059412015 0,000835953971570102 0,0000865378470331725 -0,0000897493429406088,
2,5 0,998418986899826 0,00085517981139797 -0,0000480861673778753
-0,0000494911432825247,
3 0,99882836887077 0,000769975286558009 -0,000122322882301737 -0,0000204292892022263,
3,5 0,999180222132323 0,000632330437354731 -0,000152966816105107
-0,0000100612562586075,
4 0,999456887989942 0,000471817679055371 -0,000168058700493033 0,0000251846412034386,
4,5 0,999653930234497 0,000322647459465303 -0,000130281738687837
0,0000199230550287456,
5 0,999785173911436 0,000207308012048703 -0,000100397156144689 0,0000256287090160626,
5,5 0,999866932217051 0,000126132387666307 -0,0000619540926205567
0,0000114058197541642,
6 0,999915935615199 0,00007273265986134 -0,0000448453629892932 0,0000100640302564247,
7 0,999953886942327 0,0000132340246520343 -0,0000146532722199889
0,0000064471411305935,
7,5 0,999957646529239 0,0000034161082800262 -0,000004982560524089
0,0000026947675920361,
8 0,999958445789198 0,0000004546234498223 -0,0000009404091360308
0,0000012459427765851,
8,5 0,999958593741486 0,000000448671396435 0,0000009285050288488
-0,0000002521994682104,
9 0,999959018678507 0,0000011880268241599 0,0000005502058265328
-0,0000001515710315195,
9,5 0,999959731296997 0,0000016245543768191 0,0000003228492792533
-0,0000002152328528353,
10 0,999960597382399 0 0 0]
),X));
Tout ce que j'ai fait, c'est remplacer le nom de la matrice par son contenu. Cela ne semble pas être un comportement normal.
Des idées sur la façon de le faire fonctionner ??
Un grand merci, Yves P.