Extrapolation polynomiale de degrés 4

JKHELIF

XLDnaute Nouveau
Bonjour , je souhaiterai de réaliser une extrapolation d'un valeur pour une température à 650°C à partir d'une équation polynomiale de degré 4, malheureusement la commande tandence et prevision fonction uniquement pour les degrés 1 , pourriez vous me débloquer le problème ?

Vous trouverez ci-joint le fichier en excel
 

Pièces jointes

  • extrapolation polynomiale de la limite élastique.xlsx
    17.8 KB · Affichages: 11

Dudu2

XLDnaute Barbatruc
Ouf ! On progresse à regarder ce que proposent les autres !
A ce stade, j'ai renoncé. C'est des trucs de statisticiens et/ou mathématiciens un peu trop poussés pour mon grand âge
1665517329508.gif
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Re, et à @JKHELIF

Du coup j'ai creusé dans les aides sur TENDANCE() et ... ça marche aussi, ouais je progresse !
@JKHELIF tu dis :
la commande TANDANCE et PREVISION s'applique uniquement pour les extrapolation linéaires ?
Ca veut dire pour un degré 1 mais à partir de degrés 2 ces deux commandes ne fonctionnent pas.
Mais comme avec la fonction DROITEREG() on peut faire une régression polynomiale de degré n avec TENDANCE() :
avec en C22 la formule suivante pour un degré 4 :
Code:
=TENDANCE($B$2:$B$21;$A$2:$A$21^{1.2.3.4};A22^{1.2.3.4})
  • $B$2:$B$21 les y connus,
  • $A$2:$A$21^{1.2.3.4} les x connus élevés au puissances 1, 2, 3, 4 (renvoie 4 colonnes)
  • A22^{1.2.3.4} les nouveaux x élevés aux puissances 1, 2, 3, 4 (renvoie 4 colonnes)
Telle qu'elle est là (un seul nouvel x : A22) la formule n'a pas à être saisie sous forme matricielle

Les résultats renvoyés sont exactement les mêmes que ceux renvoyer avec la méthode DROITEREG (avec degré 4) préconisée par @sylvanu

Il n'en reste pas moins vrai que cette approche n'est pas sûre vue le peu de données connues.
Donc si le résultat n'est pas celui attendu, il faut tenter une autre approche (celle de @Dranreb peut-être)

Voir la pièce jointe
Amicalement
Alain
 

Pièces jointes

  • extrapolation polynomiale de la limite élastique d°4.xlsx
    22 KB · Affichages: 3
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
J'ai déjà vu ces formes d'écriture des fonctions DROITEREG et TENDANCE, mais je n'ai jamais compris comment ça marchait, et l'aide n'est pas trop explicite à mon gout.
Est-ce que ça signifie que si les argument [x_connus] et [x_nouveaux] ont plusieurs colonnes (par préalable calcul ou non d'expressions matricielles) il cherche en fait une somme de leurs produits par les coefficients appropriés qu'il calcule d'après les x_connus ?
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour @sylvanu
Pourquoi parlez vous de [x_connus] et [x_nouveaux], dans Droitereg MS donne
C'est pour la fonction TENDANCE qui comporte la même possibilité. (Post#17)
Extrait de l'aide :
Vous pouvez utiliser la fonction TENDANCE pour faire l’ajustement polynômial d’une courbe en calculant la régression par rapport à une même variable élevée à différentes puissances. Par exemple, supposons qu’une colonne A contienne des valeurs y et une colonne B, des valeurs x. Vous pouvez entrer x^2 en colonne C, x^3 en colonne D et ainsi de suite, puis calculer la régression des colonnes B à D par rapport à la colonne A.
Amicalement
Alain
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Okkkay !
J'ai enfin compris TENDANCE, et c'était bien ce que je disais au #18.
Et ça gâche pratiquement toute utilité à une fonction perso SolEqu que j'avais, et que j'ai mise dans le classeur.
Encore que … Là il faut quand même poser les termes si c'est autre chose que des puissances de x, tandis qu'on peut l'éviter par des fonctions perso qui l'utilisent. Je ne me vois toujours pas me passer de mon module MConiques par exemple …
 

Pièces jointes

  • SolEquEstMort.xlsm
    37.2 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Du coup je me demande s'il n'y aurait pas quand même un moyen d'éviter ce VBA trop simple :
VB:
Option Explicit
Function RecetteMat(ParamArray TPA()) As Variant()
   Dim TVals(): TVals = TPA
   CalcRecMat RecetteMat, TVals
   End Function
Sub CalcRecMat(TR(), TVals())
   Dim L&, C&
   ReDim TR(1 To UBound(TVals(0),1), 1 To UBound(TVals) + 1)
   For C = 1 To UBound(TR, 2)
      For L = 1 To UBound(TR, 1): TR(L, C) = TVals(C - 1)(L, 1): Next L
      Next C
   End Sub
L'expression RecetteMat(B2:B11;B2:B11^2) ça va, c'est la même chose que B2:B11^{1.2}
Mais pour RecetteMat(COS(B2:B11);SIN(B2:B11)) ? Quelqu'un connaîtrait-il un moyen de l'exprimer sans cette Fonction perso RecetteMat ?
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir @Dranreb, bonsoir à toutes & à tous
Mais pour RecetteMat(COS(B2:B11);SIN(B2:B11)) ? Quelqu'un connaîtrait-il un moyen de l'exprimer sans cette Fonction perso RecetteMat ?
Avec Evaluate ou [ ] :

tb = Evaluate("Cos(B2:B11)*{1,0}+Sin(B2:B11)*{0,1}")
On peut générer la chaîne de caractères à partir de variable du style​
Plage="B1:B11"​
Formule = "Cos(" & plage & ")*{1,0}+Sin(" & Plage &")*{0,1}"​
tb = evaluate(formule)​
Ce que l'on ne peut pas faire si on utilise les crochets [ ]
tb=[Cos(B2:B11)*{1,0}+Sin(B2:B11)*{0,1}]

Et Voilà ! (du moins je crois car je n'ai pas vraiment pris le temps d'analyser tes 2 procédures)
Amicalement
Alain
 

Dranreb

XLDnaute Barbatruc
Eh non, ça ne va pas car bien qu'elle les prenne dans un seul des arguments à lui spécifier, la fonction TENDANCE veut attribuer des coefficients différents au cosinus et au sinus.
Voir mon classeur joint au #22. Je voudrais savoir si on peut éviter les deux colonnes de termes en COS et en SIN comme on peut éviter des puissances successives de X pour les polynômes par l'expression X^{1.2}
Ah, attends, je n'avais pas tout vu peut être …
Ouais, ça pourrait peut être bien marcher, ça.
Le séparateur de colonnes c'est un point chez moi, la virgule n'est utilisé que comme séparateur décimal.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Elle produit le même tableau de valeur à deux colonne que la référence aux deux colonnes C$3:$D$30 mais sans avoir besoin de les avoir dans des cellules.
Il y a de l'idée dans ta proposition.
On pourrait peut être aussi faire CHOOSE({1.2};COS(B2:B11);SIN(B2:B11))
je confirme: En C10:D19 validé par Ctrl+Maj+Entrée :
Code:
=CHOISIR({1.2};COS(B10:B19);SIN(B10:B19))
fonctionne et devrait donc aussi pouvoir être spécifié en argument de TENDANCE !

Oui, en '[SolEquEstMort.xlsm]Feuil1'!F3:F43 mais validé par Ctrl+Maj+Entrée (pourquoi ?) :
Code:
=TENDANCE($B$3:$B$30;CHOISIR({1.2};COS($A$3:$A$30);SIN($A$3:$A$30));CHOISIR({1.2};COS($A3);SIN($A3)))
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oh, pardon j'ai oublié de répondre.
Je ne vois qu'une explication: la formule n'a pas été validée en matriciel sur l'ensemble de la plage, c'est à dire à la fois toutes les lignes et les deux colonnes. Ce n'est pas possible autrement car la fonction RecetteMat renvoie bien un tableau d'autant de colonnes que d'arguments spécifiés, chacun de ceux ci étant un tableau d'une seule colonne et du nombre de lignes impliqué par l'expression matricielle spécifiée. Mais comme dit, je ne vais probablement plus en avoir besoin puisque CHOISIR({1.2….n}; suivi des n expressions matricielles verticales semble être une solution générale pour exprimer la même chose.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 185
dernier inscrit
salhit