Cette fois ci mon script est tout petit, à peine 800 octets et mon problème n'est donc pas un problème de mémoire.
Le script est ici : https://workshop.numworks.com/python/cent20/longueurcourbe et par sécurité je le colle ci-dessous, juste au cas où je renomme un jour celui du workshop ce qui brise le lien ...
- Code: Select all
from math import sqrt
def fonc():
global f
print("Saisir une fonction :")
f = str(input("f(x) = "))
def interval():
global a, b
print("Saisir un intervalle [a,b] :")
a = float(input("a = "))
b = float(input("b = "))
def coupe():
global n
print("Combien de segment :")
n = int(input("n = "))
def long():
fonc()
interval()
coupe()
lc, p = 0, (b-a)/n
for i in range(n):
x1, x2 = a + i*p, a + (i+1)*p
x = x1
y1 = eval(f)
x = x2
y2 = eval(f)
d = sqrt((x1-x2)**2+(y1-y2)**2)
lc = lcn + d
print("La longueur de la courbe de f")
print("définie par f(x) =",f)
print("sur [{},{}]".format(a, b))
print("est :",lc)
Il tourne sans problème sur Spyder, sur Thonny mais sur la numworks rien à faire elle ne veut pas le faire tourner...
Bon je vais me rabattre sur celui de sesamath (ci-dessous), mais c'est fatiguant ces implémentations non standard !
- Code: Select all
from math import sqrt
def f(x):
return x**2 #Modifier la fonction ici
def distance(x1,y1,x2,y2):
return sqrt((x1-x2)**2 + (y1-y2)**2)
def longueurCourbe(f,a,b,n):
longueur = 0
x1,y1 = a,f(a)
h = (b-a)/n
for i in range(n):
x2 = x1 + h
y2 = f(x2)
longueur = longueur + distance(x1,y1,x2,y2)
x1,y1 = x2,y2
return longueur