MERCURY

MERCURY

A Borland International, grande empresa norte-americana fabricante de linguagens de programação como Turbo Pascal, Turbo C, Delphi, entre outras, distribuiu nos anos 80 um programa chamado EUREKA, útil na resolução de diversos problemas matemáticos numéricos tais como: cálculo de derivadas e integrais, máximos e minímos de funções, gráficos de funções do tipo y = f(x) , resolução de sistemas de equações não-lineares, determinação das raízes de uma equação polinomial, entre outros assuntos.

O EUREKA jamais foi atualizado pela Borland, ainda hoje sua versão mais "recente" é a versão 1.0. No entanto, alguns anos depois, as pessoas que trabalharam na elaboração do EUREKA elaboraram por conta própria uma versao shareware de um programa chamado MERCURY. O MERCURY faz tudo o que o EUREKA fazia e tem uma interface com o usuário semelhante. Podemos dizer então que o MERCURY é o sucessor do velho EUREKA.

O MERCURY (mrcry209.zip, 278.023 bytes, versão de 2/novembro/92) pode ser copiado dos mirrors do Simtel.net, como por exemplo, ftp://ftp.unicamp.br/pub/simtelnet/msdos/math/mrcry209.zip . Na UFPB, ele pode ser encontrado em ftp://mat.ufpb.br/pub/mat/mrcry209.zip .

Segue um texto sobre o EUREKA, o precursor do MERCURY. Apesar de desatualizado, com ele dá pra se ter uma idéia do que o MERCURY é capaz de fazer. Esse texto foi elaborado no Dep. Matemática/UFPB no final de 1988.


; Algumas observacoes a respeito do EUREKA - versao 1.0 - Em 20/dezembro/1988

; 0 - OPERACOES DE ENTRADA, SAIDA E RESOLUCAO DE PROBLEMAS

;        Para carregar o EUREKA na memoria basta digitar EUREKA e  ENTER  no
; prompt do sistema operacional.

;        Para carregar um problema salvo no disco digitar ESC F L e o no-
; me do problema (a extensao .EKA e' o default). Para salvar digitar  ESC F
; S e o nome do problema.

;        Para editar problemas digitar Alt E ou ESC E e escrever o  pro-
; blema. Para resolver um problema que esteja na  janela  de  edicao   digitar
; Alt S  ou  ESC S.

; 1 - EQUACOES E SISTEMAS EM GERAL

;        Para  resolver uma  equacao ou um sistema qualquer, basta escrever na
; janela de edicao o sistema  ou a equacao  que se quer resolver. As operacoes
; permitidas sao + , - , * (multiplicacao) , / (divisao) e  ^ (exponenciacao).
; As potencias de  10 podem  ser indicadas  usando-se um  "E" . Por  exemplo ,
; 0,00023 e' o mesmo que 2.3E-04.

;        As funcoes  que  forem  definidas no  problema  devem estar  na forma
; f(x) := ... (valor da funcao em x).  Nos  problemas de  maximos  ou  minimos
; as funcoes devem estar na  forma f = ...(valor da funcao).  Nos  graficos as
; funcoes podem ser da forma  y = f(x). Se o problema possuir valores iniciais
; eles dever estar na forma  variavel := valor_inicial .

;        Os comentarios devem ser  precedidos por ponto e virgula (;) ou esta-
; rem entre chaves ( { } ).

;        Operacoes com numeros  complexos sao aceitas , desde que  a edicao do
; problema contenha a expressao " $complex = yes " . Caso se queira  indicar o
; valor do erro da aproximacao, deve-se editar a expressao $accuracy = ...(va-
; lor do erro desejado). O tempo maximo dedicado  'a solucao de cada  problema
; e'  de  200 segundos. Esse valor pode ser alterado  se for usado a expressao
; $maxtime = ...(tempo maximo em segundos).

; Exemplo 1.1: Resolver a seguinte equacao

               sin(x) = ln(1 + (tan(x))^2) + 3

; Uma vez que esta expressao esteja na janela de edicao basta digitar  Alt S
; para que a equacao seja resolvida.

; Exemplo 1.2: Resolver o seguinte sistema de equacoes, com os valores  inici-
;              ais indicados

               3*x + 2*y + z^3 = 5
               x - y + z = 11
               cos(x) = y + z

               x := 1    { valores iniciais }
               y := 2
               z := -1

; 2 - FUNCOES PRE'-DEFINIDAS

;        abs(x)               modulo
;        atan2(y,x)           arco-tangente
;        cos(x)               cosseno
;        cosh(x)              cosseno hiperbolico
;        deriv(f(x),x)        derivada
;        exp(x)               exponencial
;        fact(n)              fatorial
;        im(x)                parte imaginaria
;        integ(f(x),x,a,b)    integral
;        ln(x)                logaritmo natural
;        log10(x)             logaritmo decimal
;        msqrt(x)             raiz quadrada negativa
;        polar(x,y)           conversao em coordenadas polares
;        poly(x,...)          polinomio
;        pos(x)               parte positiva
;        re(x)                parte real
;        sgn(x)               sinal
;        sin(x)               seno
;        sinh(x)              seno hiperbolico
;        sqrt(x)              raiz quadrada
;        sum(f(x),x,n1,n2)    somatorio
;        tan(x)               tangente
;        tanh(x)              tangente hiperbolica

;        Alem  destas funcoes  matematicas o Eureka tambem possui funcoes vol-
; tadas para a economia  ou estatistica (funcoes: floor,  fval,  ncum,  paymt,
; pval).

;        A funcao pre'-definida atan2(y,x) na verdade e' o  arctg(y/x).  Desse
; modo, arctg(x) = atan2(x,1).

; 3 - EQUACOES ALGEBRICAS (POLINOMIAIS)

;        Existem 3 maneiras de se resolver uma equacao algebrica:

; Solucao 1: Simplesmente escrevendo a equacao na janela de edicao. Neste caso
             acham-se apenas raizes reais

             x^5 - 4*x^2 + 3 = 0

; Solucao 2: Usando-se $complex. Neste caso acham-se algumas raizes complexas

             $complex = yes
             x^5 - 4*x^2 + 3 = 0

; Solucao 3: Usando a funcao POLY. Este e' o melhor metodo de solucao. A vari-
;            avel e todos os coeficientes  da equacao, incluindo os nulos, de-
;            vem  ser  escritos como argumentos  da  POLY. Acham-se  todas  as
;            raizes.

             p(x) := poly(x,1,0,0,-4,0,3)

; Os coeficientes de POLY devem seguir as potencias decrescentes de 'x'.

; 4 - INTEGRAIS, DERIVADAS E SOMATORIOS

;        Sao calculados usando-se as funcoes INTEG, DERIV e SUM. A variavel da
; funcao do problema e' um dos argumentos dessas funcoes.

; Exemplo 4.1: Calcular a integral de 4/(1 + x^2) no intervalo [0,1]

               a = integ(4/(x^2 + 1),x,0,1)

; Exemplo 4.2: Calcular a integral de sen(x) no intervalo [0,pi]

               pi = 3.14159265       { definicao de "pi" }
               f(x) := sin(x)        { definicao da funcao }
               b = integ(f(x),x,0,pi)

; Exemplo 4.3: Calcular o valor da derivada de x^3 no ponto x = 2

               c = deriv(x^3,x)
               x = 2

; Exemplo 4.4: Calcular o valor da derivada de ln(x) no ponto x = 4

               x = 4
               g(x) := ln(x)
               d = deriv(g(x),x)

; Exemplo 4.5: Calcular aproximadamente o valor de "e", usando seu desenvolvi-
;              mento em serie e a funcao FACT

               h(n) := 1/fact(n)       { definicao do termo geral da serie }
               e = sum(h(n),n,0,50)    { calculo da soma com n variando de
                                         0 a 50 }

; Exemplo 4.6: Calcular o somatorio de 1/n, n variando de 1 a 100

               s = sum(1/n,n,1,100)

; 5 - OPERACOES COM NUMEROS COMPLEXOS

;        As operacoes com numeros complexos sao feitas ativando-se  $complex.
; A unidade  imaginaria "i" precisa ser definida no problema em que ela possa
; vir a ser usada.

         $complex = yes
         i^2 = -1        { definicao da unidade imaginaria }

         z1 = cos(i)
         z2 = sqrt(-4)
         z3 = (1 + i)^100
         z4 = im(i*sin(2 + i))

; 6 - PROBLEMAS DE MAXIMOS E MINIMOS

;        Problemas de maximos ou minimos podem ser resolvidos incluindo-se na
; edicao do problema $min(...) ou $max(...) com o nome da funcao a  ser mini-
; mizada ou maximizada entre parenteses.

; Exemplo 6.1: Calcular o minimo da funcao f(x) = cos(x)

               $min(f)
               f = cos(x)   { definicao da funcao (f = ...valor em x...) }

; Exemplo 6.2: Calcular o maximo da funcao g(x) = x^2+3*x  no intervalo  [2,5]

               $max(g)
               g = x^2 + 3*x  { definicao da funcao }
               2 <= x <= 5    { intervalo [2,5] }

; Exemplo 6.3: Determinar a menor distancia da reta 2*x + y = 25  'a circunfe-
;              rencia  x^2 + y^2 = 4 .

               $min(d)
               2*x + y = 25     { reta }
               u^2 + v^2 = 4    { circunferencia }
               d = (x - u)^2 + (y - v)^2   { quadrado da distancia de um ponto
                                             (x,y) da reta a um ponto (u,v) da
                                             circunferencia }

; 7 - GRAFICOS

;        Graficos planos em coordenadas cartesianas sao contruidos usando-se a
; opcao  "graph"  no menu  principal. Apos ter sido teclado    na opcao
; "function", devera' ser  introduzido  a equacao que define a funcao na forma
; y = f(x). Ao teclar   na equacao da funcao e na opcao "plot", deverao
; ser introduzidos as extremidades  do intervalo do eixo "x" no qual se deseja
; construir o grafico. Quando aparecer um esboco do grafico e for teclado 
; o grafico sera' construido em alta resolucao.
;        Usando-se a opcao "list"  pode-se ter uma tabela de valores da funcao
; e atraves da opcao "output" pode-se imprimir o grafico.




volta