Does anybody have any interest in some calculus functions I whipped up? Currently programming a calculator and figured id post some of the functions here if anyone had any interest.
i have much interest although i have forgotten Calculus
I love maths, and would like using calculus in CODEA, nice you made those functions.
I must admit I’m curious as to what you mean by “calculus functions”. What specifically have you implemented?
Nothing complex, just things like finding definite untegrals and derivatives. I plan to post the code once i get it all nice and tidy and once i figure out whats wrong with my integral function. It does a trapezoidal sum and for some reason it doesnt work with certain numbers of segments, if you care to see, here it be
Integral={}
function Integral.calculate(func,x1,x2,mode,seg)
func = func or 'x'
x1 = x1 or 0
x2= x2 or 0
mode = mode or Settings.modes.CARTESIAN
local f = load("return (function(x) return "..func.." end)")()
local function cartesian()
local delta = (x2-x1)/(seg or 2000000)
local sum = 0
if delta~=0 then
for currx = x1,x2,delta do
sum=sum+f(currx)
end
sum=sum-f(x1)/2
sum=sum-f(x2)/2
end
sum = round(sum*delta,8)
return (sum or "No Solution Found")
end
local function polar()
local delta = (x2-x1)/(seg or 2000000)
local sum = 0
sum=sum+(f(x1)^2)
sum=sum+(f(x2)^2)
x1=x1+delta
if delta~=0 then
for currx = x1,x2,delta do
sum=sum+(f(currx)^2)
end
end
sum = round(sum*delta/2,8)
return (sum or "No Solution Found")
end
if mode == Settings.modes.CARTESIAN then
return cartesian()
elseif mode == Settings.modes.POLAR then
return polar()
elseif mode == Settings.modes.PARAMETRIC then
end
end
function draw()
print(9, Integral.calculate("x",0,4,nil,9))
print(6, Integral.calculate("x",0,4,nil,6))
end
Note how it is correct with six subsections, but not with nine
Actually, just under 50% of numbers dont work properly
Only ever do for loops with integers:
seg = seg or 2000000
local f = load("return (function(x) return "..func.." end)")()
local function cartesian()
local delta = (x2-x1)/seg
local sum = 0
if delta~=0 then
for currx = 0,seg do
sum=sum+f(x1+currx*delta)
end
sum=sum-f(x1)/2
sum=sum-f(x2)/2
end
sum = round(sum*delta,8)
return (sum or "No Solution Found")
end
(Similar adjustment for the polar version.)
Any reason why you’re defining all your subfunction every time rather than just the one you need?
I’d love to see the symbolic integration and differentiation code. I’ve a few projects waiting for a decent maths parser.
I should just be defining the one i need, but currently the code is very sloppy, i havent yet refactored it. Thanks for the tip, by the way, i guessed it had something to do with not using integers, but by the time i went to check youd already responded