Python: tracer une fonction complexe.

Discutez d'informatique ici !
lazare
Membre Naturel
Messages: 84
Enregistré le: 11 Mai 2020, 23:16

Python: tracer une fonction complexe.

par lazare » 09 Mai 2021, 01:13

Bonjour.

Je cherche a tracer cette fonction avec python:

Image

J'ai essayé avec ce code:

Code: Tout sélectionner
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 200)
z = (-1j)*(np.log((1j*x)(np.sqrt(1-x**2))))
plt.plot(np.imag(z), np.real(z), 'g')

plt.show()


Ça me donne ce message d'erreur dans la console:

Code: Tout sélectionner
TypeError: 'numpy.ndarray' object is not callable


Sur google je ne comprend pas les explications que je trouve sur cette erreur, enfin, ça parle de parenthèses ronde au lieu de parenthèses carrées. Et je ne vois pas trop de rapport. Je ne vois pas non plus le rapport entre la fonction numpy.ndarray et le code que j'ai entré.



lazare
Membre Naturel
Messages: 84
Enregistré le: 11 Mai 2020, 23:16

Re: Python: tracer une fonction complexe.

par lazare » 23 Mai 2021, 18:22

Après quelques modifications j'arrive a obtenir une courbe, mais ça ne ressemble pas du tout a la courbe arc-sinus que j'attendais.

le code:

Code: Tout sélectionner
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 200)

z = (-1j)*(np.log((1j*x)+(np.sqrt(1-x**2))))

plt.plot(np.real(z), np.imag(z), 'g')

plt.show()


la courbe que j'obtiens :hehe: :? :

Image

Si quelqu'un arrive a m'expliquer pourquoi je suis preneur

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 12351
Enregistré le: 08 Juin 2006, 09:55

Re: Python: tracer une fonction complexe.

par mathelot » 23 Mai 2021, 19:04

Bonjour,
je me suis demandé si le message d'erreur signifiait que n'appartient pas au domaine de définition de ln(). Il faudrait qu'on sache comment est défini le log complexe en Python

lazare
Membre Naturel
Messages: 84
Enregistré le: 11 Mai 2020, 23:16

Re: Python: tracer une fonction complexe.

par lazare » 23 Mai 2021, 19:58

mathelot a écrit:Bonjour,
je me suis demandé si le message d'erreur signifiait que n'appartient pas au domaine de définition de ln(). Il faudrait qu'on sache comment est défini le log complexe en Python


je crois le problème venait du fait que j'avais oublié un "+"

Dans mon second message j'arrive a produire un graphe donc je crois pas qu'il y ai de problème de domaine de définition.

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 12351
Enregistré le: 08 Juin 2006, 09:55

Re: Python: tracer une fonction complexe.

par mathelot » 23 Mai 2021, 20:18

quelques questions:

pourquoi le domaine de définition de la fonction (dont la courbe représentative est verte) inclut strictement ?
pourquoi son image inclut strictement ?
ln désigne habituellement une fonction réelle . Par quelle demi-droite coupe-t-on le plan complexe pour définir le log complexe ? est-ce l'ensemble des réels négatifs ?

lazare
Membre Naturel
Messages: 84
Enregistré le: 11 Mai 2020, 23:16

Re: Python: tracer une fonction complexe.

par lazare » 23 Mai 2021, 21:20

mathelot a écrit:quelques questions:

pourquoi le domaine de définition de la fonction (dont la courbe représentative est verte) inclut strictement ?
pourquoi son image inclut strictement ?
ln désigne habituellement une fonction réelle . Par quelle demi-droite coupe-t-on le plan complexe pour définir le log complexe ? est-ce l'ensemble des réels négatifs ?


j'ai choisi [-1;1] un peu au hasard sachant que c'est le domaine de définition de arcsin mais c'est vrai que l'abcisse est définie par la partie réelle de z donc je crois que je devrais plutot mettre [e**-1; e] pour que la partie réelle de z soit définie sur [-1;1]

le code:
Code: Tout sélectionner
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(np.e**-1, np.e, 200)

z = (-1j)*(np.log((1j*x)+(np.sqrt(1-x**2))))

plt.plot(np.real(z), np.imag(z), 'g')

plt.show()


la courbe:
Image

Sinon, je ne comprend pas ta derniere question.

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 12351
Enregistré le: 08 Juin 2006, 09:55

Re: Python: tracer une fonction complexe.

par mathelot » 24 Mai 2021, 13:20

On a
Z=e^{x+iy} =e^x e^{iy}
k étant un entier relatif quelconque

Pour calculer log(Z), il faut définir une fonction
Arg() sur un ouvert simplement connexe du plan.
On peut prendre le plan complexe où l'on ôte la demi-droite
des réels négatifs ou nuls. On définit ainsi un domaine de définition du logarithme complexe.
Modifié en dernier par mathelot le 25 Mai 2021, 23:22, modifié 1 fois.

lazare
Membre Naturel
Messages: 84
Enregistré le: 11 Mai 2020, 23:16

Re: Python: tracer une fonction complexe.

par lazare » 25 Mai 2021, 12:37

mathelot a écrit:On a
Z=e^{x+iy} =e^x e^{iy}
x=ln(|Z|) y=arg(Z)
Log (Z) =x+iy=ln(|Z|) +i arg(Z)
Pour calculer log(Z), il faut définir une fonction
Arg() sur un ouvert simplement connexe du plan.
On peut prendre le plan complexe où l'on ôte la demi-droite
des réels négatifs ou nuls. On définit ainsi un domaine de définition du logarithme complexe.


Je comprend pas ce que tu dis. Est ce que tu peu le replacer dans le contexte ?


Mon but c'est d'obtenir cette courbe avec python en utilisant sa forme d'écriture complexe.
Image

Skullkid
Habitué(e)
Messages: 3065
Enregistré le: 08 Aoû 2007, 21:08

Re: Python: tracer une fonction complexe.

par Skullkid » 25 Mai 2021, 21:18

Bonjour, de ce que je peux voir de ton code, tu es en train de tracer le graphe de Im(z) en fonction de Re(z), et tu obtiens quelque chose qui a l'air correct : z est censé être réel (c'est l'arcsinus d'un réel entre -1 et 1) donc le graphe que tu demandes de tracer est un segment de droite horizontal. Les oscillations en viennent sans doute d'erreurs d'arrondi/troncature.

La courbe que tu veux c'est Re(z) en fonction de x.

lazare
Membre Naturel
Messages: 84
Enregistré le: 11 Mai 2020, 23:16

Re: Python: tracer une fonction complexe.

par lazare » 25 Mai 2021, 23:56

Skullkid a écrit:Bonjour, de ce que je peux voir de ton code, tu es en train de tracer le graphe de Im(z) en fonction de Re(z), et tu obtiens quelque chose qui a l'air correct : z est censé être réel (c'est l'arcsinus d'un réel entre -1 et 1) donc le graphe que tu demandes de tracer est un segment de droite horizontal. Les oscillations en viennent sans doute d'erreurs d'arrondi/troncature.

La courbe que tu veux c'est Re(z) en fonction de x.


Salut.
J'ai appliqué ce que tu dis et ca fonctionne.
Merci.

Code: Tout sélectionner
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 2000)

z = (-1j)*(np.log((1j*x)+(np.sqrt(1-x**2))))

plt.plot(x, np.real(z), 'g')

plt.show()


Image

Maintenant mon problème c'est que je suis déboussolé, je pensais qu'une fonction complexe donnais des résultats dans un plan avec la partie réelle pour abscisse et imaginaire pour ordonnées.

Mais d’âpres ce que tu as montré on s'en fou en fait de la partie imaginaire et la je comprend plus rien a la mécanique du truc.

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 12351
Enregistré le: 08 Juin 2006, 09:55

Re: Python: tracer une fonction complexe.

par mathelot » 26 Mai 2021, 02:09

re,

log complexe
soient et deux nombres complexes.




Pour calculer log(Z), il faut donc déterminer x et y.
on a:
d'où | d'où et il existe k dans tel que
d'où



La fonction log (logarithme complexe) est donc multivaluée. Pour un complexe Z donné non nul,
il y a une infinité de nombres complexes pour log(Z) (k peut prendre n'importe quelle valeur entière)

Pour définir une fonction log, on définit une fonction définie sur un ouvert simplement connexe du plan complexe. En général, on choisit comme ensemble de définition du log complexe le plan complexe privé de la demi-droite des réels négatifs ou nuls, et on pose Arg(1)=0.

Pour l'arcsin
soit . Il existe tel que soit

On a donc et
Donc .

Donc et

Skullkid
Habitué(e)
Messages: 3065
Enregistré le: 08 Aoû 2007, 21:08

Re: Python: tracer une fonction complexe.

par Skullkid » 26 Mai 2021, 15:26

La courbe que tu cherchais à tracer est le graphe de la fonction réelle arcsin. Le fait que tu aies choisi d'écrire arcsin sous une forme qui fait intervenir des complexes ne change rien à l'affaire. Après tu peux tracer d'autres choses si tu veux, par exemple le segment de droite horizontal que tu traçais au début c'est l'image dans le plan complexe du segment [-1,1] par la fonction arcsin (c'est-à-dire le segment [-pi/2,pi/2]).

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite