Domanda Algebra astratta e programmazione


Ho intenzione di iniziare ad imparare Algebra astratta - Gruppi, Anelli, ecc. Sono interessato a conoscere qualsiasi linguaggio di programmazione, se non altro, che può aiutarmi a imparare / provare i concetti che apprendo in teoria.

EDIT: non sto davvero guardando attuazione cosa imparo Sono interessato a conoscere qualsiasi lingua che già li supporta.


25
2018-02-24 03:28


origine


risposte:


Il testo che vuoi qui è Algebra astratta, un approccio computazionale di Chuck Sims. L'autore raccomanderà di utilizzare il APL linguaggio di programmazione. Il libro è esaurito, ma probabilmente lo troverai nella tua biblioteca.

C'è anche il GAP Computer Algebra System che è divertente da usare per la teoria dei gruppi.

Risorse avanzate:

Magma: abbastanza sofisticato CAS che può gestire una vasta gamma di concetti dall'algebra astratta.
Macaulay 2: usato per studiare gli anelli polinomiali, in particolare Basi Gröbner.
SINGOLARE: usato per studiare gli anelli polinomiali.

Un aspetto chiave nello studio della teoria dei gruppi è che ogni gruppo è isomorfo di a gruppo di permutazione con l'azione regolare. Quindi, la chiave per capire la teoria dei gruppi è capire i gruppi di permutazione.

Infine, qualsiasi linguaggio che supporti la definizione dei propri oggetti e la definizione di un operatore binario su due istanze dell'oggetto supporterà l'apprendimento della teoria attraverso la programmazione.


20
2018-02-24 03:42



Forse una presa leggermente diversa sulla tua domanda, ma comunque ... Il linguaggio funzionale Haskell utilizza concetti di algebra (in particolare teoria delle categorie) come monadi, monoidi, frecce e quant'altro.

Usando i typeclass di Haskell, puoi anche creare qualsiasi oggetto in un gruppo o un anello, ad esempio semplicemente definendo le operazioni (operatori) su di essi. Garantire che le operazioni definite dall'utente siano effettivamente conformi agli assiomi del gruppo / anello sarebbe comunque una sua responsabilità.


32
2018-02-24 04:12



matematica ha molte funzioni utili per trattare concetti in algebra astratta. Sfortunatamente, è un software proprietario e molto costoso. saggio è un'alternativa gratuita, che ha anche un buon repertorio di funzioni di algebra astratta, anche se non l'ho usata in modo estensivo, quindi non posso commentare molto di più.


4
2018-02-24 04:23



Se stai giocando con i gruppi, potresti volerli visualizzare usando Esploratore di gruppo.


4
2017-11-19 21:47



Qualsiasi lingua con numeri interi senza segno di dimensione fissa (ad es unsigned int digitare in C) è un esempio di tale implementazione. L'aggiunta con valori senza segno è essenzialmente la stessa aggiunta su Z232 (cioè gli interi modulo 232), che probabilmente stai imparando nella tua classe di algebra astratta.

L'aggiunta modulare su un gruppo di questo tipo non è però terribilmente interessante. Più interessante potrebbe essere l'aggiunta modulare su un gruppo di dimensioni N dove N ha fattori primi diversi da solo 2, o dimensione P dove P è un numero primo. Per sperimentare con tali gruppi, potrebbe essere necessario implementare tali operazioni aritmetiche da soli (non è difficile). Le lingue con sovraccarico dell'operatore possono rendere l'implementazione molto più comoda da utilizzare.


3
2018-02-24 03:34



Usa la lingua che ha più senso per te. L'algebra astratta contiene un sacco di manipolazione dei simboli (spingere simboli) e riscrittura, una modesta quantità di induzione e una buona dose di noioso. Per me sembra una programmazione logica o funzionale; Epigram e Agda fanno un po 'di questo, e Haskell lo fa (anche se non sono d'accordo che il monoide sia corretto, mzero e mappend ok, mconcat: bad). Per l'algebra astratta, il miglior linguaggio di programmazione è Definizione notebook e tonnellate di carta. Anche se questo sta diventando piuttosto esoterico in questi giorni.


3
2018-03-12 13:03



Hmm ... mi spiace dirlo ma non penso sia efficace imparare un nuovo linguaggio di programmazione elaborato per aiutarti ad imparare l'algebra astratta.

Sì, gli Haskeller amano parlare di teoria delle categorie, ma questo non è davvero un buon punto di partenza.

GAP e co. sono usati per aiutare i teorici del gruppo cresciuti a trovare nuovi "mostri" - sono cattivi strumenti per imparare la teoria dei gruppi.

Forse puoi dare un'occhiata a questo: http://freecomputerbooks.com/mathAlgebraBooks.html - Ci sono molti libri gratuiti su questo argomento.


3
2018-04-14 05:34



È un po 'sorprendente che finora nessuno abbia menzionato Cacao (un acronimo per Computations in Commutative Algebra), un link al sito principale: http://cocoa.dima.unige.it/  dove è possibile scaricare il più recente CoCoA 5.0 per le principali piattaforme (Linux, MacOS X, Windows), (può anche essere trovato un utile manuale per CoCoA 4.7, per 5.0 deve essere aggiornato).
Un sistema di algebra al computer liberamente disponibile (scritto in C) in fase di sviluppo da oltre 20 anni. Il suo obiettivo sono le applicazioni scientifiche professionali, tra cui i calcoli basati su Gröbner, la fattorizzazione polinomiale, l'algebra lineare esatta, le funzioni di Hilbert, gli ideali torici, ecc.

Ci sono buone monografie come Computational Commutative Algebra (2 vol.) Di Kreutzer e Robbiano che si occupano di CoCoA: http://cocoa.dima.unige.it/kr/ 

Nel campo dell'algebra commutativa ha funzionalità più avanzate e specializzate rispetto a Mathematica, sebbene in M ​​ci siano capacità brillanti (assenti in CoCoA) per l'eliminazione del quantificatore (utile per gestire sistemi di equazioni polinomiali e disuguaglianze): http://www.wolfram.com/learningcenter/tutorialcollection/AdvancedAlgebra/.


2
2017-11-08 21:30