Bonjour

Je souhaite réaliser un petit programme de teste de point fixe d'une fonction.

Voici le code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
import math as mt
import numpy as np
import matplotlib.pyplot as plt
 
def f(x):
 
    return -x(1+mt.exp(x)) + mt.exp(x)
 
def pointfixe(f, x0, xmax, eps):
 
    itera = 0
 
    x = 0
 
    xt = {}
 
    while itera < xmax:
 
        try:
 
            x = f(x0)
        except OverflowError:
         break
 
        xt[itr] = x0
 
        if abs(x - x0) <= eps:
            return xt
 
 
    x0 = x
    itr += 1
 
    return "Aucun point fixe"
 
def saisiretafficher():
 
     xin = input('Enter le nombre  ')
 
     xmx = input('Enter le nombre maximum ')
 
     try:
 
         x0=int(xin)
         xmax=int(xmx)
 
         if x0 >=0 and xmax >=0:
 
            print(pointfixe(f,x0,xmax, 0.0001))
 
         else:
 
             print('Votre nombre n\'est pas superieur à 0')
 
     except ValueError:
 
 
        print('Vous n\'avez pas entrer un de nombre')
 
 
saisiretafficher()
Voici l'erreur que python signal.


Traceback (most recent call last):
File "C:\Users\EDMOND\Documents\programme python\exo7.py", line 82, in <module>
saisiretafficher()
File "C:\Users\EDMOND\Documents\programme python\exo7.py", line 70, in saisiretafficher
print(pointfixe(f,x0,xmax, 0.0001))
File "C:\Users\EDMOND\Documents\programme python\exo7.py", line 37, in pointfixe
x = f(x0)
File "C:\Users\EDMOND\Documents\programme python\exo7.py", line 17, in f
return -x(1+mt.exp(x)) + mt.exp(x)
TypeError: 'int' object is not callable
Si j'ai bien compris, la fonction n'accepte pas d'entier.

J'ai essayé avec float, ça ne fonctionne pas non plus.

Que doit-je corriger dans la fonction saisiretafficher ?

A bientôt