Editor SVG

Digite (ou cole) seus comandos ASCIIsvg e pressione o botão Update para ver a figura. Para salvar seu trabalho, selecione o texto (Ctrl-A) e faça a cópia para um editor de texto (Bloco de notas, p.e.). Escolha o layout que melhor se ajusta ao seu tamanho de tela:

Digite (comandos ASCIIsvg e JavaScript) Mostrar  (Exige IE+SVGviewer 3.01 or Mozilla+SVG)
24-2-412345-1-2-3-4-5πExemplo ASCIIsvg
Observe que isto é um HTML dinâmico rodando localmente na sua máquina. Se você deixar esta página antes de salvar seu trabalho, ele irá desaparecer.

Comandos ASCIIsvg (pressione o link para detalhes; argumentos em {} sao opcionais)
setBorder(pixelvalue) (default 25)
initPicture( xmin, xmax {, ymin {, ymax}} )     axes( {dx, dy,} {"labels" {, "grid"| gdx {, gdy}}} )
line( [x,y], [u,v] ) marker = "dot" | "arrow" | "arrowdot" | "none"
path( [ [x1,y1], [x2,y2], ..., [xn,yn] ] ) curve( [ [x1,y1], [x2,y2], ..., [xn,yn] ] )
plot( "f(x)" {, xmin, xmax, npoints} ) plot( [ "f(t)", "g(t)" ] {, tmin, tmax, npoints} )
stroke = "color" strokewidth = "pixelvalue" (default 1)
fill = "color" strokedasharray = "dashpixel spacepixel"
fontsize = "pixel" (default 20) fontweight = "bold" | "normal"
fontstyle = "italic" | "normal" fontfamily = "serif"|"sansserif"|"fixed"|"monotype"
circle( [x,y], r ) ellipse( [x,y], rx, ry )
arc( [x,y], [u,v], r ) rect( [x,y], [u,v] )
text( [x,y], "label" {, position} ) dot( [x,y] {, open | closed {, "label", position} )
position pode ser: above, below, left, right, aboveleft, aboveright, belowleft, belowright, null

Para o comando plot, as funções f(x), f(t), g(t) podem utilizar qualquer função ou constante JavaScript válida (sem o prefixo "Math.") e o seguinte:

Operadores: +, -, *, /, ^

Constantes: pi, e

Funções: sqrt(), ln(), abs(), sign(), floor(), ceil(), n!, C(n,k), ran(a,b,n), sin(), cos(), tan(), sin^-1(), cos^-1(), tan^-1(), sinh(), cosh(), tanh(), sinh^-1(), cosh^-1(), tanh^-1(), sech(), csch(), coth(), sech^-1(), csch^-1(), coth^-1().

cpi e ctheta representam as correspondentes letras gregas.

O símbolo de multiplicação * pode ser omitido depois de um dígito (0-9) ou de um parênteses fechado.

Este editor é útil para o aprendizado de coordenadas geométricas, gráficos de funções, curvas paramétricas, JavaScript, SVG, ... Divirta-se.

Você pode salvar uma cópia desta página no seu computador local utilizando Save As... e utilizar este editor SVG mesmo sem estar conectado à internet.

A tabela que segue mostra códigos que tratam de gráficos básicos e aspectos matemáticos importantes, como funções polinomiais, trigonométricas, função logaritmo e função exponencial. A especificação é feita por meio de parâmetros (indicados no código com <===) que podem ser alterados e o gráfico refeito para visualização dos efeitos. Simplesmente copie e cole o código no editor SVG e pressione o botão Update.

Gráfico com recursos gerais setBorder(0); initPicture(-5,5)
axes(2, 1, "labels", 1); stroke = "blue"
plot("sin(x)")
stroke = "red"
plot(["5*t*cos(pi*t)", "5*t*sin(pi*t)"],0,1)
stroke = "green"; strokewidth = "2"
marker = "arrowdot"
line([0,1], [pi/2,1]); dot([pi,0], "open", cpi)
text([-2.5,-2.5], "Exemplo ASCIIsvg")
agraph width=250;height=250;setBorder(0) initPicture(-5,5) axes(2, 1, "labels", 1) stroke = "blue" plot("sin(x)") stroke = "red" plot(["5*t*cos(pi*t)", "5*t*sin(pi*t)"],0,1) stroke = "green" strokewidth = "2" marker = "arrowdot" line([0,1], [pi/2,1]) dot([pi,0], "open", cpi) text([-2.5,-2.5], "Exemplo ASCIIsvg") endagraph
Outro com recursos gerais width="300"; height="350"; border=10
xmin=-1; xmax=6; ymin=-1; axes()
plot(sin(x)+2.5)
a = [0,0];b = [5,5]
marker = "dot"; line(a,b)
text(a,"a",belowright); text(b,"g",above)
text(b,"b",right); text(b,"b",left)
text(b,"b",below); text(b,"b",aboveleft)
text(b,"b",aboveright); text(b,"b",belowleft)
text(b,"b",belowright)
stroke = "red"; path([a,[0,5],b,[5,0]])
stroke = "green"; marker = "none"
curve([a,[.25,0],[.5,.5],[1,1],[1.5,1.5]])
stroke = "blue"; circle([5,0],1)
ellipse([0,5],1,2)
stroke = "purple"; rect([0,0],[2,2],null,.5,1)
marker = "arrowdot"; line(a,[5,0])
agraph width="300"; height="350"; border=10 xmin=-1; xmax=6; ymin=-1; axes() plot(sin(x)+2.5) a = [0,0] b = [5,5] marker = "dot" line(a,b) text(a,"a",belowright) text(b,"g",above) text(b,"b",right) text(b,"b",left) text(b,"b",below) text(b,"b",aboveleft) text(b,"b",aboveright) text(b,"b",belowleft) text(b,"b",belowright) stroke = "red" path([a,[0,5],b,[5,0]]) stroke = "green" marker = "none" curve([a,[.25,0],[.5,.5],[1,1],[1.5,1.5]]) stroke = "blue" circle([5,0],1) ellipse([0,5],1,2) stroke = "purple" rect([0,0],[2,2],null,.5,1) marker = "arrowdot" line(a,[5,0]) endagraph
Pontos width=200; height=200; xmin=-6
xmax=6; xscl=1; axes()
stroke="red"
dot([-3,-3],"open"); dot([-2,-2],"closed")
stroke="green"; dot([0,0],"closed")
stroke="blue"; dot([2,2],"closed"); dot([3,3],"open")
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); stroke="red"; dot([-3,-3],"open"); dot([-2,-2],"closed"); stroke="green"; dot([0,0],"closed"); stroke="blue"; dot([2,2],"closed"); dot([3,3],"open") endagraph
Linha com ponto no final width=200; height=50; gridstroke="white"
xmin=-1.5; xmax=10.5; xscl=1; yscl=4
axes(); strokewidth="2"; endpoints="<-o"
a=[-1,0]; b=[7,0]; line(a,b)
agraph width=200; height=50; gridstroke="white"; xmin=-1.5; xmax=10.5; xscl=1; yscl=4; axes(); strokewidth="2"; endpoints="<-o"; a=[-1,0]; b=[7,0]; line(a,b) endagraph
Linha com ponto no final 2 width=200; height=200
xmin=-6; xmax=6; xscl=1; axes()
stroke="green"; endpoints="<->"
line([-4,-3],[3,4]); stroke="blue"
endpoints="*->"; line([4,-2],[-5,4])
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); stroke="green"; endpoints="<->"; line([-4,-3],[3,4]); stroke="blue"; endpoints="*->"; line([4,-2],[-5,4]) endagraph
Círculos width=200; height=200
xmin=-6; xmax=6; xscl=1; axes()
stroke="green"; circle([-2,0],2)
stroke="blue"; strokewidth=5
circle([-2,0],3); stroke="red"
strokewidth=3; fill="yellow"; circle([2,2],2)
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); stroke="green"; circle([-2,0],2); stroke="blue"; strokewidth=5; circle([-2,0],3); stroke="red"; strokewidth=3; fill="yellow"; circle([2,2],2) endagraph
Elipses width=200; height=200
xmin=-6; xmax=6; xscl=1; axes()
stroke="blue"; strokewidth=5
ellipse([-3.5,0],2,4)
stroke="red"; strokewidth=3; fill="green"
ellipse([1,4],4,0.5)
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); stroke="blue"; strokewidth=5; ellipse([-3.5,0],2,4); stroke="red"; strokewidth=3; fill="green"; ellipse([1,4],4,0.5) endagraph
Retângulos width=200; height=200
xmin=-6; xmax=6; xscl=1; axes()
stroke="blue"; strokewidth=3; fill="red"
rect([-4,-4],[-2,4]); stroke="red"; strokewidth=1
fill="green"; rect([-5,-1],[5,1])
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); stroke="blue"; strokewidth=3; fill="red"; rect([-4,-4],[-2,4]); stroke="red"; strokewidth=1; fill="green"; rect([-5,-1],[5,1]) endagraph
Polígono width=200; height=200
xmin=-6; xmax=6; xscl=1; axes()
a=[-2,-4]; b=[-4,-2]; c=[0,0]; d=[2,-2]
e=[-4,2]; f=[0,4]; g=[3,3]
stroke="blue"; strokewidth=3
fill="red"; path([a,b,c,d,a])
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); a=[-2,-4]; b=[-4,-2]; c=[0,0]; d=[2,-2]; e=[-4,2]; f=[0,4]; g=[3,3]; stroke="blue"; strokewidth=3; fill="red"; path([a,b,c,d,a]) endagraph
Eixos, rótulos e grid width=200; height=200
xmin=-6; xmax=6; setBorder(10)
axes(2, 3, "labels", 2, 3); stroke="red"
strokewidth=2
plot("0.2x^4-x^3+3x-3",-2.2,4.7,null,null,"<->")
agraph width=200; height=200; xmin=-6; xmax=6; setBorder(10); axes(2, 3, "labels", 2, 3); stroke="red"; strokewidth=2; plot("0.2x^4-x^3+3x-3",-2.2,4.7,null,null,"<->") endagraph
Arcos e setores width=200; height=200
xmin=-6; xmax=6; xscl=1; axes()
stroke="green"; strokewidth=2
arc([0,3],[-3,0],3)
stroke="blue"; strokewidth=3
arc([-4,0],[4,0],4); stroke="red"
strokewidth=0; fill="yellow"
a=[0,0]; b=[5,0]; c=[0,5]
path([a,b,c,a]); strokewidth=3; arc([5,0],[0,5],5)
agraph width=200; height=200; xmin=-6; xmax=6; xscl=1; axes(); stroke="green"; strokewidth=2; arc([0,3],[-3,0],3); stroke="blue"; strokewidth=3; arc([-4,0],[4,0],4); stroke="red"; strokewidth=0; fill="yellow"; a=[0,0]; b=[5,0]; c=[0,5]; path([a,b,c,a]); strokewidth=3; arc([5,0],[0,5],5) endagraph
Texto width=200; height=200
xmin=-6; xmax=6; axes(7, 7, "labels", 6, 6)
stroke="red"; strokewidth=2; fontsize=12
fill="lightgreen"; ellipse([0,0],5,3)
text([0.3,1], "ASCIIsvg é a coisa mais legal")
text([0.3,-1], "depois da pasta de amendoim!"
text([4,5], "Quadrante I"); text([-3.7,5], "Quadrante II")
text([-3.7,-5], "Quadrante III"); text([4,-5], "Quadrante V")
agraph width=200; height=200; xmin=-6; xmax=6; axes(7, 7, "labels", 6, 6); stroke="red"; strokewidth=2; fontsize=12; fill="lightgreen"; ellipse([0,0],5,3); text([0.3,1], "ASCIIsvg é a coisa mais legal"); text([0.3,-1], "desde a pasta de amendoim!"); text([4,5], "Quadrante I"); text([-3.7,5], "Quadrante II"); text([-3.7,-5], "Quadrante III"); text([4,-5], "Quadrante V") endagraph
Prisma width=200; height=200
xmin=0; xmax=10; xscl=1
ymin=-1; ymax=10; noaxes()
stroke="blue"; strokewidth=2
a=[2,1]; b=[5,0]; c=[5,4]; d=[2,5]
e=[9,3]; f=[9,7]; g=[6,8]; h=[6,4]
fillopacity=0.5; fill="yellow"
path([a,d,g,h,a]); path([h,e,f,g,h])
path([a,b,c,d,a]); fill="orange"
path([b,c,f,e,b]); text([8,8],"w")
text([9.5,4.5], "h"); text([4,7.5],"l")
agraph width=200; height=200; xmin=0; xmax=10; xscl=1; ymin=-1; ymax=10; noaxes(); stroke="blue"; strokewidth=2; a=[2,1]; b=[5,0]; c=[5,4]; d=[2,5]; e=[9,3]; f=[9,7]; g=[6,8]; h=[6,4]; fillopacity=0.5; fill="yellow"; path([a,d,g,h,a]); path([h,e,f,g,h]); path([a,b,c,d,a]); fill="orange"; path([b,c,f,e,b]); text([8,8],"w"); text([9.5,4.5], "h"); text([4,7.5],"l") endagraph
Linhas retas, i.e., gráficos da equação linear `y=mx+b`. Os valores `m` e `b` são, respectivamente, o coeficiente angular (declividade) e intercepto. setBorder(10); initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
m=2;b=1 // <===
dot([0,b],closed,"intercepto-y",right)
plot("m*x+b") // a função predefinida
stroke = "red"; strokedasharray = null
m=-2;b=1 // <===
plot("m*x+b") // a função predefinida
agraph setBorder(10); initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" m=2;b=1 // <=== dot([0,b],closed,"intercepto-y",right) plot("m*x+b") // a função predefinida stroke = "red"; strokedasharray = null m=-2;b=1 // <=== plot("m*x+b") // a função predefinida endagraph
Parábolas, i.e., gráficos da equação quadrática `y = ax^2+bx+c`. Qualquer equação desse tipo pode ser escrita na forma `y = a(x-h)^2 + k`, completando-se o quadrado. da parábola. Os valores específicos de `h,k` indicam o vértice e `a` é o (completar). setBorder(10)
initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1/2;h=2; k=1; // <===
dot([h,k],closed,"vértice",below)
plot("a*(x-h)^2+k") // função predefinida
stroke = "red"; strokedasharray = null
a=-2; h=2; k=2; // <===
dot([h,k],closed,"vértice",above)
plot("a*(x-h)^2+k") // função predefinida
agraph setBorder(10) initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=1/2;h=2; k=1; // <=== dot([h,k],closed,"vértice",below) plot("a*(x-h)^2+k") // função predefinida stroke = "red"; strokedasharray = null a=-2; h=2; k=2; // <=== dot([h,k],closed,"vértice",above) plot("a*(x-h)^2+k") // função predefinida endagraph
Curvas de terceiro grau, i.e., gráficos de equações polinomiais de terceiro grau `y = ax^3+bx^2+cx+d`. Se a equação cúbica tem três raízes reais, então pode ser escrita na forma `y=a(x-p)(x-q)(x-r)`. setBorder(10); initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;p=2;q=1;r=3 // <===
dot([0,-a*p*q*r],closed,"intercepto-y",right)
plot("a*(x-p)(x-q)(x-r)") // função predefinida
stroke = "red"; strokedasharray = null
a=2;p=1;q=1;r=3 // <===
dot([0,-a*p*q*r],closed,"intercepto-y",right)
plot("a*(x-p)(x-q)(x-r)") // função predefinida
agraph setBorder(10); initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=1;p=2;q=1;r=3 // <=== dot([0,-a*p*q*r],closed,"intercepto-y",right) plot("a*(x-p)(x-q)(x-r)") // função predefinida stroke = "red"; strokedasharray = null a=2;p=1;q=1;r=3 // <=== dot([0,-a*p*q*r],closed,"intercepto-y",right) plot("a*(x-p)(x-q)(x-r)") // função predefinida endagraph
Curvas do seno, i.e., gráficos da equação trigonomética `y = a*sin(bx)+c`. O valor |a| é denominado ammplitude, b é a frequência (número de vezes que a onda sobe e desce no intervalo `(0, 1]`), e `c` é a mudança vertical. setBorder(0); initPicture(-10,10)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;b=1/2;c=-1/2 // <===
plot("a*sin(b*x)+c") // a função predefinida
stroke = "red"; strokedasharray = null
a=2;b=1;c=2 // <===
plot("a*sin(b*x)+c") // a função predefinida
stroke = "green"
a=1;b=1;c=3 // <===
plot("a*sin(b*x)+c") // a função predefinida
agraph setBorder(0); initPicture(-10,10) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=1;b=1/2;c=-1/2 // <=== plot("a*sin(b*x)+c") // a função predefinida stroke = "red"; strokedasharray = null a=2;b=1;c=2 // <=== plot("a*sin(b*x)+c") // a função predefinida stroke = "green"; a=1;b=1;c=3 // <=== plot("a*sin(b*x)+c") // a função predefinida endagraph
Curvas do cosseno, i.e., gráficos da equação trigonomética `y = a*cos(bx)+c`. O valor |a| é denominado ammplitude, b é a frequência (número de vezes que a onda sobe e desce no intervalo `(0, 1]`), e `c` é a mudança vertical. setBorder(0); initPicture(-10,10)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;b=1/2;c=-1/2 // <===
plot("a*cos(b*x)+c") // função predefinida
stroke = "red"; strokedasharray = null
a=2;b=1;c=2 // <===
plot("a*cos(b*x)+c") // função predefinida
agraph setBorder(0); initPicture(-10,10) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=1;b=1/2;c=-1/2 // <=== plot("a*cos(b*x)+c") // função predefinida stroke = "red"; strokedasharray = null a=2;b=1;c=2 // <=== plot("a*cos(b*x)+c") // função predefinida endagraph
Curvas tangentes, i.e., gráficos da equação trigonomética `y = a*tan(x+c)`. O valor |a| é denominado ammplitude e `c` é o "angulo fase. setBorder(0); initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=2;c=2 // <===
plot("a*tan(x+c)") // função predefinida
stroke = "red"; strokedasharray = null
a=1;c=1 // <===
plot("a*tan(x+c)") // função predefinida
agraph setBorder(0); initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=2;c=2 // <=== plot("a*tan(x+c)") // função predefinida stroke = "red"; strokedasharray = null a=1;c=1 // <=== plot("a*tan(x+c)") // função predefinida endagraph
Curvas secantes, i.e., gráficos da equação trigonomética `y = a*sec(bx)`. O valor |a| é denominado ammplitude, b é a frequência (número de vezes que a curva se repete no intervalo `(0, 1]`). setBorder(0); initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;b=2 // <===
plot("a*sec(b*x)") // função predefinida
stroke = "red"; strokedasharray = null
a=2;b=1 // <===
plot("a*sec(b*x)") // função predefinida
agraph setBorder(0); initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=1;b=2 // <=== plot("a*sec(b*x)") // função predefinida stroke = "red"; strokedasharray = null a=2;b=1 // <=== plot("a*sec(b*x)") // função predefinida endagraph
Curvas cossecantes, i.e., gráficos de equações trigonométricas do tipo `y = a*csc(bx+c)`. O valor de `|a|` é denominado amplitude e `b` está relacionado com a frequência (número de vezes que a curva se repete sobre o intervalo [0,1]). setBorder(10); initPicture(-5,5.01)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;b=2;c=-1 // <===
plot("a*csc(b*x)") // funcao predefinida
stroke = "red"; strokedasharray = null
a=2;b=1;c=1 // <===
plot("a*csc(b*x)") // funcao predefinida
agraph setBorder(10); initPicture(-5,5.01) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10" a=1;b=2;c=-1 // <=== plot("a*csc(b*x)") // funcao predefinida stroke = "red"; strokedasharray = null a=2;b=1;c=1 // <=== plot("a*csc(b*x)") // funcao predefinida endagraph
Curvas cotangentes, i.e., gráficos de equações trigonométricas do tipo `y = a*cot(x+c)`. O valor de `|a|` é denominado amplitude e `c` é o ângulo fase. setBorder(10); initPicture(-5,5.01)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;c=2 // <===
plot("a*cot(x+c)") // a função predefinida
stroke = "red"; strokedasharray = null
a=2;c=1 // <===
plot("a*cot(x+c)") // a função predefinida
agraph setBorder(10); initPicture(-5,5.01) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10,10" a=1;c=2 // <=== plot("a*cot(x+c)") // a função predefinida stroke = "red"; strokedasharray = null a=2;c=1 // <=== plot("a*cot(x+c)") // a função predefinida endagraph
Curvas exponenciais, i.e., gráficos de equações do tipo `y=ab^x+c`. setBorder(10)
initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1;b=2;c=0 // <===
plot("a*b^x+c") // a função predefinida
stroke = "red"; strokedasharray = null
a=-1;b=2;c=0 // <===
plot("a*b^x+c") // a função predefinida
agraph setBorder(10) initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10,10" a=1;b=2;c=0 // <=== plot("a*b^x+c") // a função predefinida stroke = "red"; strokedasharray = null a=-1;b=2;c=0 // <=== plot("a*b^x+c") // a função predefinida endagraph
Funções logaritmicas, i.e., gráficos da equação `y = a*log_b(x)+c`. setBorder(10)
initPicture(-5,5)
axes(1, 1, "labels", "grid")
stroke = "blue"; strokedasharray = "10"
a=1/ln(10);c=0 // <===
plot("a*ln(x)+c") // log base 10
stroke = "red"; strokedasharray = null
a=1;c=2 // <===
plot("a*ln(x)+c") // log base e
agraph setBorder(10) initPicture(-5,5) axes(1, 1, "labels", "grid") stroke = "blue"; strokedasharray = "10,10" a=1/ln(10);c=0 // <=== plot("a*ln(x)+c") // log base 10 stroke = "red"; strokedasharray = null a=1;c=2 // <=== plot("a*ln(x)+c") // log base e endagraph
Definição condicional width=300; height=300; setBorder(10)
initPicture(-2.5,2.5); axes(1,1,"labels","grid")
strokewidth=2
//n=1 //<===
n="oo" // para ver o limite
if (n=="oo") {
stroke="blue"
line([-2.5,-1],[0,-1])
line([2.5,1],[0,1])
dot([0,1],"open")
dot([0,-1],"open")
dot([0,0],"closed")}
else {
stroke="red"
path([[-2.5,-1],[-1/n,-1],[1/n,1],[2.5,1]])
}
agraph width=300; height=300; border=0;initPicture(-2.5,2.5); axes(1,1,"labels","grid") strokewidth=2; //n=1 //<=== n="oo" // para ver o limite if (n=="oo") { stroke="blue" line([-2.5,-1],[0,-1]) line([2.5,1],[0,1]) dot([0,1],"open") dot([0,-1],"open") dot([0,0],"closed")} else { stroke="red" path([[-2.5,-1],[-1/n,-1],[1/n,1],[2.5,1]]) } endagraph

Traduzido de:

Peter Jipsen, Chapman University, Nov 2004