Curso de ciência da computação "Estudo das capacidades da biblioteca de pacotes do sistema Maxima para resolução de problemas matemáticos especiais." Sistema de comando, cálculos no Maxima Histórico de valores das propriedades do sistema Maximo

18.11.2023

Todos os comandos são inseridos no campo ENTER, o separador de comandos é um símbolo; (ponto e vírgula). Após inserir o comando, você deve pressionar a tecla Enter 2 EM wxMaxima você precisa pressionar Shift + Enter. para processá-lo e gerar o resultado. Em versões anteriores Máxima e algumas de suas conchas (por exemplo, xMaxima) a presença de ponto e vírgula após cada comando é estritamente necessária. Terminar a entrada com um símbolo $ (em vez de ponto e vírgula) permite calcular o resultado do comando inserido, mas não o exibe na tela. Caso a expressão precise ser exibida e não calculada, ela deve ser precedida do sinal " (aspas simples). Mas este método não funciona quando a expressão tem um valor explícito, por exemplo, a expressão é substituída por um valor igual a zero.

Duas aspas simples consecutivas aplicadas a uma expressão em uma string de entrada fazem com que a string de entrada seja substituída pelo resultado da avaliação da expressão de entrada.

Exemplo:

(%i3) sqrt(aa)+bb;

(%i4) "(sqrt(aa)+bb);

2.5.1 Notação de comandos e resultados de cálculos

Após entrar, cada comando recebe um número de série. No exemplo considerado, os comandos inseridos são numerados de 1 a 5 e designados de acordo (%i1), (%i2), etc.

O resultado do cálculo também possui um número de série, por exemplo etc., onde eu- abreviatura do inglês. entrada (entrada) e Ó- Inglês saída. Este mecanismo permite evitar a repetição do registro completo dos comandos já executados em cálculos subsequentes, por exemplo (%i1)+(%i2) significará adicionar à expressão do primeiro comando a expressão do segundo e posterior cálculo do resultado . Você também pode usar números de resultados de cálculo, por exemplo . Maxima possui uma notação especial para o último comando executado - .

Exemplo:

Calcule o valor da derivada de uma função :

(%i1) diferença(x^2*exp(-x),x);

(%i2)f(x):=""%;

As aspas duplas antes do caractere da operação anterior permitem substituir esse caractere por um valor, ou seja, string de texto obtida como resultado da diferenciação.

Outro exemplo (com conteúdo óbvio):

2.6 Números, operadores e constantes

2.6.1 Inserindo informações numéricas

Regras para inserir números em Máxima exatamente o mesmo que para muitos outros programas semelhantes. As partes inteiras e fracionárias das frações decimais são separadas pelo símbolo de ponto. Os números negativos são precedidos por um sinal de menos. O numerador e o denominador das frações ordinárias são separados pelo símbolo / (barra). Observe que se o resultado de uma operação for uma determinada expressão simbólica, mas você precisar obter um valor numérico específico na forma de uma fração decimal, o uso do sinalizador permitirá que você resolva esse problema. Em particular, permite passar de frações ordinárias para decimais. A conversão para a forma de ponto flutuante também é realizada pela função.

(%i2) 3/7+5/3, flutuante;

(%i3) 3/7+5/3, número;

(%i4) float(5/7);

2.6.2 Operações aritméticas

Notação de operações aritméticas em Máxima não é diferente da representação clássica: + , - , * , /. A exponenciação pode ser denotada de várias maneiras: ^, ^^, **. Extrair uma raiz de grau n é escrito como grau. A operação de encontrar um fatorial é indicada por um ponto de exclamação, por exemplo 5!. Para aumentar a prioridade de uma operação, como na matemática, são usados ​​​​parênteses: (). A lista de operadores aritméticos e lógicos básicos é fornecida na tabela. 2.1 e tabela. 2.2 abaixo.

Tabela 2.2. Operadores lógicos
< operador de comparação menor que
> operador de comparação maior que
<= operador de comparação menor ou igual a
>= operador de comparação maior ou igual a
# operador de comparação diferente
= operador de comparação é igual
e operador lógico e
ou operador lógico ou
não operador lógico não

O sistema matemático computacional Maxima é um verdadeiro veterano entre os programas desta classe. Ela é pelo menos duas décadas mais velha do que muitos de seus famosos colegas comerciais. Originalmente denominado Macsyma, foi criado no final da década de 1960 no famoso Massachusetts Institute of Technology e foi apoiado durante quase 20 anos (de 1982 a 2001) por Bill Schelter, graças a quem adquiriu notáveis ​​qualidades e fama no mundo científico. Detalhes sobre o histórico do sistema, o módulo de instalação (apenas 10 MB de tamanho), documentação, código-fonte e outras informações relacionadas podem ser encontrados no site do pacote. A versão atual (5.9.0) roda em Windows e Linux.

Apesar do seu tamanho modesto, o Maxima é um produto altamente inteligente, capaz de resolver problemas analíticos complexos. Como a maioria dos sistemas matemáticos computacionais, é um interpretador de comandos que interage com o usuário com base em perguntas e respostas. Portanto, a área de trabalho do sistema é uma sequência de células de entrada/saída (Fig. 1), marcadas com um rótulo (C para entrada do usuário, D para resultado) e um número. Essa notação fornece um mecanismo de link conveniente que permite inserir apenas o nome da célula desejada para acessar um dos resultados anteriores.

Operações Numéricas

Arroz. 1
Quaisquer que sejam as expressões com as quais Maxima trabalha, ela sempre se esforça para apresentar os resultados de uma forma analítica precisa. Isso se aplica totalmente a cálculos numéricos. Por exemplo, se você inserir a expressão na linha de comando 1/2+1/3 , então o resultado será 5/6 . Para obter o valor como um número de ponto flutuante, você deve especificá-lo explicitamente. A maneira mais simples é especificar um descritor especial número separados por vírgulas após a expressão inserida.

Para cálculos com alta precisão, Maxima suporta operadores especiais que permitem calcular qualquer valor com uma grade de bits arbitrária (dentro dos limites, é claro, das capacidades do hardware). Isto também se aplica a números inteiros: seu valor no sistema não é limitado por software. Além disso, Maxima possui uma velocidade bastante decente de trabalho com aritmética de alta precisão, o que permite realizar cálculos com números inteiros de dezenas e centenas de milhares de dígitos com desempenho ao nível dos melhores sistemas comerciais.

Note que o Maxima adota uma abordagem sensível a maiúsculas e minúsculas para expressões de entrada. Se sua aparência estiver próxima do nome de uma função integrada, o programa usará esta função. De acordo com esta regra Pecado, pecado E PECADO significa a mesma coisa. No entanto, variáveis ​​e funções de usuário diferenciam maiúsculas de minúsculas - X E x pode representar objetos diferentes.

O sistema também suporta aritmética complexa e uma série de constantes matemáticas conhecidas.


Operações Analíticas

A capacidade de realizar operações e transformações analíticas complexas foi, obviamente, a principal característica do produto que garantiu o sucesso do Maxima entre os especialistas. Isto inclui operações de análise padrão (diferenciação, integração, cálculo de limites), representação de expressões em forma expandida, expansão de funções em séries, simplificações, transformações, substituições, etc. Assim, é possível encontrar derivadas parciais e ordinárias de qualquer ordem, integrais podem ser ordinárias e múltiplas, o infinito é permitido como limites de integração, etc. Como sempre, o programa se esforçará para representar todos os valores calculados em um forma fechada (exata).

Se não for possível obter um resultado inequívoco para a expressão inserida, o programa fará perguntas importantes em linguagem quase natural (inglês). Por exemplo, ao tentar encontrar a integral da função x n Maxima irá esclarecer se é igual n+1 zero (como se sabe, o resultado depende significativamente disso). Porém, tais questões podem ser evitadas se você especificar antecipadamente, por meio de operadores especiais, a possibilidade de alteração dos parâmetros e variáveis ​​​​utilizados.

A ferramenta analítica também suporta operações algébricas com polinômios (divisão de dois polinômios, cálculo do máximo divisor comum, fatoração) e expressões trigonométricas. Para aplicações práticas, as ferramentas integradas ao sistema para resolução de equações e sistemas de diversos tipos - algébricos, transcendentais e diferenciais - desempenham um papel importante.


Operações de álgebra linear

Maxima implementa um mecanismo de operações de matriz vetorial muito avançado que permite cálculos algébricos complexos. Matrizes são introduzidas pelo operador universal matriz, então as operações lineares usuais são aplicadas a eles - adição, subtração, multiplicação por um escalar (para escrevê-los, use notação matemática natural como A+B), bem como transposição, inversão, cálculo de determinantes, características espectrais, etc.


Capacidades gráficas

Um moderno sistema matemático computacional de tipo universal deve ter desenvolvido capacidades de visualização de dados. Eles também estão disponíveis no Maxima. Os gráficos do sistema são construídos usando duas funções - PLOT2D (bidimensional, Fig. 2) e PLOT3D (tridimensional, Fig. 3). Apesar dessa escolha relativamente limitada, essas ferramentas permitem exibir gráficos de diferentes tipos em um plano e no espaço com configurações bastante precisas - usando operadores especiais ou argumentos de função, você define o número de nós da grade nos quais o gráfico necessário é construído, dados gamas, cores e outras características. Além disso, você pode usar configurações interativas para alterar rapidamente a espessura das linhas, girar uma superfície tridimensional, etc. A escolha dos formatos de exportação do Maxima é muito restrita: os desenhos no programa são salvos, na verdade, apenas em PostScript. Em geral, as ferramentas visuais do sistema são relativamente modestas, embora possibilitem a obtenção de alguns tipos de gráficos de alta qualidade.


Ferramentas de programação

Como qualquer sistema matemático computacional, Maxima permite criar programas complexos e utilizá-los em problemas que podem ser difíceis e ineficientes de resolver usando a linha de comando.

No caso mais simples, uma função personalizada é definida diretamente na linha de comando

MinhaFunc(x,y):=x^2+y^2;

Então MinhaFunc pode ser usado junto com os integrados. Naturalmente, o sistema também suporta projetos mais complexos. O corpo de uma função permite operadores para ramificação, looping, entrada/saída, etc. A linguagem de programação no Maxima possui algumas características, a mais importante das quais é que o número de argumentos da função não precisa ser fixo. A outra consiste em ferramentas extremamente flexíveis para trabalhar com arrays, raramente encontradas não apenas em linguagens tradicionais, mas também em sistemas especializados, incluindo SCM. Aqui estão alguns exemplos retirados do mesmo manual (os dois pontos no Maxima significam atribuição):
uma:4*você;
a:%PI;
a[x]:mistério;

Todos os operadores estão corretos e definem coletivamente uma matriz cujos índices são números 4 , 22/7 e barbante "x", e os valores dos elementos são a expressão 4*você, o número π (no Maxima é escrito como %PI) e uma sequência de caracteres "mistério". Assim, quase qualquer expressão pode atuar tanto como um elemento de array quanto como seu índice. As propriedades originais do Maxima não estão limitadas a estas características (por exemplo, até mesmo matrizes de funções são suportadas), mas não nos deteremos em detalhes.

Em geral, Maxima é escrito em Lisp e suporta diretamente muitos dos seus comandos. Podemos dizer que Lisp é o núcleo do sistema e pode ser acessado durante a programação de “baixo nível”. No entanto, na maioria dos casos, isso não é necessário. Maxima fornece um número suficiente de ferramentas prontas que são muito mais fáceis de usar do que os operadores Lisp.

Se necessário, os programas são salvos em arquivos externos. Os comandos são escritos da mesma forma em que são inseridos no sistema, existem apenas alguns recursos para o design das funções;

Cuidando do usuário

Além da documentação disponível no site do produto, o pacote inclui uma introdução ao Maxima e um tutorial sobre o sistema (ambos em formato HTML) - uma descrição detalhada suficiente para uma introdução aprofundada de todas as suas capacidades. No entanto, durante uma sessão de trabalho com o sistema, muitas vezes é necessário obter ajuda online. Para isso o Maxima fornece uma função DESCREVER(), que exibe informações detalhadas sobre o operador de interesse do usuário (que é passado a ele como argumento). Não importa se você não se lembra da sintaxe completa, digite as primeiras letras do nome - e o Maxima retornará todos os nomes disponíveis começando com esta combinação de caracteres. Se esta informação não for suficiente, você pode usar a função EXEMPLO(), que oferecerá exemplos típicos. As funções da mesma série incluem DEMONSTRAÇÃO(), que executa programas a partir dos arquivos de demonstração fornecidos com o sistema. Gostaria de destacar um recurso do sistema como a capacidade de apresentar resultados de cálculos no formato TeX usando uma função chamada -- TEX().


conclusões

Esperamos que após este breve material, os leitores ainda tenham uma ideia do Maxima como um sistema verdadeiramente profissional projetado para resolver problemas numéricos e analíticos complexos, bem como apresentação gráfica de dados. Especialmente, como observado no início, o programa é forte em cálculos analíticos e aritmética de alta precisão. É claro que o Maxima está longe de ser perfeito e, em muitos aspectos, fica aquém de produtos comerciais como Maple e Mathematica. No entanto, isto não diminui as suas vantagens - o Maxima pode ser usado tanto para fins educacionais como como plataforma para desenvolvimentos científicos bastante sérios.

0

O sistema Maxima possui muitas funções integradas. Cada função integrada pode ser descrita na documentação contida no sistema de ajuda. A ajuda pode ser acessada usando a tecla de função F1. Maxima também possui uma função especial que fornece informações da documentação para palavras específicas. Uma versão abreviada desta chamada de função: ?? nome (Fig. 12). Aqui?? é o nome do operador e o argumento deve ser separado dele por um espaço. Operador?? exibe uma lista das seções de ajuda e nomes de funções que contêm o texto especificado, após a qual eles solicitam que você insira o número da seção ou a descrição da função que deseja consultar:

Figura 12. Chamando ajuda em um comando de interesse do sistema Maxima

Note que no sistema Maxima não existe uma distinção clara entre operadores e funções. Além disso, cada instrução é na verdade uma função.

Todas as funções e operadores do Maxima funcionam não apenas com números reais, mas também com números complexos. Os próprios números complexos são escritos em forma algébrica, com a unidade imaginária denotada por %i; isto é, na forma a+b*%i, onde A E b são as partes reais e imaginárias de um número, respectivamente.

Vamos considerar sintaxe de função básica Sistemas Maxima.

1. Operadores aritméticos: + , -, *, /, -->. Exemplo:

3. Operadores lógicos: e, ou, não. Exemplo:

4. Função para encontrar o fatorial de um número: !

O fatorial é dado na forma mais geral e é, na verdade, uma função gama (mais precisamente, x! = gama(x+1)), ou seja, é definido no conjunto de todos os números complexos, exceto os inteiros negativos. O fatorial de um número natural (e zero) simplifica automaticamente para o mesmo número natural.

5. A função para encontrar o semifatorial é: !! (o produto de todos os números pares (para um operando par) ou ímpares menores ou iguais ao dado).

6. Função de negação de igualdade sintática: # A notação a#b é equivalente a not a=b.

7. Função para encontrar o módulo de um número x: abs(x) O módulo é definido para todos os números complexos. Exemplo:

8. Função que retorna o sinal do número x: signum(x)

9. Funções que retornam os maiores e menores valores de determinados números reais: max(x1,...,xn) e min(x1,...,xn).

10. Algumas funções matemáticas integradas:

quadrado(x) Raiz quadrada de x
acos(x) Arco cosseno do argumento x
acosh (x) Arco hiperbólico cosseno de x
um berço (x) Arcotangente do argumento x
acoth(x) Arco hiperbólico cotangente do argumento x
acsc(x) Arcossecante do argumento x
acsch(x) Arcossecante hiperbólico do argumento x
assec(x) Arco secante do argumento x
asech(x) Arco secante hiperbólico do argumento x
asin(x) Arco seno do argumento x
asinh(x) Arco seno hiperbólico do argumento x
atan (x) Arco tangente do argumento x
atanh (x) Arco tangente hiperbólico do argumento x
cosh(x) Cosseno hiperbólico do argumento x
coto(x) Cotangente hiperbólica do argumento x
csc(x) Cosecante do argumento x
csch(x) Cosecante hiperbólica do argumento x
segundo(x) Secante do argumento x
sech(x) Secante hiperbólica do argumento x
pecado (x) Seno de x
sinh(x) Seno hiperbólico de x
bronzeado (x) Tangente x
tanh(x) Tangente hiperbólica do argumento x
registro(x) Logaritmo natural de x
exp(x) Expoente x

11. Funções para trabalhar com matrizes:

determinante – encontrar o determinante de uma matriz:

autovalores – encontrando os autovalores da matriz:

invertido– obtenção da matriz inversa:

menor– define o menor da matriz. O primeiro argumento é uma matriz, o segundo e

o terceiro são os índices de linha e coluna, respectivamente:

classificação– classificação da matriz:

submatriz– retorna a matriz obtida do original removendo

linhas e/ou colunas correspondentes. Os parâmetros são:

número de linhas a serem excluídas, matriz original, número de colunas a serem excluídas.

transpor– transposição de matriz:

A linguagem do sistema Maxima contém os operadores executáveis ​​básicos que são encontrados em qualquer linguagem de programação. Vamos dar uma olhada neles.

Operadores de atribuição de valor (expressões de nomenclatura).

1. Operador “:” (operador para definir o valor de uma variável).

2. Operador “:=” (operador para especificar uma função do usuário).

3.Versões estendidas de operadores de atribuição e de atribuição de função, denotados respectivamente por:: e::=.

Usar o operador de conjunto de funções do usuário torna o trabalho muito mais fácil porque você pode consultá-lo pelo nome e calcular de maneira fácil e conveniente o valor da função em determinados pontos.

Exemplo: encontre o valor de uma função f (x,y)=cosx + pecado sim no ponto

Operador de loop. O operador de loop pode ser especificado de diversas maneiras. O método de especificação depende se é conhecido antecipadamente quantas vezes o corpo do loop precisa ser executado.

Exemplo: Configurando um loop para exibir os valores de uma variável A na faixa de -3 a 10 em passos de 5:

A próxima característica importante do sistema Maxima é trabalhando com listas e arrays.

Para gerar listas, use o comando makelist. Por exemplo, usando o comando

formamos uma lista chamada x, composta por dez elementos, cujos valores são encontrados pela fórmula.

Para formar arrays, use o comando array. Por exemplo, usando o comando,

formamos um array bidimensional A composto por 10 linhas e 5 colunas. Para preencher o array com elementos, usaremos um loop com um parâmetro. Por exemplo,

Para exibir os elementos do array na tela, você pode usar o comando:

Um array pode ser formado sem declaração prévia. No exemplo a seguir, formamos um array unidimensional x, composto por 5 elementos, cujos valores são calculados usando a fórmula x( eu)=pecado eu

A desvantagem de trabalhar com arrays é que os valores dos elementos do array são exibidos em uma coluna. É muito mais conveniente se os valores de uma matriz (bidimensional) forem exibidos na forma de uma matriz. Para esses fins, você pode usar o comando genmatrix. Por exemplo, para gerar uma matriz bidimensional (matriz), você deve especificar um comando no seguinte formato:

Vamos gerar o array resultante:

6. As transformações mais simples de expressões.

Por padrão, a função Autosimplificação está ativa no sistema Maxima, ou seja, o sistema tenta simplificar a própria expressão inserida sem qualquer comando.

Exemplo. Suponha que você precise encontrar o valor da seguinte expressão numérica:

Vamos definir a expressão de acordo com as regras da linguagem do sistema Maxima.

Como você pode ver, o sistema respondeu com o valor da expressão, embora não tenhamos especificado nenhum comando.

Como você pode forçar o sistema a produzir não o resultado, mas a própria expressão? Para isso, a função de simplificação deve ser desabilitada através do comando simp: false$. Então obtemos:

Para ativar a função de simplificação, você deve especificar o comando simp:true$. A função autosimplify pode funcionar com expressões numéricas e algumas não numéricas. Por exemplo,

Ao entrar, podemos referir-nos a qualquer uma das células anteriores pelo seu nome, substituindo-o em quaisquer expressões. Além disso, a última célula de saída é indicada por% e a última célula de entrada é indicada por _. Isso permite que você consulte o último resultado sem se distrair com seu número. Mas não se deve abusar de tais chamadas para células, pois ao reavaliar todo o documento ou suas células de entrada individuais, pode ocorrer uma discrepância entre os números das células.

Exemplo. Encontre o valor da expressão e aumente o resultado em 5 vezes.

É aconselhável usar variáveis ​​em vez de nomes de células e atribuir seus nomes a quaisquer expressões. Neste caso, qualquer expressão matemática pode atuar como o valor da variável.

Os valores dos nomes das variáveis ​​​​são preservados durante todo o trabalho com o documento. Lembremos que se for necessário retirar a definição de uma variável, isso pode ser feito através da função kill(name), onde name é o nome da expressão a ser destruída; além disso, pode ser um nome atribuído por você ou qualquer célula de entrada ou saída. Da mesma forma, você pode limpar toda a memória e liberar todos os nomes digitando o comando kill(all) (ou selecionando o menu Makhta->Limpar memória(Limpar memória)). Neste caso, todas as células de E/S também serão apagadas e sua numeração começará novamente a partir de um.

A função autosimplify nem sempre é capaz de simplificar uma expressão. Além dele, há uma série de comandos projetados para trabalhar com expressões: racionais e irracionais. Vejamos alguns deles.

rato (expressão) - transforma uma expressão racional para a forma canônica: abre todos os colchetes, depois traz tudo para um denominador comum, soma e reduz; converte todos os números em notação decimal finita em números racionais. A forma canônica é automaticamente “cancelada” no caso de quaisquer transformações que não sejam racionais

ratsimp (expressão) - simplifica uma expressão através de transformações racionais. Também funciona “em profundidade”, ou seja, as partes irracionais da expressão não são consideradas como atômicas, mas são simplificadas, incluindo todos os elementos racionais dentro delas

fullratsimp(expression) - uma função para simplificar uma expressão racional aplicando sequencialmente a função ratsimp() à expressão passada. Devido a isso, a função é um pouco mais lenta que ratsimp(), mas fornece um resultado mais confiável.

expandir (expressão) - expande os parênteses em uma expressão em todos os níveis de aninhamento. Ao contrário da função rateexpand(), ela não reduz as frações a um denominador comum.

radcan(expressão) - uma função para simplificar funções logarítmicas, exponenciais e de potência com expoentes racionais não inteiros, ou seja, raízes (radicais).

Muitas vezes, quando você tenta simplificar uma expressão no Maxima, na verdade isso só pode torná-la mais complexa. Um aumento no resultado pode ocorrer pelo fato de não se saber quais valores as variáveis ​​​​incluídas na expressão podem assumir. Para evitar isso, você deve colocar restrições nos valores que uma variável pode assumir. Isso é feito usando a função assume(condição). Portanto, em alguns casos, o melhor resultado pode ser alcançado combinando radcan() com ratsimp() ou fullratsimp().

Operador de loop

O operador de loop pode ser especificado de diversas maneiras. O método de especificação depende se é conhecido antecipadamente quantas vezes o corpo do loop precisa ser executado.

Exemplo: montando um loop para exibir os valores da variável a no intervalo de -3 a 10 em passos de 5:

Exemplo: um loop para encontrar a soma de todos os números naturais até 50 inclusive:

A próxima característica importante do sistema Maxima é trabalhando com listas e arrays.

Para gerar listas, use o comando makelist. Por exemplo, usando o comando

formamos uma lista chamada x, composta por dez elementos, o valor

Para formar arrays, use o comando array. Por exemplo, usando o comando,

formamos um array bidimensional A composto por 10 linhas e 5 colunas. Para preencher o array com elementos, usaremos um loop com um parâmetro. Por exemplo,

T. N. Gubina, E.V. Andropova

Para exibir os elementos do array na tela, você pode usar o comando:

Um array pode ser formado sem declaração prévia. No exemplo a seguir, formamos um array unidimensional x, composto por 5 elementos, cujos valores são calculados pela fórmula x i = sin i.

A desvantagem de trabalhar com arrays é que os valores dos elementos do array são exibidos em uma coluna. É muito mais conveniente se os valores de uma matriz (bidimensional) forem exibidos na forma de uma matriz. Para esses fins, você pode usar o comando genmatrix. Por exemplo, para gerar uma matriz bidimensional (matriz), você deve especificar um comando no seguinte formato:

Vamos gerar o array resultante:

1.7. Gerenciando o processo de cálculo no Maxima

O sistema matemático computacional Maxima pertence aos sistemas matemáticos simbólicos. Portanto (por padrão) o sistema produz o resultado em forma simbólica. Ou seja, se você não especificar um comando especial, o sistema

Capítulo 1 Noções básicas de trabalho no sistema matemático computacional Maxima

nunca apresentará os resultados obtidos durante os cálculos na forma de um número real aproximado. Por exemplo, se inserirmos command2 na célula de entrada, obteremos:

Caso haja necessidade de apresentar o resultado obtido durante os cálculos na forma de um número real, então neste caso é necessário dar um comando especial ao sistema. Por exemplo, você pode fazer isso: se quiser obter um valor aproximado de 2, selecione o item de menu Cálculos numéricos→Para flutuar(para um único número de precisão) (ou Para BigFloat

(em um número de precisão dupla)). O resultado ficará assim:

O sinal “%” no Maxima é utilizado para se referir ao resultado obtido na última sessão. Isto pode ser conveniente se não houver necessidade de inserir variáveis ​​de usuário e depois usar os valores resultantes.

Para controlar o processo de cálculo, os chamados "bloqueios de computação". O bloqueio é feito usando um único apóstrofo. Sua essência:

se você colocar um apóstrofo antes do nome de uma função ou variável, o cálculo da própria função (mas não de seus argumentos) ou variável será bloqueado;

se você colocar um apóstrofo antes de uma expressão entre colchetes, então toda a expressão, ou seja, todas as funções incluídas nela e todos os argumentos dessas funções, permanecerão não calculados.

Por exemplo, vamos definir uma função f x e comparar os resultados obtidos ao tentar calcular o valor da função no ponto x = 0.

Como podemos ver, o sinal do apóstrofo bloqueou a tentativa de calcular o valor da função no primeiro caso.

Outro exemplo:

T. N. Gubina, E.V. Andropova

Ao contrário de bloquear cálculos, usando dois caracteres de apóstrofo, pelo contrário, você pode forçar o sistema a realizar cálculos - "cálculo forçado". Por exemplo,

Como você pode ver, o sistema recusou-se a calcular a integral, embora não tenhamos dado o comando para bloquear os cálculos. Se colocarmos um apóstrofo duplo antes do comando, obteremos o seguinte resultado:

Por favor note que no sistema Maxima, por padrão, todos os ângulos são medidos em radianos. Portanto, se você precisar trabalhar com ângulos em graus, precisará lembrar a fórmula para converter radianos em graus.

Na terminologia Maxima, a forma não avaliada de uma expressão é chamada “forma substantiva”, a forma avaliada é chamada “forma verbal”.

O próximo ponto importante ao trabalhar em sistemas matemáticos computacionais é a capacidade de substituir os valores de variáveis ​​​​ou partes de expressões em funções e expressões. Vejamos alguns dos recursos do sistema fornecidos para esses fins.

Por exemplo, é necessário substituir um valor específico na expressão cos x 4sin x − x em vez das variáveis ​​x, por exemplo, .

Capítulo 1 Noções básicas de trabalho no sistema matemático computacional Maxima

Assim, o comando subst permite substituir os valores de qualquer variável em uma expressão. Na verdade, existem vários comandos para substituir valores em uma expressão ou função no Maxima.

1.8. Transformações de expressão simples

Por padrão, a função Autosimplificação está ativa no sistema Maxima, ou seja, o sistema tenta simplificar a própria expressão inserida sem qualquer comando.

Exemplo. Seja necessário encontrar o valor da seguinte expressão numérica

1 1− 4

entradas: 2 1 4 4 5 7 .

Vamos definir a expressão de acordo com as regras da linguagem do sistema Maxima.

Como você pode ver, o sistema respondeu com o valor da expressão, embora não tenhamos especificado nenhum comando.

Como você pode forçar o sistema a produzir não o resultado, mas a própria expressão? Para isso, a função de simplificação deve ser desabilitada através do comando simp: false$. Então obtemos:

Para ativar a função de simplificação, você deve especificar o comando simp:true$. A função autosimplify pode funcionar com expressões numéricas e algumas não numéricas. Por exemplo,

T. N. Gubina, E.V. Andropova

Ao entrar, podemos referir-nos a qualquer uma das células anteriores pelo seu nome, substituindo-o em quaisquer expressões. Além disso, a última célula de saída é indicada por% e a última célula de entrada é indicada por _. Isso permite que você consulte o último resultado sem se distrair com seu número. Mas não se deve abusar de tais chamadas para células, pois ao reavaliar todo o documento ou suas células de entrada individuais, pode ocorrer uma discrepância entre os números das células.

o resultado calculado é 5 vezes.

É aconselhável usar variáveis ​​em vez de nomes de células e atribuir seus nomes a quaisquer expressões. Neste caso, qualquer expressão matemática pode atuar como o valor da variável.

Os valores dos nomes das variáveis ​​​​são preservados durante todo o trabalho com o documento. Lembremos que se for necessário retirar a definição de uma variável, isso pode ser feito através da função kill(name), onde name é o nome da expressão a ser destruída; além disso, pode ser um nome atribuído por você ou qualquer célula de entrada ou saída. Da mesma forma, você pode limpar toda a memória e liberar todos os nomes digitando o comando kill(all) (ou selecionando o menu Maxima->Clear Memory). Neste caso, todas as células de E/S também serão apagadas e sua numeração começará novamente a partir de um.

A função autosimplify nem sempre é capaz de simplificar uma expressão. Além dele, há uma série de comandos projetados para trabalhar com expressões: racionais e irracionais. Vejamos alguns deles.

rato(expressão) - converte uma expressão racional para sua forma canônica: abre todos os parênteses, depois traz tudo para um denominador comum, soma e reduz; converte todos os números em notação decimal finita em números racionais. A forma canônica é automaticamente “cancelada” no caso de quaisquer transformações que não sejam racionais

ratsimp(expressão) - simplifica a expressão por meio de transformações racionais. Também funciona “em profundidade”, ou seja, irracional

Capítulo 1 Noções básicas de trabalho no sistema matemático computacional Maxima

partes da expressão não são consideradas atômicas, mas são simplificadas, incluindo todos os elementos racionais dentro delas

fullratsimp(expressão) - uma função para simplificar uma expressão racional aplicando sequencialmente a função ratsimp() à expressão passada. Devido a isso, a função é um pouco mais lenta que ratsimp(), mas fornece um resultado mais confiável.

expand(expressão) - expande parênteses em uma expressão em todos os níveis de aninhamento. Ao contrário da função rateexpand(), ela não reduz os termos fracionários a um denominador comum.

radcan(expressão) - uma função para simplificar funções logarítmicas, exponenciais e de potência com expoentes racionais não inteiros, ou seja, raízes (radicais).

Muitas vezes, quando você tenta simplificar uma expressão no Maxima, na verdade isso só pode torná-la mais complexa. Um aumento no resultado pode ocorrer pelo fato de não se saber quais valores as variáveis ​​​​incluídas na expressão podem assumir. Para evitar isso, você deve colocar restrições nos valores que uma variável pode assumir. Isso é feito usando a função assume(condição). Portanto, em alguns casos, o melhor resultado pode ser alcançado combinando radcan() com ratsimp() ou fullratsimp().

− a 2 b 2

aba1/4

Exemplo. Simplifique uma expressão

b a b a 2 1/4

uma 2 − b 2.

Se aplicarmos o comando para simplificar racionalmente nossa expressão, obteremos:

Vamos usar a função assume(condition) e usá-la para impor restrições aos seus valores em algumas variáveis ​​incluídas na expressão:

T. N. Gubina, E.V. Andropova

Como você pode ver, obtivemos um resultado compacto.

1.9. Resolvendo equações algébricas e seus sistemas

EM O sistema Maxima utiliza a função de resolução integrada, que possui a seguinte sintaxe, para resolver equações lineares e não lineares:

resolver (expr, x) – resolve a equação algébrica expr em relação à variável x

resolver (expr) – resolve a equação algébrica expr em relação à variável desconhecida incluída na equação.

Por exemplo, vamos resolver a equação linear 5 x + 8 = 0. Para isso, utilize o botão Resolver da barra de ferramentas, ao clicar, aparece a caixa de diálogo Resolver (Fig. 13). Insira a equação original e clique em OK.

Arroz. 13. Caixa de diálogo para resolver equações

Como resultado, um comando para resolver a equação será gerado no documento de trabalho e a solução encontrada será exibida:

Capítulo 1 Noções básicas de trabalho no sistema matemático computacional Maxima

O comando para resolução de equações pode ser especificado de forma que seja fácil verificar as soluções encontradas. Para fazer isso, é aconselhável usar o comando de substituição ev.

Por exemplo, vamos resolver a equação algébrica x 3 + 1 = 0 e verificar as soluções encontradas.

Como resultado, obtivemos três raízes. Sob o nome resh armazenamos uma lista de valores - as raízes da equação. Os elementos da lista são colocados entre colchetes e separados por vírgula. Cada elemento da lista pode ser referido pelo seu número. Vamos usar isso ao verificar as soluções: substitua cada uma das raízes na equação original.

Use o comando allroots (expr) para encontrar todas as soluções aproximadas para uma equação algébrica. Este comando pode ser usado se o comando resolver não conseguir encontrar uma solução para a equação ou se a solução for muito complicada, como para a seguinte equação: (1 + 2 x )3 = 13,5(1 + x 5 ) .

T. N. Gubina, E.V. Andropova

Usando o comando resolver, você pode encontrar soluções para sistemas de equações algébricas lineares. Por exemplo, um sistema de equações lineares

М x +2 y +3 z +4 k +5 m =13

2 x+ y+ 2 z+ 3 k+ 4 m= 10

2 x + 2 y + z + 2 k + 3 m = 11 pode ser resolvido da seguinte forma:

2 x+ 2 y+ 2 z+ k+ 2 m= 6

ï 2 x +2 y +2 z +2 k +m =3

1. Vamos salvar cada uma das equações do sistema sob os nomes eq1, eq2, eq3, eq4, eq5.

2. Encontramos uma solução para o sistema.

3. Vamos verificar a solução encontrada:

Assim, ao substituir a solução resultante em cada uma das equações do sistema, obtêm-se as igualdades corretas.

A função resolver do sistema Maxima também pode resolver sistemas de equações lineares se a solução não for única. Então ela recorre a uma notação como %r_number para mostrar que a variável desconhecida é livre e pode assumir qualquer valor.

Para resolver sistemas de equações não lineares, você pode usar o comando algsys. Por exemplo, vamos encontrar uma solução para o sistema de equações