Pergunta

Estou extreamly interessado em matemática e programação e planejamento para começar matemática simbólica projecto a partir do zero .

  1. É esta idéia bom projeto?

  2. Por onde começar?

  3. Como se deve abordar este projeto?

  4. Qualquer bons recursos?

Agradecemos antecipadamente.

Foi útil?

Solução

  1. É um projeto bom para habilidades de programação prática. Mas se você quiser criar uma biblioteca real que as outras pessoas vão querer usar este é um projeto que você não quer começar allone e partir do zero ...

  2. Por onde começar: Tenha um olhar para as soluções que já estão lá fora e pensar sobre o que é que você quer fazer diferente. Como seu projeto difere dos outros?

  3. Resource: SymPy é uma biblioteca Python para matemática simbólica

Outras dicas

1.Is essa idéia bom projeto?

Sim; Eu esperaria que fornecem uma fonte inesgotável de trabalho interessante, que irá, muito rapidamente, testar e estender seus poderes de programação.

2. Quando começar?

Eu segundo as outras sugestões que você deve olhar para o trabalho existente. SAGE é muito impressionante e se você pediu para o meu conselho que eu sugiro que você em primeiro lugar escrever um sistema básico para fazer aritmética com números e símbolos; em seguida, ter um olhar para SAGE e escrever um módulo para estender o sistema, em outras palavras, se tornar um contribuinte para algo maior, em vez de tentar fazer tudo em seu próprio país. Veja também a Mathematica e Maple, Macsyma e Axiom. O último 2 são livres (eu acho), mas todos eles são bem documentado on-line e uma grande fonte de idéias e desafios.

3.How deve-se abordar este projeto?

Como seria de se aproximar de comer um elefante. Uma mordida de cada vez. Mais a sério, eu acho que há algumas questões fundamentais, como a representação de expressões, e algumas funcionalidades básicas (aritmética em polinômios) que você poderia cortar seus dentes em.

recursos 4.Any bons?

Os lotes e os lotes. Google por 'álgebra computacional', 'termo reescrever'. Ter um olhar para o que está disponível na Amazon. E, se você tem acesso, consulte a biblioteca digital ACM

Boa sorte.

matemática simbólica é um projeto divertido. Quer ou não alguém usa não parece ter importância na sua pergunta, então mergulho na.

Eu escrevi dois destes ao longo dos anos. O mais legal foi um para SQL onde cláusulas - ele fez algumas manipulações simbólicas triviais sobre o SQL para dobrar em alguns adicionais e condições. Não é um "solucionador" completa ou "otimizador" ou qualquer coisa, apenas algumas manipulações simbólicas de qualquer cláusula SQL where possível. Quanto menos se refrescar foi para um depurador; ele fez matemática complexa para trabalhar fora (simbolicamente) offsets pilha para variáveis.

Você começar pela definição de classes para os elementos de uma expressão matemática -. Operandos, operadores, funções, etc

Você tem que decidir o que manipulações esses objetos têm que participar. Obtendo um valor concreto para uma expressão é fácil e óbvia. Comece com o caso em que todas as variáveis ??têm uma ligação.

Em seguida, tratar o caso quando algumas variáveis ??permanecem soltos, e você só pode avaliar partes da expressão.

Em seguida, lidar com reorganizando uma expressão em uma forma canônica. Ou seja, você fez uma avaliação parcial e têm Add( Variable(x), Add( Variable(x), Lit(3) ) ). Você precisa escrever regras para transformar isso em Add( Multiply( Lit(2), Variable(x) ), Lit(3) ).

Um exercício muito legal é otimizar o parêntese para que a saída impressa tem o parêntese menor número necessário para capturar o sentido.

Existem muitas, muitas outras regras "transformação expressão" que todos nós aprendemos na escola para fazer manipulações algébricas. Muitos deles.

Em particular, reorganizando uma equação para isolar uma variável pode ser muito difícil em alguns casos.

Fazendo a transformação derivado é fácil, mas a integração simbólica é muito, muito difícil com uma tonelada de casos especiais.

O básico é divertido. Dependendo de quão longe você quer ir, ele fica progressivamente mais difícil.

@Resources: Você poderia dar uma olhada pythonica - esta foi uma tentativa de implementar um Mathematica -tipo programa em Python (código-fonte está disponível para download).

Este pySym Blog também possam interessar para obter idéias e começar, e aprender o que os outros estão fazendo com python e matemática simbólica.

Mais no caminho de recursos: SympyCore :

O objetivo do projeto SympyCore é procurar novas soluções de alta performance para representar e manipular expressões simbólicas na linguagem de programação Python, e para experimentar novos modelos simbólicos para achive modelo simbólico fundamentalmente consistente e suficientemente geral que seria fácil estender-se a um sistema de álgebra computacional (CAS).

Eu penso que este é um grande projeto para um programador de qualquer nível de habilidade. É muito fácil de fazer implementar uma calculadora simbólica que é apenas o suficiente poderoso para ser útil. Se você continuar a trabalhar em amplitude, há tantos divertimento caracteriza a acrescentar que você pode ocupar-se com ele por um longo tempo. Se você optar por ir para a profundidade, você vai achar que as coisas logo se muito difícil . Você pode desafiar-se indefinidamente, se é isso que você gosta.

Há muitos grandes recursos. Eu recomendo o livro "Álgebra Computer Modern" por zur Gathen e Gerhard, embora seja muito mais preocupado com a aritmética em formas especiais (polinômios, números inteiros, matrizes) do que a manipulação simbólica geral. Quando você está começando, você pode realmente ser melhor ajudado por olhar para alguns Lisp ou Scheme tutorial, porque a matemática simbólica é conceitualmente muito simples de fazer em Lisp, e para construir um motor simbólico em Python você vai mais ou menos tem que implementar uma mini-Lisp como uma fundação.

Como outros apontaram, você pode olhar para SymPy e sympycore para inspiração ou algoritmos de concreto. O código fonte para qualquer projeto é um pouco complexo (mas certamente não muito difícil de aprender).

(Se eu possa ligar um pouco, eu escreveu um pequeno motor simbólica um tempo atrás (como um projeto de fim de semana - é muito pequena e eu não ter trabalhado nele desde então) ele implementa um mecanismo simbólico genérico em cerca de 200 linhas de código, e em seguida, existem 300 linhas de código execução simbólica. aritmética e álgebra booleana simbólico, com alguma simplificação muito rudimentar. Talvez mais fácil de escavar em que SymPy. Mas tudo em que há coisas que você pode facilmente descobrir por si mesmo, e pode ter mais divertido fazê-lo.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top