Topic: Risolvere equazioni  (Letto 582 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Anto0699

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Risolvere equazioni
« il: Ottobre 07, 2017, 17:56 »
Ciao a tutti, vi spiego il problema. Sto creando un programma che risolva le equazioni attraverso il metodo di bisezione quindi alla sua partenza prima mi chiede di inserire un' equazione, per es. x(^2)+x+5 e poi suddivide la stessa in y=x(^2) e y=+x+5. Per proseguire dovrebbe disegnare le due funzioni su un grafico e ricavare l' intervallo(sull' asse x) nel quale si trova l' intersezioni tra le due appunto funzioni. Questa è la parte che non riesco proprio a fare, inoltre sarebbe bello, anche se non obbligatorio, vedere tale grafico. L' interfaccia grafica di Python ancora non la conosco bene. Qualcuno sa darmi una mano. Di seguito trovate lo script che ho scritto fino ad ora.
eq=input("Inserisci l' equazione da risovere--> ")
def Trova(Stringa, Carattere):
    Indice = 0
    while Indice < len(Stringa):
        if Stringa[Indice] == Carattere:
            x = Indice
            y = Indice+1
            t = Indice+2
            print("|y=",eq[0:y])
            print("|y=",eq[y:])
        Indice = Indice + 1
    return -1
if "^" in eq:
    Trova(eq,")")
    time.sleep(30)
else:
    print("Almeno un elemento deve essere elevato a potenza")

Offline bebo

  • python erectus
  • ***
  • Post: 211
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Risolvere equazioni
« Risposta #1 il: Ottobre 08, 2017, 18:42 »
Prima di tutto, quando posti del codice sul forum, usa il bottone pythoncode, quello a fianco dei bottoni per allineare il testo, per rendere leggibile il codice che posti.

Inoltre eviterei di usare un while "alla C" in python.
Se vuoi iterare su una stringa fai cosi':
>>> stringa_su_cui_iterare = "ciaone"
>>> for lettera in stringa_su_cui_iterare:
...   print(lettera)
...
c
i
a
o
n
e

e se vuoi anche l'indice dell'elemento su cui stai iterando, usa enumerate:
>>> for indice, lettera in enumerate(stringa_su_cui_iterare):
...   print(indice, lettera)
...
(0, 'c')
(1, 'i')
(2, 'a')
(3, 'o')
(4, 'n')
(5, 'e')


Poi, credo che non sia cosi' facile spiegare ad un programma come interpretare delle stringhe in modo matematico. ad esempio, per te e' ovvio che queste stringhe siano tutte uguali:
x^2
x^(2)
x(^2)
(x^(2))
((((((x^(2)))))))
ma per un programma non e' cosi' facile, bisogna spiegarglielo.

Io ho dovuto farlo, e qui mi e' stato insegnato come fare: http://www.python-it.org/forum/index.php?topic=9666.msg82191#msg82191
e in questo progetto c'e' la versione finale di questo interprete, che comprendeva molte funzioni: https://bitbucket.org/moodle2latex/moodle2latex/src/a1927129ea15085fde9d1f3a4b90b0a15623653c/moodle_parser.py?at=master&fileviewer=file-view-default#moodle_parser.py-145

pero' se vuoi limitarti a dei semplici casi, forse anche una regex potrebbe andare bene: regex101.com puo' aiutarti, e qui c'e' un esempio di come catturare una potenza all'interno di una stringa: https://regex101.com/r/nsm7oO/3

Offline bebo

  • python erectus
  • ***
  • Post: 211
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Risolvere equazioni
« Risposta #2 il: Ottobre 08, 2017, 18:44 »
Ovviamente si potrebbe usare qualcosa di gia' testato che faccia tutto questo sporco lavoro, come ad es http://www.sympy.org/en/index.html ma dubito che ad es in un esame universitario sia ammesso (sempre che chiedano questo tipo di problemi)

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:Risolvere equazioni
« Risposta #3 il: Ottobre 14, 2017, 15:38 »
Ma al tuo utente fai terminare il processo 30 secondi dopo avergli dato la risposta perche' ti ha pisciato sul tappeto in salotto?

Offline bancaldo

  • python neanderthalensis
  • ****
  • Post: 398
  • Punti reputazione: 0
    • Mostra profilo
Re:Risolvere equazioni
« Risposta #4 il: Ottobre 16, 2017, 22:00 »
Ma al tuo utente fai terminare il processo 30 secondi dopo avergli dato la risposta perche' ti ha pisciato sul tappeto in salotto?



 :D :D