bobd Le 16/04/2003 à 15:18 Je suis en train de chercher à faire un prog sur 89 pour faire des régressions de la forme y=a*x. Ce prog utiliserait des données déjà rentrées dans un tableau.
On donne au programme le nom de la variable dans laquelle est stockée le tableau, les colonnes x, y et il fait le reste.
Pour ça j'ai besoin d'utiliser des sommes, pour faire la somme de toute une colonne. Ca commence comme ça : Sum(#f[x][i],i,1,n), où n est le numéro de la dernière ligne utilisable. Le problème en fait c'est de trouver n pour savoir où s'arrêter parce que il y a "error dimension" quand on tombe sur une case vide...
bobd Le 16/04/2003 à 21:57 Les données sont dans un tableau de type data. Et cette fonction renvoie la longueur d'une chaine de caractère, je me trompe ? Qu'est ce qu'il faut mettre comme argument ?
alors, un fichier Data en en fait une liste de liste. Donc dim(Data[numListe]).

Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.
bobd Le 17/04/2003 à 22:40 Oui merci en fait c'est bon j'ai trouvé... le prog marche correctement.
Alors maintenant j'ai 2 autres questions (qui sont peut être aussi dans le manuel, pourtant j'ai cherché...) :
-pour le même prog que ci-dessus, on peut exporter l'équation dans les fonctions graphiques de y1 à y9. L'instruction que j'utilise c'est "a*x->y1(x)"
Or je voudrais que, quand on va dans "y=", l'affichage soit [valeur numérique de a]*x et non a*x (ce qui me permettrait d'en stocker plusieurs et de supprimer la variable a à la fin du prog).
-pour un autre prog, qui pourrait effectuer des régressions de la forme voulue à un coeffecient, il faut que je trouve le minimum d'une fonction sur un intervalle. J'arrive à le faire dans le mode graph mais je ne retrouve pas la fonction ailleur, est-ce qu'elle existe et sinon comment puis-je faire ?
bobd Le 19/04/2003 à 10:42 oui excusez moi encore mais pour fMin c'était dans le manuel, c'est bon. Sinon merci, j'essaye ça tout de suite.
A part ça j'ai des problèmes avec le deuxième programme ; le code c'est :
()
Prgm
DelVar a
Dialog
Request "fichier",d
Request "f(x)=",f
Request "nombre de points",n
Request "x...",x
Request "y...",y
EndDlog
expr(f)»f(x)
expr(n)»n
expr(x)»x
expr(y)»y
Sum((#d[y][i]-f(#d[x][i]))^2,i,1,n)»g(a)
fMin(g(x),x)»a
expr(mid(string(a),3))»a
Dialog
Title string(f)
Text "a="&string(a)
EndDlog
EndPrgm
Ce qui est censé trouver le a (le coefficient cherché) par la méthode des moindres carrés. Le prog me met error : index out of range dans la définition de g(a). Je vais chercher mais pour l'instant je n'ai pas vu d'où ça pouvais venir.
Petite précision : f(x) est une fonction contenant le coefficient a, d'où la définition de
g(a)...
je suis pas sur que cette ligne soit valide :
Sum((#d[y][i]-f(#d[x][i]))^2,i,1,n)»g(a)

Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.
bobd Le 20/04/2003 à 12:11 Oui c'est d'ailleur celle là qui pose problème. En langage un peu plus mathématique c'est ça : Sum((yi-f(xi))^2,i,1,n)->g(a) cette somme dépend bien de a car f(x) dépend de a. Mais ça pour le faire comprendre à la calcu...
si f(xi) dépend de a ça devrait plutôt être f(xi,a) alors nan?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
bobd Le 20/04/2003 à 19:34 en fait non, c'est l'expression de f(x) qui dépend de a. f(x) est une fonction à variable unique mais dont l'expression contient un coefficient à ajuster. Je ne sais pas si ça pourrait revenir au même.
En tout cas... ça marche !!!!! il ne me reste qu'à le tester avec des fonctions exponentielles.
Et la ligne en question était bien valide, ce sont les variables utilisées qui n'étaient pas claires... Maintenant donc tout va bien, je vous tiens au courant des tests...
bobd Le 20/04/2003 à 23:15 Alors petit bémol : le programme ne marche pas pour toutes les fonctions. Cette limitation vient des limites du calcul de minimum...
par exemple une régression d'équation y=exp(a*x) ne marche pas...
bobd Le 21/04/2003 à 19:58 J'ai un problème et je n'ai pas trouvé la réponse dans le manuel. C'est avec ce petit programme :
reg001(f(x),d,cx,cy)
Func
dim(#d[g])->n
Sum(expr(mid(string(solve(f((#d[cx])[i])=(#d[cy])[i],a)),3)),i,1,n)/n->coeff
Return coeff
EndFunc
pour le lancer, je lui met : reg001(exp(a*x),"xxx",1,3) et il me met comme erreur : argument must be a variable name. Ca doit être tout con mais là je ne vois pas...
Sinon j'ai trouvé une méthode moins précise mais qui marche tout le temps (je n'ai pas trouvé une forme d'équation où ça ne marchait pas), et je cherche pour un calcul de coefficient de régression (il se calcule mais les résultats ne sont pas toujours crédibles).
c pasque le liste xxx n'as pas été définis.

Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.
bobd Le 22/04/2003 à 12:46 justement si ! xxx est une variable de type data...
bobd Le 23/04/2003 à 18:16 C'est à la fin de la première ligne...
Si c la première ligne, il n'y a pas trop le choix. C la var #g qui va pas. Hors comme g contient "xxx", c donc la var xxx qui est pas définis.

Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.
bobd Le 24/04/2003 à 22:39 à voui non pardon en fait c'est que j'avais renommé cx en g (craignant un conflit avec les variables système), puis voyant que ça ne changeait rien, je l'ai repassé en cx et j'ai oublié de changé celle là...
Mais le problème était déjà là avant donc ça ne doit pas être ça...
Zeph Le 24/04/2003 à 23:54 Vérifie quand même, à tout hazard ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
bobd Le 25/04/2003 à 12:33 euh, voui attend : en fait je l'avais supprimé et là ce p**** de graphlink buggue encore donc comme je pars en vacances et que je ne reviens que jeudi prochain, je te donnerais la réponse jeudi...
bobd Le 25/04/2003 à 16:33 En fait graphlink c'est mis à remarcher plus vite que d'habitude donc en fait voilà : le problème ne venait pas de là, j'ai tout remis avec cx et cy et le problème persiste
Zeph Le 25/04/2003 à 16:51 La source telle que tu l'as postée devrait marcher. Tu peux envoyer le bout de programme qui pose problème ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Zeph Le 25/04/2003 à 20:43 c'est bien ce que j'essaie de t'expliquer... à priori si il est sur que c'est pas xxx, bah y'a peu de chances pour que ça le soit. vaut mieux chercher ailleurs.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)