Risoluzione sistema di equazioni

Salve, ho la necessità di far risolvere ad arduino un sistema di n equazioni (almeno 4) di circonferenze per trovarne l'intersezione, conoscendo ovviamente le coordinate dei centri e i raggi. Idee?

Arduino non è una calcolatrice programmabile, è una specie di microcomputer: devi inserire tu il software che possa risolvere queste equazioni, date le variabili di input il tuo programma eseguirà i calcoli preimpostati. Il problema casomai potrebbero derivare dal fatto che se hai bisogno di lavorare con numeri decimali la precisione di Arduino è poca.

leo72: Arduino non è una calcolatrice programmabile, è una specie di microcomputer: devi inserire tu il software che possa risolvere queste equazioni, date le variabili di input il tuo programma eseguirà i calcoli preimpostati. Il problema casomai potrebbero derivare dal fatto che se hai bisogno di lavorare con numeri decimali la precisione di Arduino è poca.

forse ho posto male la domanda. lo so che il programma devo scriverlo io, proprio su questo ho bisogno di consigli, magari su come impostare lo sketch, o se ne esiste già qualcuno realizzato. Cose del genere. Per quanto riguarda la sensibilità diciamo che non ho bisogno di grossa precisione

Forse ti conviene prima risolverle e poi mettere nel codice le formule con le soluzioni e le condizioni necessarie per avere intersezioni.

Mi sa che Paolo non stava chiedendo come inserire le equazioni dentro il codice, stava chiedendo le equazioni... :sweat_smile:

no no, devo inserire le equazioni nel codice invece :slight_smile:

Allora scrivici le equazioni... ;)

Devi pensare a una procedura che un bambino scemo dovrebbe fare per risolvere le equazioni, del tipo prendi questo numero, moltiplicalo per quest'altro, etc... Poi scrivere il codice dalla procedura è relativamente semplice.

ok quindi scrivo proprio in maniera "brutale" i passaggi uno dopo l'altro! grazie :)

La precisione della matematica in virgola mobile del C / C++ è elevata , e si possono fare tutti i calcoli che ti servono, però consuma vari kbytes di flash

Cosí non andiamo avanti. Si parla di cosa astratte e poco chiare.

PaoloNotarsanti facci vedere di che equazioni stai parlando. Cosa devi fare di quelle equazioni?

Ciao Uwe

icio: La precisione della matematica in virgola mobile del C / C++ è elevata

Insomma... l'implementazione di avr-gcc supporta solo i float (virgola mobile a 32 bit) con 6/7 cifre. Non vedo questa precisione elevata ;)

, e si possono fare tutti i calcoli che ti servono, però consuma vari kbytes di flash

Se vuoi avere precisione e consumare veramente KB di Flash puoi usare la lib di Nick Gammon, che supporta numeri con un numero di decimali elevato (anche diverse decine se non centinaia di cifre dopo la virgola) ma ti partono veramente KB su KB di memoria.

E mi immagino che il micro ci metta un sacco di tempo per eseguire un calcolo in virgola mobile con quella precisione… :wink:

dovrei aver trovato una soluzione più comoda, io avevo 3 equazioni di ci conferenza del tipo (x-x0)^2+(y-y0)^2=r^2, fare un sistema di 3 equazioni così per trovare il punto di intersezione non è facilissimo e richiede un procedimento abbastanza lungo. Ho visto però che si possono usare gli assi radicali per trovare quel punto, si tratta quindi di due rette, molto più semplice come sistema e quindi come codice da scrivere. grazie a tutti comunque!

@Paolo se trovi la soluzione potresti poi postarla e condividerla? Potrebbe essere d'aiuto a qualcuno in futuro. :)

certo, proverò a svilupparla oggi stesso ;)

Per operazioni su variabili del tipo int64_t come alternativa si può anche usare il compilatore IAR

Janos: E mi immagino che il micro ci metta un sacco di tempo per eseguire un calcolo in virgola mobile con quella precisione... ;)

Non è lentissimo, ma tutto sta alla scala temporale che serve. Se devi risolvere un'equazione anche se aspetti 500 ms la risposta non ti cambia nulla. Ma se devi pilotare un quadricottero, l'aggeggio si può schiantare nel frattempo ;)

Comunque ci sono dei chip addizionali che possono essere affiancati ad una MCU per fargli eseguire i calcoli al posto del chip principale. Sono aggeggi relativamente costosi (quelli che conosco io) ed i dati li scambiano via I2C e altro non sono che MCU appositamente programmate per fare questo genere di operazioni. Cose tipo questo: http://www.robot-italy.com/it/um-fpu-v3-1-floating-point-coprocessor.html

Secondo me non si dovrebbero indicare come FPU perché una vera FPU è un'altra cosa, però penso possano aiutare negli impieghi più gravosi.

Però… simpatico accessorio.

QUESTO è ancora più simpatico … XD

Guglielmo

Non sono riuscito a trovarlo in vendita, trovo solo il chip marchiato V3.1 che è a 32 bit. Era per capire quanto potesse costare.