Conserver une variable comme inconnu?

abdannour Messages postés 5 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 6 août 2011 - 2 août 2011 à 16:50
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 7 août 2011 à 07:21
Bonjour,
Je travaille sur Excel/VBA.
J'espère que ma question sera claire. Je me lance.
Je fait plein de calculs matriciels (par l'intermédiaire de subs, de fonctions...) assez longs pour obtenir in fine un "simple" polynome en fonction de x, dont je désire connaître les racines (les 4 premières disons).
Je peux utiliser une méthode numérique type Newton mais si je dois recalculer la valeur du polynôme à chaque fois, i.e. recommencer mon "bazar" matriciel, ce sera très long.
J'aimerais plutôt obtenir mon polynome en fonction de x, inconnue et indéfini, puis le résoudre à l'aide d'une autre sub.
Comment conserver une variable inconnue? Ou dit autrement, comment conserver un String dans une formule mathématique? Vous voyez ce que je veux dire?
Merci de m'avoir lu....
Cdlt

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 août 2011 à 18:30
Bonjour,
Non. Je ne "vois" personnellement pas !
Un exemple et un peu de code commenté nous éclaireront peut-être


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
abdannour Messages postés 5 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 6 août 2011
2 août 2011 à 20:33
ok voici un des endroits où s'introduit ma variable x, qui s'appelle en réalité omega:
Public Function M(i As Integer) As Variant
Dim resultat() As Double
ReDim resultat(1 To 4, 1 To 4)
Dim k As Integer, l As Integer

For k = 1 To 4
For l = 1 To 4
If k = l Then
resultat(k, l) = 1
ElseIf l <> 1 And k <> 4 Then resultat(k, l) = 0
Else
resultat(k, l) = lumped_mass(i) * omega ^ 2 'comment garder ce omega inconnu et indéfini ???????
End If
Next l
Next k
M = resultat
End Function

ici je vais recevoir une erreur car omega n'a pas de valeur! Dans un logiciel de calcul formel par exemple, on peut laisser des variables sans préciser leur valeur. Je sais que cela ressemble à une "function" mais ma variable omega intervient à plein d'endroit avant de se retrouver dans mon polynôme final....
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 août 2011 à 21:28
Excuse-moi, mais ces lignes de code ne m'apprennent rien en elles-mêmes !
- tu as une fonction M, qui retourne un Variant
- tu y insères un tableau résultat (dont on se demande pourquoi tu le redimensionnes alors qu'il pourrait directement être dimensionné)
- y apparait l'utilisation d'un Lumped_mass dont on se demande ce que c'est
- peu importe : tu attribues à ta fonction un résultat qui semble être à son tour un tableau
---- les éléments de ce tableau utilisent une variable omega (d'où sort-t-elle ? sinon = 0) ??
--- si omega est une variable publique ta fonction n'en changeant pas la valeur, elle garde sa valeur
--- si omega n'est pas une variable publique, sa valeur est 0 dans ta fonction et restera toujours 0 !
C'est une plaisanterie ?


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 août 2011 à 21:53
Tout ton "bazar" n'aurait un semblant de sens que si resultat(k, l) ne contenait au bout du compte qu'une chaîne de caractères contenant la sous-chaîne "omega" (et pas la variable omega)


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
abdannour Messages postés 5 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 6 août 2011
3 août 2011 à 12:26
Oui si omega n'a pas de valeurs tout cela n'a aucun sens. Et j'aimerais justement que omega soit une variable Public qui n'ai pas de valeurs et que je puisse lui affecter des valeurs plus tard dans ma programmation...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 août 2011 à 12:33
Bé !
Déclare-la donc en public !
Mais elle sera = 0 tant que non initialisée !
Pardi !


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
abdannour Messages postés 5 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 6 août 2011
3 août 2011 à 12:34
Ok j'essaye de formuler ça autrement:
Si je voulais introduire une fonction je ferais:
Function f(x as single)as single
f=10*x^2
End function
mais moi je veux que VBA me sorte une fonction... Je ne sais pas si c'est possible mais je demande.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 août 2011 à 15:04
Bon.
Il n'en va nullement de manière différente en informatique et en algèbre.
Si ce sont la/les solution(s) d'une fonction, que tu cherches, à savoir quelle(s) valeur(s) de x font que la fonction = 0, ce sont les paramètres de ta fonction (ceux qui permettent d'en trouver la/les solution(s)) qu'il te faut passer à une procédure ou fonction de calcul.

Une équation n'est pas une valeur ! elle n'est qu'une raison, pas une valeur !
Ceci est simple à comprendre !
Le pire, dans l'exemple que tu montres ici, est qu'il n'est nul besoin de calculs pour déterminer qu'il n'y a qu'une solution, à savoir x = 0 !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
abdannour Messages postés 5 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 12:25
Oui j'aimerais bien être d'accord avec toi mais je ne connais pas les coefficients de ma fonction. Je multiplie des dizaines de matrices qui dépendent de x. A la fin j'obtiens un polynome donc je ne connais même pas le degré! Alors qu'en est il des coefficients?
C'est plus clair?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 août 2011 à 13:16
C'est plus "clair", si tu veux (au moins dans ton esprit, si j'ose dire)
Ce n'est pas clair pour le mien, d'esprit, considérablement limité et handicapé par la logique.
Pauvre de moi, alors...
J'ai vraiment honte, là ... (je dois être un peu taré, je pense) !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 août 2011 à 13:26
Dis-moi, toi (juste pour que je meure moins bête) :
Tu connais une équation dans laquelle x dépend des autres paramètres et où les autres paramètres dépendent de x ?
Et si oui : comment (ta méthode) la résous-tu, toi ?
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 août 2011 à 16:05
et :
mais moi je veux que VBA me sorte une fonction

!
VBA ne va pas te "sortir" (une fonction).
VBA ne peut éventuellement que te permettre d'écrire les instructions qui auront pour but de calculer chacun des paramètres qu'utilise une fonction.

C'est tellement E V I D E N T !

Sauf si, comme déjà dit plus haut : tu souhaites écrire une CHAINE DE CARACTERES représentant ta fonction (et ce ne sera pas une fonction, mais une variable de type string !

ET ça ?, tu veux bien nous le traduire, s'il te plait ?
Je multiplie des dizaines de matrices qui dépendent de x. A la fin j'obtiens un polynome donc je ne connais même pas le degré! Alors qu'en est il des coefficients?


C'est ce que tu as (et il va falloir que tu nous montres comment et à partir de quoi tu "obtiens" cette variable "polynome"), ou c'est ce que tu veux que VBA "te sorte" (comme tu dis) ?
Car tel qu'exprimé, c'est ce que tu as déjà !!!
Comment veux-tu qu'on te comprenne, si tu t'exprimes ainsi, hein ?
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015
6 août 2011 à 23:00
Moi je pense qu'il y a moyen de connaitre le degré de ton polynome et les coefficients attachés à chaque puissance de x. Si tu peux le faire sur un papier c'est que forcément tu peux le faire en VBA.

Le problème c'est qu'il faut interpréter ce que tu obtiens à la fin de tes opérations sur les matrices... Je suppose qu'à la fin tu te retrouve avec une matrice finale, qui a une certaine dimension et des valeurs, il suffit donc de tester tout ça pour connaitre le degré de ton polynômes et ses coef.

A partir de là tu peux définir une variable globale Puissance_max qui est le degré de ton polynôme - j'espère que je m'exprime bien, ça fait un bail... :) - , et un tableau Coef() que tu vas redimensionner redim coef(1 to Puissance_max).

et là tu ranges chaque coefficient dans ça case et dans la suite du programme tu utilises ces deux éléments, voir un seul vu que Puissance_max est simplement obtenu en fesant ubound(Coef) ...

En réalité dans un programme comme celui que tu veux faire on s'en fou des "x", ils n'apportent aucunes informations... ce que tu veux savoir c'est le degré de ton poly et les coef... c'est tout...


bref, j'espère avoir aidé


nitho l'amateur
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 août 2011 à 07:21
Bonjour, nitho

Voilà enfin des propos lucides .

Espérons qu'il ne tomberont pas dans l'oreille d'un sourd.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous