J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Bonjour,
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Je dois écrire une fonction qui résoud cette équation avec un ensemble
de contraintes. (Ce solveur renvoie un objet opaque contenant les x[i]
et y, objet passé directement à d'autres fonctions de la
bibliothèque.)
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
Mon problème : sous quelle forme puis-je passer ces contraintes (ou
équations secondaires) à la fonction, de telle sorte que :
- le solveur soit assez rapide, et raisonnablement facile à
implémenter et à maintenir ;
- les appels à cette fonction soient relativement élégants et
faciles à lire, quel que soit le cas de figure ?
Mes quelques essais sont fonctionnels mais décevants : soit j'obtiens
un système trop rigide, soit chaque appel est une usine à gaz.
En gros, j'aimerais pouvoir écrire :
Résoudre ("y0 ; il existe un z tel que x[0]=1.5*z, x[1]=2.6*z, et
tous les autres x[i] sont égaux à z")
ou bien
Résoudre ("x[0]=4 ; x[1]=8")
Bonjour,
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Je dois écrire une fonction qui résoud cette équation avec un ensemble
de contraintes. (Ce solveur renvoie un objet opaque contenant les x[i]
et y, objet passé directement à d'autres fonctions de la
bibliothèque.)
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
Mon problème : sous quelle forme puis-je passer ces contraintes (ou
équations secondaires) à la fonction, de telle sorte que :
- le solveur soit assez rapide, et raisonnablement facile à
implémenter et à maintenir ;
- les appels à cette fonction soient relativement élégants et
faciles à lire, quel que soit le cas de figure ?
Mes quelques essais sont fonctionnels mais décevants : soit j'obtiens
un système trop rigide, soit chaque appel est une usine à gaz.
En gros, j'aimerais pouvoir écrire :
Résoudre ("y0 ; il existe un z tel que x[0]=1.5*z, x[1]=2.6*z, et
tous les autres x[i] sont égaux à z")
ou bien
Résoudre ("x[0]=4 ; x[1]=8")
Bonjour,
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Je dois écrire une fonction qui résoud cette équation avec un ensemble
de contraintes. (Ce solveur renvoie un objet opaque contenant les x[i]
et y, objet passé directement à d'autres fonctions de la
bibliothèque.)
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
Mon problème : sous quelle forme puis-je passer ces contraintes (ou
équations secondaires) à la fonction, de telle sorte que :
- le solveur soit assez rapide, et raisonnablement facile à
implémenter et à maintenir ;
- les appels à cette fonction soient relativement élégants et
faciles à lire, quel que soit le cas de figure ?
Mes quelques essais sont fonctionnels mais décevants : soit j'obtiens
un système trop rigide, soit chaque appel est une usine à gaz.
En gros, j'aimerais pouvoir écrire :
Résoudre ("y0 ; il existe un z tel que x[0]=1.5*z, x[1]=2.6*z, et
tous les autres x[i] sont égaux à z")
ou bien
Résoudre ("x[0]=4 ; x[1]=8")
mais
tu est sur que tu veux toujours exprimer le probleme dans une chaine de
caracteres ?
mais
tu est sur que tu veux toujours exprimer le probleme dans une chaine de
caracteres ?
mais
tu est sur que tu veux toujours exprimer le probleme dans une chaine de
caracteres ?
Ben, il me semble que la solution classique, c'est
une matrice.
Ben, il me semble que la solution classique, c'est
une matrice.
Ben, il me semble que la solution classique, c'est
une matrice.
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Là où je coince, c'est la définition d'une syntaxe agréable pour que
le code client puisse indiquer les contraintes.
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Là où je coince, c'est la définition d'une syntaxe agréable pour que
le code client puisse indiquer les contraintes.
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Là où je coince, c'est la définition d'une syntaxe agréable pour que
le code client puisse indiquer les contraintes.
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :Ben, il me semble que la solution classique, c'est
une matrice.
Note que la résolution en elle-même ne me pose pas vraiment de
problème.
Là où je coince, c'est la définition d'une syntaxe agréable pour que
le code client puisse indiquer les contraintes.
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Ben, il me semble que la solution classique, c'est
une matrice.
Note que la résolution en elle-même ne me pose pas vraiment de
problème.
Là où je coince, c'est la définition d'une syntaxe agréable pour que
le code client puisse indiquer les contraintes.
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :Ben, il me semble que la solution classique, c'est
une matrice.
Note que la résolution en elle-même ne me pose pas vraiment de
problème.
Là où je coince, c'est la définition d'une syntaxe agréable pour que
le code client puisse indiquer les contraintes.
Fabien LE LEZ wrote on 13/11/2006 16:17:On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Là où je coince, c'est la définition d'une syntaxe agréable pou r que
le code client puisse indiquer les contraintes.
là où je ne suis pas sur de comprendre est sur la définition d'une
*contrainte* ...
une équation à satisfaire je connais, une condition initiale ou une
règle d'inférence aussi, mais contrainte est ici très vague !
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
où x[0] = 42 est une condition initiale, elle fait que x0 n'est plus une
inconnue du système (soit on peux continuer à dire paramètre) mai s une
constante fixe
-- les opérandes à modéliser devront donc avoir un statut
'valeur indéfinie' (et le solveur devra la trouver) ou 'définie', mais
dans le même temps cette représentation est surfaite (vue de
l'extérieur) puisque c'est une cste.
x1 = 2 * x0, ça c'est une relation (donnant ici une autre valeur cste ),
s'agit-il de traduire cela en inférence ?
Fabien LE LEZ wrote on 13/11/2006 16:17:
On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Là où je coince, c'est la définition d'une syntaxe agréable pou r que
le code client puisse indiquer les contraintes.
là où je ne suis pas sur de comprendre est sur la définition d'une
*contrainte* ...
une équation à satisfaire je connais, une condition initiale ou une
règle d'inférence aussi, mais contrainte est ici très vague !
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
où x[0] = 42 est une condition initiale, elle fait que x0 n'est plus une
inconnue du système (soit on peux continuer à dire paramètre) mai s une
constante fixe
-- les opérandes à modéliser devront donc avoir un statut
'valeur indéfinie' (et le solveur devra la trouver) ou 'définie', mais
dans le même temps cette représentation est surfaite (vue de
l'extérieur) puisque c'est une cste.
x1 = 2 * x0, ça c'est une relation (donnant ici une autre valeur cste ),
s'agit-il de traduire cela en inférence ?
Fabien LE LEZ wrote on 13/11/2006 16:17:On Mon, 13 Nov 2006 08:23:57 +0000 (UTC), Marc Boyer :
Là où je coince, c'est la définition d'une syntaxe agréable pou r que
le code client puisse indiquer les contraintes.
là où je ne suis pas sur de comprendre est sur la définition d'une
*contrainte* ...
une équation à satisfaire je connais, une condition initiale ou une
règle d'inférence aussi, mais contrainte est ici très vague !
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Par exemple :
x[0] = 42
x[1] = 2*x[2]
x[3] = x[4]+10
y = 100
où x[0] = 42 est une condition initiale, elle fait que x0 n'est plus une
inconnue du système (soit on peux continuer à dire paramètre) mai s une
constante fixe
-- les opérandes à modéliser devront donc avoir un statut
'valeur indéfinie' (et le solveur devra la trouver) ou 'définie', mais
dans le même temps cette représentation est surfaite (vue de
l'extérieur) puisque c'est une cste.
x1 = 2 * x0, ça c'est une relation (donnant ici une autre valeur cste ),
s'agit-il de traduire cela en inférence ?
mais pour celà, il faudrait savoir
qui sont les utilisateurs.
mais pour celà, il faudrait savoir
qui sont les utilisateurs.
mais pour celà, il faudrait savoir
qui sont les utilisateurs.
une équation à satisfaire je connais, une condition initiale ou une
règle d'inférence aussi, mais contrainte est ici très vague !
C'est peut-être vague exprès, avec l'idée de laisser un maximum
de liberté à l'utilisateur. (Mais c'est sûr que ça ne facilite
ni la réalisation, ni même la définition d'une syntaxe pour
spécifier les contraintes.)
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
S'il a une équation « x[0] + x[1] + ... + x[n] = y », ou tous
les x et le y sont inconnu, il a bien un système à n+2 inconnus.
Pour avoir un système à n inconnus, il faudrait que l'expression
se lise « x[0] + x[1] + ... + x[n-2] = y ».
Je ne vois pas pourquoi une formulation du problème serait
moins valide que l'autre. La seule contrainte, c'est que
« dernière indice + 2 =nombre d'inconnus ».
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Je ne vois pas de rapport avec le C++ dans ce qu'il a écrit.
où x[0] = 42 est une condition initiale, elle fait que x0 n'est plus une
inconnue du système (soit on peux continuer à dire paramètre) mais une
constante fixe
Sauf qu'il a dit que c'est une contrainte. C'est sûr qu'une fois
toutes les contraintes précisées, et la solution trouvée, il ne
doit plus y avoir d'inconnues. Mais si l'utilisateur dit :
voici mon équation (std::vector<double> x, double y), et voici
mes contraintes (à définir -- c'était la question de Fabien, si
je ne me trompe pas), tout ce qui se trouve dans la deuxième
partie est une contrainte.
-- les opérandes à modéliser devront donc avoir un statut
'valeur indéfinie' (et le solveur devra la trouver) ou 'définie', mais
dans le même temps cette représentation est surfaite (vue de
l'extérieur) puisque c'est une cste.
x1 = 2 * x0, ça c'est une relation (donnant ici une autre valeur cste),
s'agit-il de traduire cela en inférence ?
Imposer une rélation, c'est bien une contrainte, non.
La véritable question, c'est la degrée de souplesse que veut
donner Fabien. Une solution à base des templates (basée sur des
idées développées par Todd Veldhuizen et David Vandevoorde, mais
plus anciennement, on se servait d'une technique semblable basée
sur des fonctions virtuelles) pourrait être très intéressants
dans le cas où les contraintes sont fixées déjà lors de la
compilation.
[] mais pour celà, il faudrait savoir
qui sont les utilisateurs.
[] bibliothèque dont ils se servent, une
solution à base des expressions templatées s'impose prèsque.
S'il s'agit des utilisateurs externes, en revanche, il lui faut
un parseur.)
une équation à satisfaire je connais, une condition initiale ou une
règle d'inférence aussi, mais contrainte est ici très vague !
C'est peut-être vague exprès, avec l'idée de laisser un maximum
de liberté à l'utilisateur. (Mais c'est sûr que ça ne facilite
ni la réalisation, ni même la définition d'une syntaxe pour
spécifier les contraintes.)
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
S'il a une équation « x[0] + x[1] + ... + x[n] = y », ou tous
les x et le y sont inconnu, il a bien un système à n+2 inconnus.
Pour avoir un système à n inconnus, il faudrait que l'expression
se lise « x[0] + x[1] + ... + x[n-2] = y ».
Je ne vois pas pourquoi une formulation du problème serait
moins valide que l'autre. La seule contrainte, c'est que
« dernière indice + 2 =nombre d'inconnus ».
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Je ne vois pas de rapport avec le C++ dans ce qu'il a écrit.
où x[0] = 42 est une condition initiale, elle fait que x0 n'est plus une
inconnue du système (soit on peux continuer à dire paramètre) mais une
constante fixe
Sauf qu'il a dit que c'est une contrainte. C'est sûr qu'une fois
toutes les contraintes précisées, et la solution trouvée, il ne
doit plus y avoir d'inconnues. Mais si l'utilisateur dit :
voici mon équation (std::vector<double> x, double y), et voici
mes contraintes (à définir -- c'était la question de Fabien, si
je ne me trompe pas), tout ce qui se trouve dans la deuxième
partie est une contrainte.
-- les opérandes à modéliser devront donc avoir un statut
'valeur indéfinie' (et le solveur devra la trouver) ou 'définie', mais
dans le même temps cette représentation est surfaite (vue de
l'extérieur) puisque c'est une cste.
x1 = 2 * x0, ça c'est une relation (donnant ici une autre valeur cste),
s'agit-il de traduire cela en inférence ?
Imposer une rélation, c'est bien une contrainte, non.
La véritable question, c'est la degrée de souplesse que veut
donner Fabien. Une solution à base des templates (basée sur des
idées développées par Todd Veldhuizen et David Vandevoorde, mais
plus anciennement, on se servait d'une technique semblable basée
sur des fonctions virtuelles) pourrait être très intéressants
dans le cas où les contraintes sont fixées déjà lors de la
compilation.
[] mais pour celà, il faudrait savoir
qui sont les utilisateurs.
[] bibliothèque dont ils se servent, une
solution à base des expressions templatées s'impose prèsque.
S'il s'agit des utilisateurs externes, en revanche, il lui faut
un parseur.)
une équation à satisfaire je connais, une condition initiale ou une
règle d'inférence aussi, mais contrainte est ici très vague !
C'est peut-être vague exprès, avec l'idée de laisser un maximum
de liberté à l'utilisateur. (Mais c'est sûr que ça ne facilite
ni la réalisation, ni même la définition d'une syntaxe pour
spécifier les contraintes.)
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
S'il a une équation « x[0] + x[1] + ... + x[n] = y », ou tous
les x et le y sont inconnu, il a bien un système à n+2 inconnus.
Pour avoir un système à n inconnus, il faudrait que l'expression
se lise « x[0] + x[1] + ... + x[n-2] = y ».
Je ne vois pas pourquoi une formulation du problème serait
moins valide que l'autre. La seule contrainte, c'est que
« dernière indice + 2 =nombre d'inconnus ».
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Je ne vois pas de rapport avec le C++ dans ce qu'il a écrit.
où x[0] = 42 est une condition initiale, elle fait que x0 n'est plus une
inconnue du système (soit on peux continuer à dire paramètre) mais une
constante fixe
Sauf qu'il a dit que c'est une contrainte. C'est sûr qu'une fois
toutes les contraintes précisées, et la solution trouvée, il ne
doit plus y avoir d'inconnues. Mais si l'utilisateur dit :
voici mon équation (std::vector<double> x, double y), et voici
mes contraintes (à définir -- c'était la question de Fabien, si
je ne me trompe pas), tout ce qui se trouve dans la deuxième
partie est une contrainte.
-- les opérandes à modéliser devront donc avoir un statut
'valeur indéfinie' (et le solveur devra la trouver) ou 'définie', mais
dans le même temps cette représentation est surfaite (vue de
l'extérieur) puisque c'est une cste.
x1 = 2 * x0, ça c'est une relation (donnant ici une autre valeur cste),
s'agit-il de traduire cela en inférence ?
Imposer une rélation, c'est bien une contrainte, non.
La véritable question, c'est la degrée de souplesse que veut
donner Fabien. Une solution à base des templates (basée sur des
idées développées par Todd Veldhuizen et David Vandevoorde, mais
plus anciennement, on se servait d'une technique semblable basée
sur des fonctions virtuelles) pourrait être très intéressants
dans le cas où les contraintes sont fixées déjà lors de la
compilation.
[] mais pour celà, il faudrait savoir
qui sont les utilisateurs.
[] bibliothèque dont ils se servent, une
solution à base des expressions templatées s'impose prèsque.
S'il s'agit des utilisateurs externes, en revanche, il lui faut
un parseur.)
James Kanze wrote on 15/11/2006 09:32:
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
S'il a une équation « x[0] + x[1] + ... + x[n] = y », ou tous
les x et le y sont inconnu, il a bien un système à n+2 inconnus.
non, je ne suis pas d'accord avec cette description!
il serait aussi inapproprié de dire système à (m - 3)
inconnues, où "par convention" (!) (m = nb de valeurs à
déterminer + on-sait-pas-combien).
pour descendre assez bas, si j'écris:
a . x + b = y
j'ai par convention (vrai ici) un système à 2 inconnues, pas 4!
'y' est le résultat de l'équation, pas inconnue, résultat.
'x' est la variable de l'équation, pas inconnue, variable.
Pour avoir un système à n inconnus, il faudrait que l'expression
se lise « x[0] + x[1] + ... + x[n-2] = y ».
re-non, un "syst. à /n/ variables" est une description mathématique,
ilse fout de ton /n/ vrai, et en particulier de ton n (variable max.
dans un code particulier); pose n' = n - 2 dans le texte initial et on
parle d'un syst. à n(') variables.
Je ne vois pas pourquoi une formulation du problème serait
moins valide que l'autre. La seule contrainte, c'est que
« dernière indice + 2 =nombre d'inconnus ».
je n'ai pas dit "moins valide" j'ai insinué "mal décrit".
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Je ne vois pas de rapport avec le C++ dans ce qu'il a écrit.
moi je le vois, l'écriture C++ montre n+1 variables 'x' indexées et un
y, résultat "n + 2" (écriture non descriptive, donc pénalisante et de
plus erronée, 'y' n'est pas une inconnue).
où x[0] = 42 est une condition initiale, elle fait que x0 n'est pl us une
inconnue du système (soit on peux continuer à dire paramètre) mais une
constante fixe
Sauf qu'il a dit que c'est une contrainte. C'est sûr qu'une fois
toutes les contraintes précisées, et la solution trouvée, il ne
doit plus y avoir d'inconnues. Mais si l'utilisateur dit :
voici mon équation (std::vector<double> x, double y), et voici
mes contraintes (à définir -- c'était la question de Fabien, si
je ne me trompe pas), tout ce qui se trouve dans la deuxième
partie est une contrainte.
si on s'en tient à cela, on peut dire amen; y-a-plus-qu'à traiter les
contraintes alors ...
La véritable question, c'est la degrée de souplesse que veut
donner Fabien. Une solution à base des templates (basée sur des
idées développées par Todd Veldhuizen et David Vandevoorde, mais
plus anciennement, on se servait d'une technique semblable basée
sur des fonctions virtuelles) pourrait être très intéressants
dans le cas où les contraintes sont fixées déjà lors de la
compilation.
je ne connais pas les idées auxquelles tu fais référence; mais, ma
compréhension est que des fonctions templates ne serviront qu'à écr ire
/une/ implémentation pour un code gérant différents types de donn ées
(entiers, complexes, matrices, ...) avec la même algorithmie.
[] bibliothèque dont ils se servent, une
solution à base des expressions templatées s'impose prèsque.
non, elle s'impose que s'il (doit) existe(r) différents type de donné es
pouvant être traitée de manière unique.
S'il s'agit des utilisateurs externes, en revanche, il lui
faut un parseur.)
l'idée qui me gêne ici et que "l'outil" cherché serait le
moyen d'écrire du script (et non du code!); il y a une nuance
entre les 2.
James Kanze wrote on 15/11/2006 09:32:
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
S'il a une équation « x[0] + x[1] + ... + x[n] = y », ou tous
les x et le y sont inconnu, il a bien un système à n+2 inconnus.
non, je ne suis pas d'accord avec cette description!
il serait aussi inapproprié de dire système à (m - 3)
inconnues, où "par convention" (!) (m = nb de valeurs à
déterminer + on-sait-pas-combien).
pour descendre assez bas, si j'écris:
a . x + b = y
j'ai par convention (vrai ici) un système à 2 inconnues, pas 4!
'y' est le résultat de l'équation, pas inconnue, résultat.
'x' est la variable de l'équation, pas inconnue, variable.
Pour avoir un système à n inconnus, il faudrait que l'expression
se lise « x[0] + x[1] + ... + x[n-2] = y ».
re-non, un "syst. à /n/ variables" est une description mathématique,
ilse fout de ton /n/ vrai, et en particulier de ton n (variable max.
dans un code particulier); pose n' = n - 2 dans le texte initial et on
parle d'un syst. à n(') variables.
Je ne vois pas pourquoi une formulation du problème serait
moins valide que l'autre. La seule contrainte, c'est que
« dernière indice + 2 =nombre d'inconnus ».
je n'ai pas dit "moins valide" j'ai insinué "mal décrit".
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Je ne vois pas de rapport avec le C++ dans ce qu'il a écrit.
moi je le vois, l'écriture C++ montre n+1 variables 'x' indexées et un
y, résultat "n + 2" (écriture non descriptive, donc pénalisante et de
plus erronée, 'y' n'est pas une inconnue).
où x[0] = 42 est une condition initiale, elle fait que x0 n'est pl us une
inconnue du système (soit on peux continuer à dire paramètre) mais une
constante fixe
Sauf qu'il a dit que c'est une contrainte. C'est sûr qu'une fois
toutes les contraintes précisées, et la solution trouvée, il ne
doit plus y avoir d'inconnues. Mais si l'utilisateur dit :
voici mon équation (std::vector<double> x, double y), et voici
mes contraintes (à définir -- c'était la question de Fabien, si
je ne me trompe pas), tout ce qui se trouve dans la deuxième
partie est une contrainte.
si on s'en tient à cela, on peut dire amen; y-a-plus-qu'à traiter les
contraintes alors ...
La véritable question, c'est la degrée de souplesse que veut
donner Fabien. Une solution à base des templates (basée sur des
idées développées par Todd Veldhuizen et David Vandevoorde, mais
plus anciennement, on se servait d'une technique semblable basée
sur des fonctions virtuelles) pourrait être très intéressants
dans le cas où les contraintes sont fixées déjà lors de la
compilation.
je ne connais pas les idées auxquelles tu fais référence; mais, ma
compréhension est que des fonctions templates ne serviront qu'à écr ire
/une/ implémentation pour un code gérant différents types de donn ées
(entiers, complexes, matrices, ...) avec la même algorithmie.
[] bibliothèque dont ils se servent, une
solution à base des expressions templatées s'impose prèsque.
non, elle s'impose que s'il (doit) existe(r) différents type de donné es
pouvant être traitée de manière unique.
S'il s'agit des utilisateurs externes, en revanche, il lui
faut un parseur.)
l'idée qui me gêne ici et que "l'outil" cherché serait le
moyen d'écrire du script (et non du code!); il y a une nuance
entre les 2.
James Kanze wrote on 15/11/2006 09:32:
J'ai une équation à n+2 inconnues, de la forme :
x[0] + x[1] + ... + x[n] = y
non, tu as un système à n inconnues (point), si on parle de
résoudre un système vaguement mathématique, autant parler
vaguement mathématique.
S'il a une équation « x[0] + x[1] + ... + x[n] = y », ou tous
les x et le y sont inconnu, il a bien un système à n+2 inconnus.
non, je ne suis pas d'accord avec cette description!
il serait aussi inapproprié de dire système à (m - 3)
inconnues, où "par convention" (!) (m = nb de valeurs à
déterminer + on-sait-pas-combien).
pour descendre assez bas, si j'écris:
a . x + b = y
j'ai par convention (vrai ici) un système à 2 inconnues, pas 4!
'y' est le résultat de l'équation, pas inconnue, résultat.
'x' est la variable de l'équation, pas inconnue, variable.
Pour avoir un système à n inconnus, il faudrait que l'expression
se lise « x[0] + x[1] + ... + x[n-2] = y ».
re-non, un "syst. à /n/ variables" est une description mathématique,
ilse fout de ton /n/ vrai, et en particulier de ton n (variable max.
dans un code particulier); pose n' = n - 2 dans le texte initial et on
parle d'un syst. à n(') variables.
Je ne vois pas pourquoi une formulation du problème serait
moins valide que l'autre. La seule contrainte, c'est que
« dernière indice + 2 =nombre d'inconnus ».
je n'ai pas dit "moins valide" j'ai insinué "mal décrit".
(le fait que C/C++ indexe à partir de
zéro n'a rien à voir avec le pb).
Je ne vois pas de rapport avec le C++ dans ce qu'il a écrit.
moi je le vois, l'écriture C++ montre n+1 variables 'x' indexées et un
y, résultat "n + 2" (écriture non descriptive, donc pénalisante et de
plus erronée, 'y' n'est pas une inconnue).
où x[0] = 42 est une condition initiale, elle fait que x0 n'est pl us une
inconnue du système (soit on peux continuer à dire paramètre) mais une
constante fixe
Sauf qu'il a dit que c'est une contrainte. C'est sûr qu'une fois
toutes les contraintes précisées, et la solution trouvée, il ne
doit plus y avoir d'inconnues. Mais si l'utilisateur dit :
voici mon équation (std::vector<double> x, double y), et voici
mes contraintes (à définir -- c'était la question de Fabien, si
je ne me trompe pas), tout ce qui se trouve dans la deuxième
partie est une contrainte.
si on s'en tient à cela, on peut dire amen; y-a-plus-qu'à traiter les
contraintes alors ...
La véritable question, c'est la degrée de souplesse que veut
donner Fabien. Une solution à base des templates (basée sur des
idées développées par Todd Veldhuizen et David Vandevoorde, mais
plus anciennement, on se servait d'une technique semblable basée
sur des fonctions virtuelles) pourrait être très intéressants
dans le cas où les contraintes sont fixées déjà lors de la
compilation.
je ne connais pas les idées auxquelles tu fais référence; mais, ma
compréhension est que des fonctions templates ne serviront qu'à écr ire
/une/ implémentation pour un code gérant différents types de donn ées
(entiers, complexes, matrices, ...) avec la même algorithmie.
[] bibliothèque dont ils se servent, une
solution à base des expressions templatées s'impose prèsque.
non, elle s'impose que s'il (doit) existe(r) différents type de donné es
pouvant être traitée de manière unique.
S'il s'agit des utilisateurs externes, en revanche, il lui
faut un parseur.)
l'idée qui me gêne ici et que "l'outil" cherché serait le
moyen d'écrire du script (et non du code!); il y a une nuance
entre les 2.