Condition sur f'(x) pour une interpolation par spline cubiqu

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 26 Nov 2013, 15:26

Un exemple d'utilisation de GSL : http://www.gnu.org/software/gsl/manual/gsl-ref.html#Linear-Algebra-Examples

Après en cherchant un peu tu dois trouver comment spécifier que ta matrice est creuse.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21543
Enregistré le: 11 Nov 2009, 22:53

par Ben314 » 26 Nov 2013, 19:21

Sinon, un truc qui me vient à l'esprit (mais a mon avis dans la pratique, vu la vitesse et la mémoire des machines actuelles, c'est loin d'être clair qu'on y gagne), c'est qu'en fait tes , ils se calculent par récurence linéaire d'ordre 2, c'est à dire que si on pose , il existe une matrice 2x2 et un vecteur (tout deux dépendant de vu que tu est dans un cas non uniformément réparti) telle que .
Quelque soit le vecteur de départ choisi, en procédant de cette façon pour calculer les , ils vérifierons toutes tes équations sauf les deux dernières qui ne seront bonne que si le est "le bon".
Sauf que, sauf erreur, le tout doit se ramener à un bète système 2x2 où la matrice est le produit des matrice et se calculer assez simplement en fonction des et des (dans la même boucle que celle qui calcule le produit des )

Mais je le redit, "concrètement parlant", je suis pas sûr du tout que ce soit interessant si le nombre de points que tu as est moyennement important, donc ce que je racconte n'a d'intérêt que si la méthode "normale" de résolution du gros système semble poser des problèmes (de mémoire ou de vitesse)


Edit : ce n'est effectivement pas la peine de se fair c... avec des matrices 2x2 : la fonction "gsl_linalg_solve_cyc_tridiag" de la bibliothèque proposée par sylviel correspond trés exactement aux cas dans lequel tu est...
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

coqp-ox
Membre Naturel
Messages: 52
Enregistré le: 22 Nov 2013, 10:00

par coqp-ox » 27 Nov 2013, 09:48

L'algorithme ou le programme doit être exécutable par un robot dont la mémoire est assez restreinte (32points maximum seulement) et qui possède surement des capacités de calcul relativement "faible" par rapport aux appareils actuels alors peut-être que ta méthode est judicieuse pour résoudre le système.

Je vais me pencher sur ces bibliothèques pour essayer de comprendre comment elles fonctionnent, merci de vos indications!

Edit : Après de nouvelles recherches je ne suis toujours pas capable de comprendre le fonctionnement de ces librairies, d'autant plus qu'il s'avère que cette résolution de système ne représente qu'une partie de l'algorithme nécessaire.
Actuellement, dlz se penche sur mon problème mais si vous connaissez quelqu'un du forum qui s'y connait aussi en C je ne crache pas sur son aide!

Merci a vous!

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 27 Nov 2013, 16:04

Il semble bien que notre ami confonde "recherche d'une courbe de régression" avec "lissage de courbe".
Dans le premier cas, soit on connait en gros le phénomène, donc la fonction qui le décrit le mieux possible, soit on le connait mal et on adopte, par intuition et essais, une fonction que l'on trouve suffisamment satisfaisante. Aucun des points n'appartiendra strictement à la fonction adoptée et la méthode de calcul utilisée est celle des moindres carrés.
Dans le second cas, la préoccupation principale est le lissage, c'est à dire un aspect visuel. En ce cas, la courbe tracée, qu'on appelle spline, passe obligatoirement par tous les points connus, qu'on utilise ou non la technique des points de contrôle. C'est dans ce cas que je préfère les arcs de parabole.

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 27 Nov 2013, 16:28

Il a parlé d'interpoler des points, pas de rechercher une courbe de regression si je ne m'abuse... Et l'interpolation n'as pas pour intérêt unique l'aspect visuel. La principale différence entre les deux c'est de savoir si oui ou non les points fournis pour construire la courbe sont fiables (i.e si la courbe finale doit ou non passer absolument par ces points).

Si c'est le cas alors les splines (qui sont des polynomes par morceaux) sont l'une des méthodes les plus courantes.
Elles peuvent être de degré 1 (on fait juste une ligne brisée), 2 (arc de parabole, on peut rendre
la fonction C^1 et fixer la dérivée à 1 bord) ou 3 (spline cubique, on peut rendre la fonction C² et fixer les dérivées aux 2 bords).

On peut aussi utiliser les splines pour une regression (et non une interpolation) mais cela demande
un peu plus de travail exemple : chapitre 7 de ce livre .
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 27 Nov 2013, 18:46

@ Sylviel,
Je te dois des excuses, je viens de lire la définition (Wiki) du terme "interpolation". Très clairement il y est dit que c'est l'opération qui consiste à trouver une ligne, une courbe ou une fonction, étant donnés un certain nombre de points connus.

Pour moi, le sens était plus restrictif et pourrait se décrire ainsi "étant donné une certaine définition (ligne, surface ou je ne sais quoi) trouver la coordonnée manquante pour un élément, tel que cet élément appartient à cette définition.
Exemple très simple, on a un segment connu en X,Y,Z, un point sur ce segment, quel est son Z. Plus compliqué : un triangle (XYZ) quel est le Z pour un point appartenant à ce triangle. Dans ce dernier cas, il est nécessaire de considérer que le point appartient au plan défini par les sommets du triangle.
Un peu plus compliqué, l'interpolation bi-linéaire, au lieu d'avoir un triangle, on a un quadrilatère.
Dans le cas (apparemment celui du présent sujet) la "définition" servant de base au calcul de l'interpolation est soit une fonction par morceaux si on admet que les points connus sont exacts, et c'est dans ce cas que je préfère des arcs de parabole, soit une fonction résultant d'un calcul préalable, type régression.
Aurais-je oublié d'autres cas ou d'autres possibilités ?

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

par leon1789 » 27 Nov 2013, 23:24

Dlzlogic a écrit:Rien de tel qu'un test numérique.
A vous la main.

oui, rien de tel qu'un test...

Mais quand on te montre un petit bout de code qui te contredit, tu n'accuses même pas réception de l'information... cf ici par exemple http://www.maths-forum.com/showthread.php?p=982259#post982259

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 27 Nov 2013, 23:43

leon1789 a écrit:oui, rien de tel qu'un test...

Mais quand on te montre un petit bout de code qui te contredit, tu n'accuses même pas réception de l'information... cf ici par exemple http://www.maths-forum.com/showthread.php?p=982259#post982259
Bon, j'ai bien-sûr regardé, j'ai eu une page blanche.
Je viens de recommencer, c'est pareil.
Disons que, pour ne pas envenimer la discussion, j'ai pas régi.
Bon, j'accepte tout ce que tu veux, FE aussi, que voulez-vous que j'y fasse ?
S'il te plait, fin de discussion, d'ailleurs, tu as bien explique que j'étais pas crédible (on appelle ça de la diffamation), FE a confirmé que j'étais un incompétent sénile, alors tout va bien.
Couche-couche-dodo.
Petit sursaut d’honnête de ma part, pour les débutants en informatique : il ne faut pas tester l'égalité de deux flottants avec le signe '==', sauf si on l'a initialisé comme tel.

coqp-ox
Membre Naturel
Messages: 52
Enregistré le: 22 Nov 2013, 10:00

par coqp-ox » 28 Nov 2013, 10:26

Merci à tous pour votre aide. Je bascule sur un nouveau sujet dans le forum informatique pour trouver l'algorithme qui pourrait "entre autres" réaliser la résolution de ce système.

Bonne journée!

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 28 Nov 2013, 10:48

Je reviens sur la discussion spline d'ordre 2 ou 3.

Je connais précisément un certain nombre de point d'une courbe que je sais régulière.

Splines d'ordre 1 (affine par morceau):
je n'aurais que la continuité, on verra donc des cassures de courbes

Splines d'ordre 2 (arc de paraboles):
Je peux avoir la différentiabilité. En revanche la continuité et la continuité de la dérivée
vont laisser 1 paramètre (pour l'ensemble de la spline) libre, qu'il faut déterminer par une condition au bord par exemple, typiquement une condition sur la dérivée (ou la dérivée seconde) à l'un des deux bords : lequel choisir ?

Splines d'ordre 3:
J'ai la régularité C² (a priori pas très différente de la régularité C1 en termes d'information exterieure sur la courbe à représenter). En plus des valeurs aux points et des équations d'égalité de dérivée et de dérivée seconde, j'ai 2 paramètres libre qui sont fixé par une équation à chaque bord (traitement symétrique des extrêmités).

Cela me semble être un bon argument pour utiliser une spline d'ordre 3 plutôt que 2 : ne pas faire de différence entre l'extrêmité gauche et l'extrimité droite en pouvant imposer de chaque côté la dérivée (ou la dérivée seconde).
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 29 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite