Bonjour, je voudrais savoir comment obtenir une matrice A= [aij], sur Maple , matrice n,n (n fixé) telle que aij=f(i,j) où f est une fonction à deux variables (de R2 dans R donc).
Une fois cette matrice obtenue, comment obtenir la somme de tous les éléments? (somme de n carré termes)
Merci beaucoup d'avance
Posted by: GzD
C'est quand même les bases du langage là oO (ah ces prépas qui veulent qu'on leur fasse leurs exos :s)
Montre ce que tu as fais déjà, on t'aidera après ;)
Posted by: thekorner
si c'était un exo à faire, j'demanderais pas de l'aide comme ça... le problème c'est qu'on ne fait PAS DU TOUT d'algèbre linéaire sur Maple et donc c'est un peu embêtant quand je dois en utiliser dans mon tipe. Apparemment j'ai vu que les matrices ne se définissaient qu'à base de liste et c'est pas le top quand on veut la définir par une fonction à deux variables.
voila ma fonction à deux variables, et le problème que j'ai pour faire la double somme classique, c'est qu'il y a une méthode numérique dans la fonction à deux variables, ce qui oblige à donner les valeurs des variables avant... c'est pour ça que j'ai eu l'idée de la matrice...
voila, donc si quelqu'un peut m'aider, ce serait sympa, et ce n'est pas absolument pas "pour me faire un exercice", mais plutôt une petite aide au milieu d'un gros gros travail (le tipe)...
Posted by: GzD
Ne peux tu pas envisager d'établir le résultat de ta somme à l'aide d'un boucle qui fera les appels de ta fonction avec les bons paramètres (=indices de ta boucle) ?
Posted by: thekorner
j'arrive bien à faire une boucle for en fixant une des variables (c'est alors un parametre), je modifie donc la fonction pour la rendre à une seule variable, cette variable variant de 0 à n-1, ce qui me donne une liste:
voila ce que ça me donne pour n=15, déjà je ne sais pas comment m'y prendre pour faire la somme de tous ces éléments, ensuite il me manque tous les éléments correspondant à u1(1), u1(2), u1(3),...., u1(n-1)
j'ai bien essayé de faire une double boucle for mais celà fait planter maple...
Posted by: GzD
Citation:
j'ai bien essayé de faire une double boucle for mais celà fait planter maple...
c'est balo ça :(
Quelle genre d'erreur as-tu ? mémoire insuffisante ?
Le code suivant ne marcherait-il pas ?
Code:
> somme:=0:
> for a from 0 to n-1 do
> for b from 0 to n-1 do
> somme:=somme+u1(a,b);
> end do:
> end do:
> somme;
Posted by: buzard
pour une somme je verrais bien ce genre de boucle
r = Algo<r, f> (u, n)
{
for i=1 to n
r <- f(r, u[i])
}
avec Algo<0, (x,y -> x+y)> la somme de n éléments
avec Algo<1, (x,y -> x*y)> le produit de n éléments
ou avec la forme récursive :
r = Algo<r, f> (u, n)
{
if n > 0 then
r <- f( Algo<r, f>(u, n-1), u[n] )
}
ou encore la forme récursive terminale (avec i=0)
r = Algo<r, f> (u, n, i)
{
if n > i then
r <- Algo< f(r, u[i+1]), f > (u, n, i+1)
}
Posted by: thekorner
merci beaucoup, le code marche effectivement, je m'y prenais sûrement mal en faisant ma propre boucle for...