Exercice de maths sur Python

BlaieBlaie

Exercice de maths sur Python

Message par BlaieBlaie » 14 déc. 2017 16:22

Bonjour,

Je bloque sur un programme Python depuis quelques jours.

Tout d'abord, dans ce qui va suivre, $ h=\dfrac{1}{n+1} $ et $ x_i = ih $.
Etant donnée une fonction f(x,y) donnée par l'utilisateur, faire un programme calculant la matrice $ (b_{i,j})_{1 \leq i,j \leq n} $ des valeurs $ b_{i,j} = f(x_i,x_j) $, puis le vecteur colonne $ b $ correspondant, dans $ \mathbb{R}^N $. On pourra faire une fonction suivant le format bvector(f,n) renvoyant le vecteur colonne $ b $ désiré.

J'ai commencé ainsi :

Code : Tout sélectionner

def bvector(f,n):
    h=1/(n+1)
    x=np.zeros(n)
    for i in range(n):
        x[i]=i*h
    b=np.zeros((n,n))
    for i in range(n):
        for j in range(n):
            b[i,j]=f(x[i],x[j])
    return b.reshape
    
def f(x,y):
    f=x+y
    return f
    
print(bvector(f(3,4),2))
Ma fonction ne marche pas. Je n'arrive pas vraiment à voir ce qui ne va pas. L'utilisation de b.reshape est peut-être incorrecte aussi... Pouvez-vous m'aider ? Merci d'avance

Messages : 13

Inscription : 27 févr. 2013 16:45

Profil de l'utilisateur : Élève de lycée

Re: Exercice de maths sur Python

Message par loupi » 14 déc. 2017 17:12

Il me semble voir un premier pb, ta fonction bvector attend une fonction comme premier paramètre, pas une valeur, donc l'appel c'est plutôt bvector(f,2) dans ton exemple.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Exercice de maths sur Python

Message par fakbill » 14 déc. 2017 17:21

def f(x,y):
f=x+y
return f

C'est une horreur. Tu n'as pas compris ce qu'est une function.
Qu'est censé faire le code ci-dessus selon toi?
Je t'écris ce qu'il fait : il definit une function f qui prend deux arguments x et y et qui revoie x+y.
Par contre, le fait que tu fasses f=x+y return f est une horreur absolue. Le concept de function n'est pas clair dans ta tête.
f c'est le nom de la function, pas de ce qu'elle retourne (ce qu'elle retourne n'a pas de nom tant que tu ne l'as pas stocké dans une variable en faisant foo=f(1,2).
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Exercice de maths sur Python

Message par fakbill » 14 déc. 2017 17:31

si tu connais numpy alors ta matrice se construit avec numpy.fromfunction
Ne me dis pas que tu ne connais pas "fromfunction". Lis la doc de numpy qui est très bien faite.
fromfunction est une function souvent utile pour...créer des matrices...elle est faite pour ça :)
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

BlaieBlaie

Re: Exercice de maths sur Python

Message par BlaieBlaie » 14 déc. 2017 18:11

Oui le coup du return f, c'est du gros n'importe quoi, c'est vrai... J'essaie de modifier mon premier code...
C'est la première fois de ma vie que j'utilise Python

BlaieBlaie

Re: Exercice de maths sur Python

Message par BlaieBlaie » 14 déc. 2017 18:23

Rien qu'au niveau de cette portion de code, j'ai l'impression qu'il y a un souci lorsque je compile :

Code : Tout sélectionner

def bvector(f,n):
    h=1/(n+1)
    x=np.zeros(n)
    for i in range(n):
        x[i]=(i+1)*h
    b=np.zeros((n,n))
    for i in range(n):
        for j in range(n):
            b[i,j]=f(x[i],x[j])
J'ai mis i+1 au lieu de i, car comme la boucle commence en i=0, j'aimerais éviter le i*h=0 alors que l'énoncé nous dit que i commence en 1 (j'ai pas l'impression d'être clair et limpide là)
Le problème c'est qu'au niveau de mon b, ça a pas vraiment l'air d'être ça... (et il va sans dire que je n'arrive pas à voir où j'ai merdé)
Dernière modification par BlaieBlaie le 14 déc. 2017 18:54, modifié 3 fois.

Messages : 2430

Inscription : 27 juil. 2016 19:38

Profil de l'utilisateur : Élève de lycée

Re: Exercice de maths sur Python

Message par U46406 » 14 déc. 2017 18:25

compiler : Python n'a pas de compilateur, il me semble, c'est du code interprété à la volée...
« Occupez-vous d’abord des choses qui sont à portée de main. Rangez votre chambre avant de sauver le monde. Ensuite, sauvez le monde. » (Ron Padgett, dans Comment devenir parfait) :mrgreen:

BlaieBlaie

Re: Exercice de maths sur Python

Message par BlaieBlaie » 14 déc. 2017 18:38

Enfin quand j’exécute ça, ça ne fonctionne pas.

Messages : 13

Inscription : 27 févr. 2013 16:45

Profil de l'utilisateur : Élève de lycée

Re: Exercice de maths sur Python

Message par loupi » 14 déc. 2017 18:43

"for i in range(n-1)" ne va boucler que n-1 fois, je ne pense pas que c'est ce que tu veux.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Exercice de maths sur Python

Message par fakbill » 14 déc. 2017 19:11

mais si tu utilizes numpy, par pitié, utilize fromfunction. C'est LA function faite pour construire une matrice (plus généralement un tableau) de terme general f(j,j). C'est pour ça que ça s'appelle fromfunction. c'est construire un tableau à partir d'une function :)

au passage, la suite de ton énoncé ne veut rien dire "le vecteur colonne b correspondant"? gni?? tu veux dire "qui renvoie le k_ieme vecteur colonne de ta matrice je suppose? Si oui, apprends comment les index sur les tableaux fonctionnent en numpy. Apprends ce que M[:,5] veut dire.
Bref, apprends les bases de numpy. C'est la base pour faire de l'algèbre linéaire.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre