Bonjour, j'ai cet exercice :
"Compléter cet algorithme qui prend en arguments la partie réelle et la partie imaginaire d'un nombre complexe z et qui retourne:
- "0 n'a pas d'inverse si z est égal à 0"
- " La partie réelle et la partie imaginaire de son inverse sinon
Fonction inverse(a,b):
Si..................... ........................... Sinon .......................... .......................... Retourner........ |
Fonction inverse(a,b):
Si z = 0 "0 n'a pas d'inverse" Sinon z > 0 "la partie réelle et la partie imaginaire de son inverse Retourner z |
Bonjour,
"si z = 0"
déja z n'est pas défini, seuls sont définis sa partir réelle (je suppose que c'est a) et sa partie imaginaire (b)
tout test ou calcul devra se faire à partir de a et b uniquement
et il faut calculer la partie réelle et la partie imaginaire de l'inverse (à partir de a et de b)
salut
et ce n'est pas parce que tu ne sais pas faire d'algo que tu as le droit d'écrire n'importe quoi comme
Quand on me dit que le programme retourne "0 n'a pas d'inverse" si z est égale à 0 est-ce que je peut déduire que a et b = 0 car :
z = a + ib = 0 + i0 = 0
Et pour "la partie réelle et la partie imaginaire de son inverse " cela signifie que a et b sont donc différents de 0 ?
Merci d'avance pour vos retours
1/ oui évidemment !! 0 = 0 + 0i
2/ si z = a + ib alors écrire 1/z sous forme algébrique pour obtenir ses parties réelle et imaginaire
z =a +ib est nul si et seulement si a = 0 et b = 0
donc le test "si z=0" doit être remplacé par un test équivalent sur a et b (avec un "et" dans la formulation)
"la partie réelle SA VALEUR et la partie imaginaire SA VALEUR de son inverse"
il faut les calculer
ce n'est pas de l'algorithme, c'est des maths pures
comment calculer la partie réelle et la partie imaginaire de 1/(a+ib)
ensuite on écrit ça dans l'algorithme
on ne renvoie pas du baratin inutile, on renvoie le résultat du calcul
Fonction inverse (a,b):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse" (c'est dans l'énoncé cette phrase)
Sinon
calcul à faire ...
(et en renvoyer le résultat)
Fin
Je réfléchis à cela quand je rentre chez moi et je vous poste ma réponse !
Merci pour votre patience
Je pense que le programme complet donne;
Fonction inverse (a,b):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse"
Sinon
a + ib = 1/(a+ib)
1/z
Retourner a et b
as-tu lu ce qu'on a écrit :
1/z sous forme algébrique = 1/a + ib
La partie réelle = 1/a et la partie imaginaire = 1/b
Comment est-ce qu'on doit "calculer la partie réelle et la partie imaginaire" ?
ha bon !!
d'une part il manque des parenthèses ...
d'autre part tu penses que 1/ (2 + 3) = 1/2 + 1/3
ne sais-tu pas calculer la forme algébrique du complexe 1/(2 + 3i) ?
La forme algébrique du complexe 1/(2+3i) =
Donc si on suit cet exemple, La forme algébrique du complexe 1/(a+ib) =
c'est mieux comme ça !
Donc pour notre algorithme on a finalement :
Fonction inverse ( a,b ):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse"
Sinon 1/(a +ib) = a/(a² + b²) - b²/a² +b²
renvoyer la partie réelle et la partie imaginaire
Retourner a et b
Même si vous m'avez déjà beaucoup aidé est-ce que vous pourriez me donner juste une petite dernière piste pour que je puisse modifier la partie bleu car là je sèche
non car il est important que tu suives la correction que ton prof te donnera ...
mais par contre tu peux ouvrir tes livres de math ou d'algorithmique ou chercher sur le net pour apprendre par toi-même car cela t'enrichira plus ...
Bonjour, je comprends votre réponse.
J'ai réfléchis et je pense être sur le bon chemin
Fonction inverse ( a,b ):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse"
Sinon
a prend la valeur a²/(a²+b²)
b prend la valeur b²/(a²+b²)
Retourner a et b
ok c'est beaucoup mieux ...
mais il reste une erreur grave : tu modifies la valeur de a dans la "boucle sinon" ...
carpediem semble absent :
"peut-être
a prend la valeur 1/(a+ib) ?" non, ce n'est pas ça.
en entrée de l'algo, tu as a et b , mais ton calcul change la valeur de a, c'est ça qui est gênant.
à partir de a+ib, calcules plutôt A + iB.
et pour éviter des fautes de frappe sur la casse des lettres , j'aurais même dit C + iD
1/(a+ ib) = C+iD
de toute façon , même "mathématiquement" 1/(a+ib) = a+ib ce serait du n'importe quoi.
il y a suffisamment de lettres dans l'alphabet pour appeler différemment des choses différentes.
"D'accord donc il est préférable d'écrire
A prend la valeur A²/A²+B²
B prend la valeur B²/A²+B²"
tu ne comprends pas : les noms des variables, c'est comme des petites boites qui ne peuvent contenir qu'une valeur à la fois.
on te donne deux boites : a et b
tu as besoin de garder les valeurs de ces boites pendant tout le temps, elles ne doivent pas changer.
quand tu écris a = a²/(a²+b²) tu changes la valeur dans la boite a, alors que tu en as besoin pour le calcul suivant.
solution : au lieu de changer la valeur de a, ouvre une autre boite que tu appelles A (ou C, ou R1, comme tu veux), tu y ranges le résultat de ton calcul et "a" n'est pas modifié.
A = a²/(a²+b²)
de même pour b et B
c'est plus clair ?
A l'aide de vos informations, le programme donne donc:
Fonction inverse ( a,b ):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse"
Sinon
A prend la valeur a²/(a²+b²)
B prend la valeur b²/(a²+b²)
Retourner A et B
NON
formules toujours fausses
Mince...je rectifie le tir
Fonction inverse ( a,b ):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse"
Sinon
A prend la valeur a/(a²+b²)
B prend la valeur b/(a²+b²)
Retourner A et B
La version finale est donc :
Fonction inverse ( a,b ):
Si a = 0 et b = 0
renvoyer "0 n'a pas d'inverse"
Sinon
A prend la valeur a/(a²+b²)
B prend la valeur moins b/(a²+b²)
Retourner A et B
Je vous remercie pour votre grande aide ainsi que votre patience, maintenant je pense avoir bien compris le principe.
Je vous souhaite une belle soirée
lou1100
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :