luaforwindows/files/examples/iup/misc/simple-pplot.wlua

40 lines
944 B
Lua
Executable File

require "iuplua"
require "iupx"
function least_squares (xx,yy)
local xsum = 0.0
local ysum = 0.0
local xxsum = 0.0
local yysum = 0.0
local xysum = 0.0
local n = #xx
for i = 1,n do
local x,y = xx[i], yy[i]
xsum = xsum + x
ysum = ysum + y
xxsum = xxsum + x*x
yysum = yysum + y*y
xysum = xysum + x*y
end
local m = (xsum*ysum/n - xysum )/(xsum*xsum/n - xxsum)
local c = (ysum - m*xsum)/n
return m,c
end
local xx = {0,2,5,10}
local yy = {1,1.5,6,8}
local m,c = least_squares(xx,yy)
function eval (x) return m*x + c end
local plot = iupx.pplot {TITLE = "Simple Data",AXS_YMIN=0,GRID="YES"}
-- the original data
plot:AddSeries(xx,yy,{DS_MODE="MARK",DS_MARKSTYLE="CIRCLE"})
-- the least squares fit
local xmin,xmax = xx[1],xx[#xx]
plot:AddSeries({xmin,xmax},{eval(xmin),eval(xmax)})
iupx.show_dialog{plot; title="Easy Plotting",size="QUARTERxQUARTER"}