Domanda

Sono extreamly interessato alla matematica e la programmazione e pianificazione per iniziare matematica simbolica progetto da zero .

  1. E 'questa buona idea di progetto?

  2. Da dove cominciare?

  3. Come ci si deve approccio questo     progetto?

  4. Alcune buone risorse?

Grazie in anticipo.

È stato utile?

Soluzione

  1. E 'un buon progetto per praticare competenze di programmazione. Ma se si vuole creare una vera e propria biblioteca che altre persone vorranno utilizzare questo è un progetto che non vuole iniziare allone e da zero ...

  2. Da dove cominciare: Date un'occhiata alle soluzioni che sono già là fuori e pensare a che cosa è che si vuole fare di diverso. Come sarà il vostro progetto di distinguersi dalle altre?

  3. Resource: SymPy è una libreria Python per la matematica simbolica

Altri suggerimenti

1.Is questa buona idea di progetto?

Sì; Mi aspetterei di fornire una fonte inesauribile di lavoro interessante che sarà, abbastanza rapidamente, testare ed estendere i suoi poteri di programmazione.

2.Where cominciare?

I secondi gli altri suggerimenti che si dovrebbe guardare al lavoro già esistente. SAGE è molto impressionante e se aveste chiesto il mio consiglio che suggerirebbe che voi in primo luogo scrive un sistema di base per fare aritmetica con numeri e simboli; poi dare un'occhiata alla salvia e scrivere un modulo per estendere il sistema, in altre parole diventano un collaboratore di qualcosa di più grande, piuttosto che cercare di fare tutto da soli. Se vuoi anche a Mathematica e Maple, Macsyma e Axiom. Questi ultimi due sono liberi (credo) ma sono tutti ben documentati on-line e una grande fonte di idee e di sfide.

3.How si dovrebbe avvicinarsi a questo progetto?

Come ci si può avvicinare a mangiare un elefante. Un morso alla volta. Più seriamente, penso che ci sono alcune questioni fondamentali, come la rappresentazione di espressioni e alcune funzionalità di base (aritmetica su polinomi), che si potrebbe tagliare i denti su.

4.Any buone risorse?

Un sacco. google per 'Computer Algebra', 'termine riscrittura'. Date un'occhiata a ciò che è disponibile su Amazon. E, se si ha accesso, controllare la biblioteca digitale ACM

In bocca al lupo.

matematica simbolica è un progetto divertente. O se non nessuno lo usa non sembra avere importanza nella sua interrogazione, così immergersi in.

Ho scritto due di questi nel corso degli anni. La più bella è stato uno per SQL in cui clausole - ha fatto alcune manipolazioni simboliche banali sul SQL per piegare in qualche aggiuntivi e condizioni. Non un "risolutore" completa o "ottimizzatore" o qualcosa, a pochi manipolazioni simboliche di qualsiasi clausola SQL WHERE possibile. Quella meno fredda era per un debugger; ha fatto la matematica complessa a lavorare fuori (simbolicamente) impilare offset per le variabili.

Si inizia definendo le classi per gli elementi di un'espressione matematica -. Operandi, operatori, funzioni, etc

Si deve decidere che cosa manipolazioni questi oggetti devono partecipare. Ottenere un valore concreto per l'espressione è facile e ovvio. Inizia con il caso in cui tutte le variabili hanno un legame.

Poi gestire il caso in cui alcune variabili restano non legato, e si può solo valutare le parti dell'espressione.

Poi gestire riorganizzando l'espressione in una forma canonica. Vale a dire, hai fatto una valutazione parziale e hanno Add( Variable(x), Add( Variable(x), Lit(3) ) ). Hai bisogno di scrivere le regole per trasformare questo in Add( Multiply( Lit(2), Variable(x) ), Lit(3) ).

Un esercizio molto cool sta ottimizzando la parentesi in modo che l'output di stampa ha il minor parentesi necessaria per catturare il significato.

Ci sono molti molti altre regole, "espressione di trasformazione" che tutti noi impariamo a scuola per fare manipolazioni algebriche. Molti di loro.

In particolare, riordinando un'equazione per isolare una variabile può essere davvero difficile in alcuni casi.

Fare la trasformazione derivato è facile, ma l'integrazione simbolica è davvero, davvero difficile con una tonnellata di casi particolari.

Le basi sono divertenti. A seconda di quanto si vuole andare, diventa progressivamente più difficile.

@Resources: Si potrebbe dare un'occhiata a pythonica - questo è stato un tentativo di implementare un Mathematica programma di tipo in Python (codice sorgente è disponibile per il download).

pySym blog potrebbe interessarvi anche per ottenere idee e antipasti, e imparare ciò che gli altri stanno facendo con pitone e la matematica simbolica.

di più in termini di risorse: SympyCore :

  

Lo scopo del progetto SympyCore è alla ricerca di nuove soluzioni ad alte prestazioni per rappresentare e manipolare espressioni simboliche nel linguaggio di programmazione Python, e per provare nuovi modelli simbolici per achive modello simbolico fondamentalmente costante e sufficientemente generale che sarebbe facile da estendere a un Algebra System Computer (CAS).

Credo che questo è un grande progetto per un programmatore di qualsiasi livello di abilità. E 'abbastanza facile da fare implementare una calcolatrice simbolica che è solo abbastanza potente per essere utile. Se si continua a lavorare sulla larghezza, ci sono così tante funzioni divertenti da aggiungere che si può occupare con essa per molto tempo. Se si sceglie di andare per la profondità, si trova che le cose presto ottenere molto difficile . È possibile sfidare te stesso a tempo indeterminato, se è quello che ti piace.

Ci sono molte grandi risorse. Vi consiglio il libro "moderna Computer Algebra" di zur Gathen e Gerhard, anche se è davvero più interessato con l'aritmetica in forme speciali (polinomi, interi, matrici) di manipolazione simbolica generale. Quando sei agli inizi, si può effettivamente essere meglio aiutato, cercando in qualche Lisp o Scheme tutorial, perché la matematica simbolica è concettualmente molto semplice da fare in Lisp, e di costruire un motore simbolica in Python avrete più o meno necessario implementare un mini-Lisp come una fondazione.

Come altri hanno fatto notare, si poteva guardare SymPy e sympycore per ispirazione o algoritmi di cemento. Il codice sorgente di entrambi i progetti è un po 'complessa (ma certamente non troppo difficile da imparare da).

(Se posso collegare un po ', ho ha scritto un piccolo motore simbolica un po 'indietro (come un progetto di fine settimana - è molto piccolo e non ho lavorato su di esso da allora) si implementa un motore simbolica generica in circa 200 righe di codice, e poi ci sono 300 linee di codice di esecuzione simbolica. aritmetica e algebra booleana simbolica, con qualche semplificazione molto rudimentale. Forse più facile da scavare nel rispetto SymPy. Ma tutto in c'è cose che si potrebbe facilmente scoprire per te stesso, e possono avere più divertente farlo.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top