system "clear" print " " print " " print "============================================================" print " Os direitos do autor e a GPL " print "============================================================" print " " print "Este programa é distribuido sob GPL. " print "Se você não souber o que é a GPL, envie um e-mail ao autor " print " tarcisio@member.ams.org " print "mas em suma quer dizer que você pode usar livremente o sistema" print "de programas aqui mencionados, desde que esta informação seja mantida" print "em todas as alterações que você fizer dos programas e das cópias que " print "você deles fizer - é a proteção do direito autoral que não lhe impede" print "de usar livremente o conhecimento mas que mantém na memória quem " print "participou de sua produção." print "Este programa foi escrito por Tarcisio Praciano-Pereira " print "professor da Universidade Estadual Vale do Acaraú - UeVA " print "Laboratório de Matemática Computacional - Curso de Matemática " print "Sobral - Ceará - Brasil " print "Aperte enter para continuar!" pause -2 system "clear" print "Este script to gnuplot construi o polinômio de Lagrange que interpola" print "os pontos de uma função definida no programa. Neste momento h(x) = sin(x)" print "mas você pode trocar a função e assim obter a interpolação polinomial" print "de lagrange para os pontos de outra função." print "O processo é explicado passo a passo. Para acompanhar as mensagens e " print "ver finalmente o gráfico, abra este programa em um terminal e deixe o cursor" print "ficar no terminal. Dando enter vai fazer as mensagens passar e ao final você" print "poderá ver a janela gráfica. Mantenha o curso no terminal em que você " print "rodar o programa." print "Aperte enter para continuar!" pause -2 print "Porque escolhi \"simular\" o gráfico de uma função?" print "Em vez de selecionar um conjunto de pontos do plano para interpolar," print "preferi escolher alguns pontos do gráfico de uma função. A vantagem é" print "que você pode ver o fenômeno real e a sua simulação com auxílio do" print "polinômio de Lagrange e assim verificar que este instrumento fornece" print "uma boa interpolação de dados. Quer dizer, a função usada representa" print "o fenômeno exato e você pode compará-lo com a interpolação forncecida" print "pelo polinômio de Lagrange." print "Aperte enter para continuar!" pause -2 system "clear" print "Selecionando os pontos, o intervalo [a,b] onde o gráfico vai ser feito" print "você pode alterar os valores de a,b e do delta, o passo que vai construir" print "a partição do intervalo [a,b]. Estas alterações vão lhe dar uma ideia da" print "precisão, ou falta de precisão do polinômio de Lagrange." print "Seleção do intervalo [a,b] neste ponto do programa." print "a = -6; b = 6; delta = (b-a)/10.0 " print "Se você selecionar um intervalo muito grande com um passo grande, quer dizer" print "selecionar pontos muitos esparsos, o resultado será uma péssima aproximação" print "e assim você pode ver que o polinômio de Lagrange precisa de um passo muito" print "pequeno para oferecer uma boa aproximação. Faça a experiência para ver " print "claramente o que estou dizendo. Escolha um intervalo grande e use um passo" print "também grande." print "Aperte enter para continuar!" pause -2 system "clear" a = -6; b = 6; delta = (b-a)/10.0 print "A definição da malha, calculando os nós como uma progressão aritmética" print "a partir do do ponto inicial do intervalo com o passo delta escolhido." print "a1 = a;" print "a2 = a+delta;" print "a3 = a+2*delta;" print "a4 = a+3*delta;" print "a5 = a+4*delta;" print "a6 = a+5*delta;" print "a7 = a+6*delta;" print "a8 = a+7*delta;" print "a9 = a+8*delta;" print "a10 = a+9*delta;" print "a11 = a+10*delta;" print "Aperte enter para continuar!" pause -2 a1 = a; a2 = a+delta; a3 = a+2*delta; a4 = a+3*delta; a5 = a+4*delta; a6 = a+5*delta; a7 = a+6*delta; a8 = a+7*delta; a9 = a+8*delta; a10 = a+9*delta; a11 = a+10*delta; print "A função que vai servir de fenômeno que será interpolado." print "A equação da função se encontra neste ponto do programa, você pode" print "ver a equação e inclusive trocá-la. Deve fazê-lo." print "Serão interpolados os pontos (xk, h(xk)) usando a seleção de pontos" print "feita acima usando a função h para obter as ordenadas dos pontos." print "Aperte enter para continuar!" pause -2 system "clear" ################### Troque aqui a equação, atere apenas o segundo membro. h(x) = sin(x) ## mantenha este formato, troque a equação alterando ################## a expressão depois da igualdade. print "O polinômio de Lagrange é o melhor polinômio de grau n que interpola n+1" print "pontos no plano." print "O polinômio de Lagrange é definido por três passos." print "Primeiro um polinômio que se anula em cada um dos nós escolhidos:" print "P(x) = (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*\" print " (x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "" print "Depois calculamos a derivada deste polinômio e definimos um novo" print "polnômio, este novo polinômio passa em cada um dos pontos no plano" print "que desejamos interpolar. " print "Definindo o polinômio com raizes nas abcissas dos pontos." print "Aperte enter para continuar!" pause -2 P(x) = (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*\ (x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11); set xrange [-7:7] print "Os termos da derivada algoritmica do polinômio P" print "Aperte enter para continuar!" pause -2 print "P1(x)= (x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "P2(x)= (x - a1)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "P3(x)= (x - a1)*(x - a2)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "P4(x)= (x - a1)*(x - a2)*(x - a3)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "P5(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11)" print "P6(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "Aperte enter para continuar!" pause -2 print "P7(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a8)*(x - a9)*(x - a10)*(x - a11);" print "P8(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a9)*(x - a10)*(x - a11);" print "P9(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a10)*(x - a11);" print "P10(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a11)" print "P11(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)" print "Aperte enter para continuar!" pause -2 P1(x)= (x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11); P2(x)= (x - a1)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11); P3(x)= (x - a1)*(x - a2)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11); P4(x)= (x - a1)*(x - a2)*(x - a3)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11); P5(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11) P6(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a7)*(x - a8)*(x - a9)*(x - a10)*(x - a11); P7(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a8)*(x - a9)*(x - a10)*(x - a11); P8(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a9)*(x - a10)*(x - a11); P9(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a10)*(x - a11); P10(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a11) P11(x)= (x - a1)*(x - a2)*(x - a3)*(x - a4)*(x - a5)*(x - a6)*(x - a7)*(x - a8)*(x - a9)*(x - a10) print "A expressão da derivada algoritmica" print "dP(x) = P1(x) + P2(x) + P3(x) + P4(x) + P5(x)+ P6(x) + " print " + P7(x) + P8(x) + P9(x) + P10(x) + + P11(x)" print "Aperte enter para continuar!" pause -2 ## use esta barra invertida para eliminar fim de linha e escrever uma ## equação por várias linhas. Não pode ter espaço depois da barra. ## melhor, depois da barra deve ter o sinal de troca de linha.... dP(x) = P1(x) + P2(x) + P3(x) + P4(x) + P5(x)+ P6(x) + P7(x) +\ P8(x) + P9(x) + P10(x) + P11(x) ## Um polinômio que nos pontos a,b,c tem o mesmo valor que print "O polinõmio de Lagrange que interpola os pontos do plano" print "Q(x) = h(a1)*P1(x)/dP(a1) + h(a2)*P2(x)/dP(a2) + h(a3)*P3(x)/dP(a3)+\" print " h(a4)*P4(x)/dP(a4) + h(a5)*P5(x)/dP(a5) + h(a6)*P6(x)/dP(a6)+\" print " h(a7)*P7(x)/dP(a7) + h(a8)*P8(x)/dP(a8) + h(a9)*P9(x)/dP(a9)+\" print " h(a10)*P10(x)/dP(a10) + h(a11)*P11(x)/dP(a11)" print "e o gráfico." print "plot Q(x), sin(x), 0" print "Aperte enter para continuar!" pause -2 Q(x) = h(a1)*P1(x)/dP(a1) + h(a2)*P2(x)/dP(a2) + h(a3)*P3(x)/dP(a3)+\ h(a4)*P4(x)/dP(a4) + h(a5)*P5(x)/dP(a5) + h(a6)*P6(x)/dP(a6)+\ h(a7)*P7(x)/dP(a7) + h(a8)*P8(x)/dP(a8) + h(a9)*P9(x)/dP(a9)+\ h(a10)*P10(x)/dP(a10) + h(a11)*P11(x)/dP(a11) plot Q(x), h(x) , 0 ## mantenha neste formato, troque a equaçao pause -2 ## onde é indicado.