restart:with(linalg):Warning, the assigned name basis now has a global bindingWarning, the protected names norm and trace have been redefined and unprotectedcoeffmatrix := proc(L,d) matrix(nops(L),d+1,[seq(seq(L[ii]^jj,jj=0..d),ii=1..nops(L))]): end:deg := 2; Points := [[1,3],[-1,13],[2,1],[-2,33]]; print(cat(seq(`~`,ii=1..50))); A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg): b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]): A=eval(A), b=eval(b); print(cat(seq(`~`,ii=1..50))); At := transpose(A); M := evalm( evalm(At &* A)^(-1) &* At ): Mb:= evalm( M &* b ): "(At*A)^(-1)*At" = eval(M); "(At*A)^(-1)*At*b" = eval(Mb); print(cat(seq(`~`,ii=1..50))); f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)): evaln(f(t)) = f(t); plot([Points,f(x)],x=-3..3,y=0..40,style=[point,line],colour=black); NiM+SSRkZWdHNiIiIiM=NiM+SSdQb2ludHNHNiI3JjckIiIiIiIkNyQhIiIiIzg3JCIiI0YoNyQhIiMiI0w=NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiQvSSJBRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyUiIiJGLkYuNyVGLiEiIkYuNyVGLiIiIyIiJTclRi4hIiNGMy9JImJHRiUtRic2IzcmNyMiIiQ3IyIjODcjRi43IyIjTA==NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiM+SSNBdEc2Ii1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiM3JTcmIiIiRi5GLkYuNyZGLiEiIiIiIyEiIzcmRi5GLiIiJUY0NiMvUS8oQXQqQSleKC0xKSpBdDYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzclNyYjIiIjIiIkRi4jISIiIiInRjE3JiMiIiIiIzUjRjJGNyNGNiIiJiNGMkY6NyZGMUYxI0Y2RjNGPQ==NiMvUTEoQXQqQSleKC0xKSpBdCpiNiItSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGKUkoX3N5c2xpYkdGJTYjNyU3IyIiJjcjIyEjUEYuNyMiIiQ=NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiMvLUkiZkc2IjYjSSJ0R0YmLCgiIiYiIiJGKCMhI1BGKiokRigiIiMiIiQ=LSUlUExPVEc2Jy0lJ0NVUlZFU0c2JDcmNyQkIiIiIiIhJCIiJEYsNyQkISIiRiwkIiM4Riw3JCQiIiNGLEYqNyQkISIjRiwkIiNMRiwtJSZTVFlMRUc2IyUmUE9JTlRHLUYmNiQ3UzckJCEiJEYsJCIzRysrKysrKz9hISM7NyQkITMqKSoqKioqXDI8I3BHISM8JCIzKWVZVERpVUg0JkZINyQkITMjKSoqKlw3YkJhdiNGTCQiMyl5JSpmPjZAbiJbRkg3JCQhMzYrK11LM1hGRUZMJCIzWSRbNiN6SE86WEZINyQkITMlKSoqKipcRilIJylcI0ZMJCIzPC89Im9QSj5BJUZINyQkITMiKioqKlxpM0AvUCNGTCQiMz0qZW07VyF5UlJGSDckJCEzOisrRHJeYl5BRkwkIjNUJnl6TS4scW8kRkg3JCQhMyMqKioqXDdTdyVHQEZMJCIzR1glR1QyJz5NTUZINyQkITMqKioqKlw3Oyk9LD9GTCQiMyVwOVZqWDBCPSRGSDckJCEzLisrRE8iM1YoPUZMJCIzaiUpKTN4SigqMyVIRkg3JCQhMyMqKioqKipcVid6VjxGTCQiM3g3YyJSO2RFcSNGSDckJCEzKSoqKioqXGQ7JSlHO0ZMJCIzZC9BNnEuRyxERkg3JCQhMyEqKioqKipcISlIJSpcIkZMJCIzRCxudHhcMSVHI0ZINyQkITMuKysrdmxbcDhGTCQiM0dwOkI0Im9nMiNGSDckJCEzISoqKioqKlw+aVVDIkZMJCIzX2w9RlowQCYpPUZINyQkITMtKytEaGthSTZGTCQiM0dwJVE7KFwvPzxGSDckJCEzcyoqKioqKlxYRmAqKiEjPSQiMy1MSV1SYHVMOkZINyQkITN1KioqKioqKj4jejIpKUZiciQiM1VVXjZMIzNYUSJGSDckJCEzUisrXTdSS3Z1RmJyJCIzJkhROkJQOjNBIkZINyQkITNzLCsrK1AnZUgnRmJyJCIzP0xwKUhoMlszIkZINyQkITNxKSoqKlw3KjM9KyZGYnIkIjNLTFw7bjgpPVgqRkw3JCQhM1spKioqXFBGY3BQRmJyJCIzT2ElM0Zfa2RAKUZMNyQkITM6KSoqKipcN1ZRWyNGYnIkIjNvIkgpZTcjR0otKEZMNyQkITMyKSoqKlxpNjouOEZiciQiMyc9dj4pW3pGOmdGTDckJCEzV2IrKyt2YGhIISM/JCIzJj40OCcqb1Q+LSZGTDckJCIzXSoqKipcKFFJS0giRmJyJCIzOS1ZSWVHPSQ0JUZMNyQkIjM4KioqKlw3OnhXQ0ZiciQiM3FZKio+OGo8cUxGTDckJCIzRSwrK3Z1WSlvJEZiciQiM3MmKVIjeiR5bnlFRkw3JCQiMyp5KioqKioqNEZMKFxGYnIkIjMnSCR5ST51dmg/Rkw3JCQiM0EpKioqKlxkNi5CJ0ZiciQiMykqcHQ5L0gyYTpGTDckJCIzcyoqKipcKG8zbFcoRmJyJCIzJCkpUVMtSyk0YDZGTDckJCIzNSoqKioqXEEpKW96KUZiciQiM1QhNFZ6JykqZj0iKUZicjckJCIzZSoqKioqKkhrLSw1RkwkIjMleU1jbmVoYylmRmJyNyQkIjM1KysrRC1lSTZGTCQiMyYqPjokW3E3TW8lRmJyNyQkIjN0KioqXCg9Xyh6QyJGTCQiM2o0TCM0QCk0dFZGYnI3JCQiM00rKytiKj1qUCJGTCQiM3ZiKG9uSTgrKVxGYnI3JCQiM2cqKipcKDMvMyhcIkZMJCIzPiIqPlJnQWFga0ZicjckJCIzMysrdkI0SkI7RkwkIjN5UkJbKEhVIkgqKUZicjckJCIzdSoqKioqXEtDbnUiRkwkIjN5OixrKGZ4dEEiRkw3JCQiM3IqKipcKD1uI2YoPUZMJCIzIUhVNU9XWGFuIkZMNyQkIjNQKysrISlSTys/RkwkIjM/QVZXMFpuLEFGTDckJCIzMCsrXV8hPnc3I0ZMJCIzXSIqSD00diFmJEdGTDckJCIzTisrdilRP1FEI0ZMJCIzejFjW2QiWzNjJEZMNyQkIjNHKysrNWp5cEJGTCQiM29aLT5yRkM2VkZMNyQkIjM8KytdVWpwLURGTCQiMy9KJyl5OFNecV9GTDckJCIzKysrK2dFZEBFRkwkIjNkRCV5NCY+SD1pRkw3JCQiMzkrK3YzJz4kW0ZGTCQiMzJnI3AyInBAQXRGTDckJCIzNysrRDZFanBHRkwkIjNjeiUpUlpFNHAlKUZMNyRGLSQiMzsoKioqKioqKioqKioqeipGTC1GPTYjJSVMSU5FRy0lK0FYRVNMQUJFTFNHNiRRIng2IlEieUZbXWwtJSVWSUVXRzYkOyQhI0lGMSQiI0lGMTskRixGMSQiI1NGLC0lJkNPTE9SRzYmJSRSR0JHRmZdbEZmXWxGZl1sdeg := 3; Points := [[1,3],[-1,13],[2,1],[-2,33]]; print(cat(seq(`~`,ii=1..50))); A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg): b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]): A=eval(A), b=eval(b); print(cat(seq(`~`,ii=1..50))); At := transpose(A); M := evalm( evalm(At &* A)^(-1) &* At ): Mb:= evalm( M &* b ): "(At*A)^(-1)*At" = eval(M); "(At*A)^(-1)*At*b" = eval(Mb); print(cat(seq(`~`,ii=1..50))); f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)): evaln(f(t)) = f(t); plot([Points,f(x)],x=-3..3,y=0..40,style=[point,line],colour=black); NiM+SSRkZWdHNiIiIiQ=NiM+SSdQb2ludHNHNiI3JjckIiIiIiIkNyQhIiIiIzg3JCIiI0YoNyQhIiMiI0w=NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiQvSSJBRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyYiIiJGLkYuRi43JkYuISIiRi5GMDcmRi4iIiMiIiUiIik3JkYuISIjRjMhIikvSSJiR0YlLUYnNiM3JjcjIiIkNyMiIzg3I0YuNyMiI0w=NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiM+SSNBdEc2Ii1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiM3JjcmIiIiRi5GLkYuNyZGLiEiIiIiIyEiIzcmRi5GLiIiJUY0NyZGLkYwIiIpISIpNiMvUS8oQXQqQSleKC0xKSpBdDYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyYjIiIjIiIkRi4jISIiIiInRjE3JkYuIyEiI0YwI0YyIiM3IyIiIkY4NyZGMUYxI0Y6RjNGPDcmRjFGPEY5Rjc=NiMvUTEoQXQqQSleKC0xKSpBdCpiNiItSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGKUkoX3N5c2xpYkdGJTYjNyY3IyIiJjcjISIlNyMiIiQ3IyEiIg==NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiMvLUkiZkc2IjYjSSJ0R0YmLCoiIiYiIiJGKCEiJSokRigiIiMiIiQqJEYoRi8hIiI=LSUlUExPVEc2Jy0lJ0NVUlZFU0c2JDcmNyQkIiIiIiIhJCIiJEYsNyQkISIiRiwkIiM4Riw3JCQiIiNGLEYqNyQkISIjRiwkIiNMRiwtJSZTVFlMRUc2IyUmUE9JTlRHLUYmNiQ3UzckJCEiJEYsJCIjckYsNyQkITMqKSoqKioqXDI8I3BHISM8JCIzL05BRyMpXFl6ayEjOzckJCEzIykqKipcN2JCYXYjRkskIjNuV2ZvcE4qPShmRk43JCQhMzYrK11LM1hGRUZLJCIzdyUqUWk/KSopZVYmRk43JCQhMyUpKioqKlxGKUgnKVwjRkskIjNVIWUnenAmSEIkXEZONyQkITMiKioqKlxpM0AvUCNGSyQiM0dMakFlQXZsV0ZONyQkITM6KytEcl5iXkFGSyQiM1FUS1xDJCkqRzElRk43JCQhMyMqKioqXDdTdyVHQEZLJCIzVmxQOWM6IVtuJEZONyQkITMqKioqKlw3Oyk9LD9GSyQiMylmPEFBN0dMSSRGTjckJCEzLisrRE8iM1YoPUZLJCIzXHlvMDNHM2lIRk43JCQhMyMqKioqKipcVid6VjxGSyQiMykpXEYsSlgtU0VGTjckJCEzKSoqKioqXGQ7JSlHO0ZLJCIzPV0ncENHRSd6QkZONyQkITMhKioqKioqXCEpSCUqXCJGSyQiM0E6IylwM1RQNkBGTjckJCEzLisrK3ZsW3A4RkskIjMmWy5YeSkqKUduPUZONyQkITMhKioqKioqXD5pVUMiRkskIjNKNy0qPWonemE7Rk43JCQhMy0rK0Roa2FJNkZLJCIzT3FIKCozJGUsWyJGTjckJCEzcyoqKioqKlxYRmAqKiEjPSQiM3VcWSE0eVFSSCJGTjckJCEzdSoqKioqKio+I3oyKSlGYnIkIjMoM1FccW9yTDoiRk43JCQhM1IrK103Ukt2dUZiciQiMyNHPWQpPW9VMzVGTjckJCEzcywrKytQJ2VIJ0ZiciQiM2RUcyJmR1BxJiopRks3JCQhM3EpKioqXDcqMz0rJkZiciQiM3Y8M1dhP1N3eUZLNyQkITNbKSoqKlxQRmNwUEZiciQiMyNlRTtHPXh3KXBGSzckJCEzOikqKioqXDdWUVsjRmJyJCIzJylcKilIaWIlUj4nRks3JCQhMzIpKioqXGk2Oi44RmJyJCIzQU43c28mPldkJkZLNyQkITNXYisrK3ZgaEghIz8kIjMsaXkzKVtzPSwmRks3JCQiM10qKioqXChRSUtIIkZiciQiM3ZqQmRMJD0yYCVGSzckJCIzOCoqKipcNzp4V0NGYnIkIjM6JilSbGBreSc9JUZLNyQkIjNFLCsrdnVZKW8kRmJyJCIzJG88cGElZmQjKVFGSzckJCIzKnkqKioqKio0RkwoXEZiciQiM0UhPUkiWyV5J0hPRks3JCQiM0EpKioqKlxkNi5CJ0ZiciQiMzEiKVxXIj5RMFYkRks3JCQiM3MqKioqXChvM2xXKEZiciQiMzg3IT5qcSkqPkYkRks3JCQiMzUqKioqKlxBKSlveilGYnIkIjMhKVt1RGJFMEFKRks3JCQiM2UqKioqKipIay0sNUZLJCIzbyZmPSpvTigqKSpIRks3JCQiMzUrKytELWVJNkZLJCIzNl4kKjRFSz5uR0ZLNyQkIjN0KioqXCg9Xyh6QyJGSyQiM3k8NkJoanhPRkZLNyQkIjNNKysrYio9alAiRkskIjMlZUdua0YpUXFERks3JCQiM2cqKipcKDMvMyhcIkZLJCIzXExYYkJsNCFRI0ZLNyQkIjMzKyt2QjRKQjtGSyQiM3lLWCdIXEFYOCNGSzckJCIzdSoqKioqXEtDbnUiRkskIjNxZmI1cFUhcCQ9Rks3JCQiM3IqKipcKD1uI2YoPUZLJCIzZWheJlJmPz9YIkZLNyQkIjNQKysrISlSTys/RkskIjM0bFgyRG9WJikqKkZicjckJCIzMCsrXV8hPnc3I0ZLJCIzKHBZdCgqUWFlUSVGYnI3JCQiM04rK3YpUT9RRCNGSyQhM0skb1FUXCMzXEFGYnI3JCQiM0crKys1anlwQkZLJCEzNXUpUVF0aSQqUipGYnI3JCQiMzwrK11VanAtREZLJCEzSXE1OyFSSGYqPUZLNyQkIjMrKysrZ0VkQEVGSyQhM1paRWtdWFwmKUdGSzckJCIzOSsrdjMnPiRbRkZLJCEzc0wiKSpRJDNGIzQlRks3JCQiMzcrK0Q2RWpwR0ZLJCEzPSlwWks/IylcUyZGSzckRi0kISIoRiwtRj02IyUlTElORUctJStBWEVTTEFCRUxTRzYkUSJ4NiJRInlGW11sLSUmQ09MT1JHNiYlJFJHQkckRixGMUZhXWxGYV1sLSUlVklFV0c2JDskISNJRjEkIiNJRjE7RmFdbCQiI1NGLA==deg := 2; Points := [[1,4],[-1,5],[2,31],[-2,15]]; print(cat(seq(`~`,ii=1..50))); A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg): b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]): A=eval(A), b=eval(b); print(cat(seq(`~`,ii=1..50))); At := transpose(A); M := evalm( evalm(At &* A)^(-1) &* At ): Mb:= evalm( M &* b ): "(At*A)^(-1)*At" = eval(M); "(At*A)^(-1)*At*b" = eval(Mb); print(cat(seq(`~`,ii=1..50))); f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)): evaln(f(t)) = f(t); plot([Points,f(x)],x=-3..3,y=-10..40,style=[point,line],colour=black);NiM+SSRkZWdHNiIiIiM=NiM+SSdQb2ludHNHNiI3JjckIiIiIiIlNyQhIiIiIiY3JCIiIyIjSjckISIjIiM6NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiQvSSJBRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyUiIiJGLkYuNyVGLiEiIkYuNyVGLiIiIyIiJTclRi4hIiNGMy9JImJHRiUtRic2IzcmNyNGMzcjIiImNyMiI0o3IyIjOg==NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiM+SSNBdEc2Ii1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiM3JTcmIiIiRi5GLkYuNyZGLiEiIiIiIyEiIzcmRi5GLiIiJUY0NiMvUS8oQXQqQSleKC0xKSpBdDYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzclNyYjIiIjIiIkRi4jISIiIiInRjE3JiMiIiIiIzUjRjJGNyNGNiIiJiNGMkY6NyZGMUYxI0Y2RjNGPQ==NiMvUTEoQXQqQSleKC0xKSpBdCpiNiItSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGKUkoX3N5c2xpYkdGJTYjNyU3IyMhIiYiIiQ3IyMiI0oiIzU3IyMiI1AiIic=NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiMvLUkiZkc2IjYjSSJ0R0YmLCgjISImIiIkIiIiRigjIiNKIiM1KiRGKCIiIyMiI1AiIic=LSUlUExPVEc2Jy0lJ0NVUlZFU0c2JDcmNyQkIiIiIiIhJCIiJUYsNyQkISIiRiwkIiImRiw3JCQiIiNGLCQiI0pGLDckJCEiI0YsJCIjOkYsLSUmU1RZTEVHNiMlJlBPSU5URy1GJjYkN1M3JCQhIiRGLCQiMzlMTExMTExgVyEjOzckJCEzKikqKioqKlwyPCNwRyEjPCQiM1VEVEEiekUwLSVGSjckJCEzIykqKipcN2JCYXYjRk4kIjM2XGFIO241aE9GSjckJCEzNisrXUszWEZFRk4kIjN4OlpgKmYhKWZGJEZKNyQkITMlKSoqKipcRilIJylcI0ZOJCIzZyZbWUVALCgzSEZKNyQkITMiKioqKlxpM0AvUCNGTiQiM3UpKXovVCgpW2pERko3JCQhMzorK0RyXmJeQUZOJCIzRlolMz5LVjpFI0ZKNyQkITMjKioqKlw3U3clR0BGTiQiMzgkcElsZWZzJz5GSjckJCEzKioqKipcNzspPSw/Rk4kIjNLenZLUUxjI28iRko3JCQhMy4rK0RPIjNWKD1GTiQiMyE9OmQ4I3BtPTlGSjckJCEzIyoqKioqKlxWJ3pWPEZOJCIzKDMoKWZmWkt6OyJGSjckJCEzKSoqKioqXGQ7JSlHO0ZOJCIzcVUnRzBmaVtrKkZONyQkITMhKioqKioqXCEpSCUqXCJGTiQiM3g7V0ROVmJcdkZONyQkITMuKysrdmxbcDhGTiQiM3djQSk+Mm9NbCZGTjckJCEzISoqKioqKlw+aVVDIkZOJCIzSXc7IyoqUSNHQlNGTjckJCEzLSsrRGhrYUk2Rk4kIjNdcD0hKmZPWjVGRk43JCQhM3MqKioqKipcWEZgKiohIz0kIjMjWzdTJHA5KnBOIkZONyQkITN1KioqKioqKj4jejIpKUZkciQiM2o7OituSFhvUUZkcjckJCEzUisrXTdSS3Z1RmRyJCEzOlVvczUiXDBRJkZkcjckJCEzcywrKytQJ2VIJ0ZkciQhMyE+LzhQRVpTPCJGTjckJCEzcSkqKipcNyozPSsmRmRyJCEzY2cpXF0xWFduIkZONyQkITNbKSoqKlxQRmNwUEZkciQhMyIpNDpLXEEoKmU+Rk43JCQhMzopKioqKlw3VlFbI0ZkciQhM11rUzd1cD9jP0ZONyQkITMyKSoqKlxpNjouOEZkciQhM1smR1s7LEBmJz5GTjckJCEzV2IrKyt2YGhIISM/JCEzeUFrIXBNJHp2O0ZONyQkIjNdKioqKlwoUUlLSCJGZHIkITMvdVFQWzZqaTZGTjckJCIzOCoqKipcNzp4V0NGZHIkITN3ISopeSgqPjpAUyZGZHI3JCQiM0UsKyt2dVkpbyRGZHIkIjNIXD4pR1YvczokRmRyNyQkIjMqeSoqKioqKjRGTChcRmRyJCIzSmA7LSYpcEsrOUZONyQkIjNBKSoqKipcZDYuQidGZHIkIjN5LDIzKVxKJWVFRk43JCQiM3MqKioqXChvM2xXKEZkciQiM3dLVFw1ISk+aFNGTjckJCIzNSoqKioqXEEpKW96KUZkciQiM0lkUXVMJ2VDJGVGTjckJCIzZSoqKioqKkhrLSw1Rk4kIjMwKG94S3RaZWgoRk43JCQiMzUrKytELWVJNkZOJCIzZ1pKKmY8UC9zKkZONyQkIjN0KioqXCg9Xyh6QyJGTiQiM05NWEEzJEcxPSJGSjckJCIzTSsrK2IqPWpQIkZOJCIzJTRlJG9FYTZHOUZKNyQkIjNnKioqXCgzLzMoXCJGTiQiMzBkITNGRksmejtGSjckJCIzMysrdkI0SkI7Rk4kIjM5I2UiUTA8Y2g+Rko3JCQiM3UqKioqKlxLQ251IkZOJCIzN28vMmZoSGNBRko3JCQiM3IqKipcKD1uI2YoPUZOJCIzRGBLJkckSClcZSNGSjckJCIzUCsrKyEpUk8rP0ZOJCIzPEEtJEd0NTUjSEZKNyQkIjMwKytdXyE+dzcjRk4kIjNPI0dhaikqKVIlRyRGSjckJCIzTisrdilRP1FEI0ZOJCIzY3ZgNUxLXWtPRko3JCQiM0crKys1anlwQkZOJCIzeFNDcyx2NEpTRko3JCQiMzwrK11VanAtREZOJCIzODNAQHNTbHJXRko3JCQiMysrKytnRWRARUZOJCIzQ3htWFEzOiUpW0ZKNyQkIjM5Kyt2Myc+JFtGRk4kIjNhIm84SVxjSk0mRko3JCQiMzcrK0Q2RWpwR0ZOJCIzQilvNCFmMi8sZUZKNyQkIiIkRiwkIjNHTExMTExMOGpGSi1GPzYjJSVMSU5FRy0lK0FYRVNMQUJFTFNHNiRRIng2IlEieUZfXWwtJSZDT0xPUkc2JiUkUkdCRyRGLEYxRmVdbEZlXWwtJSVWSUVXRzYkOyQhI0lGMSQiI0lGMTskISQrIkYxJCIjU0Ysdeg := 3; Points := [[1,4],[-1,5],[2,31],[-2,15]]; print(cat(seq(`~`,ii=1..50))); A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg): b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]): A=eval(A), b=eval(b); print(cat(seq(`~`,ii=1..50))); At := transpose(A); M := evalm( evalm(At &* A)^(-1) &* At ): Mb:= evalm( M &* b ): "(At*A)^(-1)*At" = eval(M); "(At*A)^(-1)*At*b" = eval(Mb); print(cat(seq(`~`,ii=1..50))); f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)): evaln(f(t)) = f(t); plot([Points,f(x)],x=-3..3,y=-10..40,style=[point,line],colour=black);NiM+SSRkZWdHNiIiIiQ=NiM+SSdQb2ludHNHNiI3JjckIiIiIiIlNyQhIiIiIiY3JCIiIyIjSjckISIjIiM6NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiQvSSJBRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyYiIiJGLkYuRi43JkYuISIiRi5GMDcmRi4iIiMiIiUiIik3JkYuISIjRjMhIikvSSJiR0YlLUYnNiM3JjcjRjM3IyIiJjcjIiNKNyMiIzo=NiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiM+SSNBdEc2Ii1JJ21hdHJpeEc2JEkqcHJvdGVjdGVkR0YpSShfc3lzbGliR0YlNiM3JjcmIiIiRi5GLkYuNyZGLiEiIiIiIyEiIzcmRi5GLiIiJUY0NyZGLkYwIiIpISIpNiMvUS8oQXQqQSleKC0xKSpBdDYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyYjIiIjIiIkRi4jISIiIiInRjE3JkYuIyEiI0YwI0YyIiM3IyIiIkY4NyZGMUYxI0Y6RjNGPDcmRjFGPEY5Rjc=NiMvUTEoQXQqQSleKC0xKSpBdCpiNiItSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGKUkoX3N5c2xpYkdGJTYjNyY3IyMhIiYiIiQ3IyEiIzcjIyIjUCIiJzcjI0YwIiIjNiNJU3xpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpcnxpckc2Ig==NiMvLUkiZkc2IjYjSSJ0R0YmLCojISImIiIkIiIiRighIiMqJEYoIiIjIyIjUCIiJyokRihGLCNGLEYwLSUlUExPVEc2Jy0lJ0NVUlZFU0c2JDcmNyQkIiIiIiIhJCIiJUYsNyQkISIiRiwkIiImRiw3JCQiIiNGLCQiI0pGLDckJCEiI0YsJCIjOkYsLSUmU1RZTEVHNiMlJlBPSU5URy1GJjYkN1U3JCQhIiRGLCQiM2RMTExMTExMPiEjOzckJCEzKikqKioqKlwyPCNwRyEjPCQiMzV0SGheS3VTPkZKNyQkITMjKSoqKlw3YkJhdiNGTiQiM0Zha3FIIVskRz5GSjckJCEzNisrXUszWEZFRk4kIjM9KjQ7dUwhPiYqPUZKNyQkITMlKSoqKipcRilIJylcI0ZOJCIzIyk+JHBKI1I1Vj1GSjckJCEzIioqKipcaTNAL1AjRk4kIjM8ciQzaSxKWHgiRko3JCQhMzorK0RyXmJeQUZOJCIzS2ojKVEmUShwKHAiRko3JCQhMyMqKioqXDdTdyVHQEZOJCIzaTh4XWo4TjE7Rko3JCQhMyoqKioqXDc7KT0sP0ZOJCIzME4hNCZSJEg1XSJGSjckJCEzLisrRE8iM1YoPUZOJCIzLGheJGVvKSlvUSJGSjckJCEzIyoqKioqKlxWJ3pWPEZOJCIzQGxUSkQ5KT1FIkZKNyQkITMpKioqKipcZDslKUc7Rk4kIjN6JXA7MFJucDkiRko3JCQhMyEqKioqKipcISlIJSpcIkZOJCIzM3JKM1A8KlIsIkZKNyQkITMuKysrdmxbcDhGTiQiMzx0LXkjKls6JnkpRk43JCQhMyEqKioqKipcPmlVQyJGTiQiMy9xa2s/Nlx6dUZONyQkITMtKytEaGthSTZGTiQiM2ddVikpKmZ0KDNqRk43JCQhM3MqKioqKipcWEZgKiohIz0kIjM8dWVKWykqM2FcRk43JCQhM3UqKioqKioqPiN6MikpRmRyJCIzIWVkJ28oWyQqUSZRRk43JCQhM1IrK103Ukt2dUZkciQiM2Y+LiEzUnR4ayNGTjckJCEzcywrKytQJ2VIJ0ZkciQiMyVHNDpBKzZEbSJGTjckJCEzcSkqKipcNyozPSsmRmRyJCIzejJKT1MhUngpb0ZkcjckJCEzWykqKipcUEZjcFBGZHIkITMuJEhLW1I3JW82RmRyNyQkITM6KSoqKipcN1ZRWyNGZHIkITN4QzAhcCkqSFY3KUZkcjckJCEzMikqKipcaTY6LjhGZHIkITNUNjBdVE1qLzhGTjckJCEzV2IrKyt2YGhIISM/JCEzVngmPVlhKm9nO0ZONyQkIjNdKioqKlwoUUlLSCJGZHIkITM2PGJGaFYkKj09Rk43JCQiMzgqKioqXDc6eFdDRmRyJCEzKG8lKmUxdEVedyJGTjckJCIzRSwrK3Z1WSlvJEZkciQhMzEjZkghPW43IVwiRk43JCQiMyp5KioqKioqNEZMKFxGZHIkITNIdyc9QGVYYl4qRmRyNyQkIjNBKSoqKipcZDYuQidGZHIkITNtWHJsR1ZtaTpGZHI3JCQiM3MqKioqXChvM2xXKEZkciQiM3glKT53OFZaRykpRmRyNyQkIjM1KioqKipcQSkpb3opRmRyJCIzbloiXDVqcHJPI0ZONyQkIjNlKioqKioqSGstLDVGTiQiMyNbQzh6aE9fLCVGTjckJCIzNSsrK0QtZUk2Rk4kIjNaWylvRENmQDcnRk43JCQiM3QqKipcKD1fKHpDIkZOJCIzc2pyLnNLM2QkKUZONyQkIjNNKysrYio9alAiRk4kIjNOPl0iW1FkczYiRko3JCQiM2cqKipcKDMvMyhcIkZOJCIzMGQyM0c0Sz45Rko3JCQiMzMrK3ZCNEpCO0ZOJCIzYlAiKiplWT9geCJGSjckJCIzdSoqKioqXEtDbnUiRk4kIjMpPmxdJGVyJ1s7I0ZKNyQkIjNyKioqXCg9biNmKD1GTiQiM2FVOklnbVw9RUZKNyQkIjNQKysrISlSTys/Rk4kIjNRXzJGJ1EhWyxKRko3JCQiMzArK11fIT53NyNGTiQiM01IXilvSCgqUmskRko3JCQiM04rK3YpUT9RRCNGTiQiMz8nSFNUcG1CQiVGSjckJCIzRysrKzVqeXBCRk4kIjMlNGMzJWVWeD1bRko3JCQiMzwrK11VanAtREZOJCIzMmpYIUdlP21hJkZKNyQkIjMrKysrZ0VkQEVGTiQiMz5RKSpwOCk9KFxpRko3JCQiMzkrK3YzJz4kW0ZGTiQiM1YhejhabEhgMChGSjckJCIzOSsrKzVoKCozR0ZOJCIzXWZdXDE4Iz1ZKEZKNyQkIjM3KytENkVqcEdGTiQiM1Y6bWcnKT46Iyl5Rko3JCQiMzErXWkwaiJbJEhGTiQiM00hKkdQJTQ2JlwkKUZKNyQkIiIkRiwkIjNHTUxMTExMTCkpRkotRj82IyUlTElORUctJStBWEVTTEFCRUxTRzYkUSJ4NiJRInlGaV1sLSUmQ09MT1JHNiYlJFJHQkckRixGMUZfXmxGX15sLSUlVklFV0c2JDskISNJRjEkIiNJRjE7JCEkKyJGMSQiI1NGLA==