Advertisement
Guest User

NoICE

a guest
Oct 22nd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.17 KB | None | 0 0
  1. function solve(x,solver)
  2.  local result=solver[0]
  3.  for i=1,#solver//2 do
  4.   result=result*(x-solver[i*2-1])+solver[i*2]
  5.  end
  6.  return result
  7. end
  8.  
  9. function f(x)
  10.  return x*x-2*math.abs(x)+1
  11. end
  12.  
  13. function getStart(xs)
  14.  local t={}
  15.  for i=1,#xs do
  16.   t[i]=f(xs[i])
  17.  end
  18.  return t
  19. end
  20.  
  21. function table.print(t,n)
  22.  local n=n or #t
  23.  for i=1,n do
  24.   print(t[i])
  25.  end
  26. end
  27.  
  28. function getSolver(xs)
  29.  local t=getStart(xs)
  30.  local n=#t
  31.  local solver={}
  32.  solver[n*2-2]=t[1]
  33.  for i=1,n-1 do
  34.   for j=1,n-i do
  35.    t[j]=(t[j+1]-t[j])/(xs[j+i]-xs[j])
  36.   end
  37.   solver[(n-i)*2-2]=t[1]
  38.   solver[(n-i)*2-1]=xs[i]
  39.  end
  40.  return solver
  41. end
  42.  
  43. function getR(solver,xs)
  44.  local max=0
  45.  for i=1,#xs-1 do
  46.   local x=(xs[i]+xs[i+1])/2
  47.   local err=solve(x,solver)-f(x)
  48.   if math.abs(err)>math.abs(max) then
  49.    max=err
  50.    print(x)
  51.   end
  52.  end
  53.  return max
  54. end
  55.  
  56. local xs1={}
  57. for i=0,10 do
  58.  xs1[i+1]=i*0.4-2
  59. end
  60. local xs2={}
  61. for i=0,25 do
  62.  xs2[i+1]=i*0.16-2
  63. end
  64. local xs3={}
  65. for i=0,50 do
  66.  xs3[i+1]=i*0.8-2
  67. end
  68. local solver1=getSolver(xs1)
  69. print(getR(solver1,xs1))
  70. local solver2=getSolver(xs2)
  71. print(getR(solver2,xs2))
  72. local solver3=getSolver(xs3)
  73. print(getR(solver3,xs3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement