-
Notifications
You must be signed in to change notification settings - Fork 6
/
kalc.vars
145 lines (99 loc) · 7.92 KB
/
kalc.vars
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#example functions used later on
f(x)=x^3-x
#tangent line at point p of function f(x)
t(x,p)=f'(p)(x-p)+f(p)
#so f(x) # t(x,1) # t(x,-2) will show the tangent line of f(x) at 1, which intersects at -2p so -2
#perpendicular to the tangent at given point p
pt(x,p)=(p-x)/f'(p)+f(p)
#vertical line from top down reflecting at point p of f(x), to graph original line run y0+p
r(x,p)=fm=f'(p):(x-p)(fm^2-1)/(2fm)+f(p)
#to only show the reflection
#r(x,p)=pw({x(f'(p)^2-1)/(2f'(p))+f(p)-p*(f'(p)^2-1)/(2f'(p)),(sgn(f'(p))==-1&&x>=p)||(sgn(f'(p))==1&&x<=p)})
#r(x,p) extended to a line mx+b reflecting off of f(x) at point p
r(x,p,m)=(x-p)tan(2atan(f'(p))-atan(m))+f(p)
#in reference to the vars for the function the original line would be mx+f(p)-m*p
rl(x,p,m)=m(x-p)+f(p)
#newtons method to find 0, off of f(x)
n(x)=x-f(x)/f'(x)
#trapazoidal method of approximenting area under the curve as n goes towards infinity
ar(a,b,n)=sum(k,(b-a)/n(f(a+k(b-a)/n)+f(a+(k+1)(b-a)/n))/2,0,n-1)
#basic method of approximenting arc length as n goes towards infinity
al(a,b,n)=sum(k,sqrt(((b-a)/n)^2+(f(a+(k+1)(b-a)/n)-f(a+k(b-a)/n))^2),0,n-1)
#gl(a,b,n) shows the lines al(a,b,n) uses to calculate the arc length, so vrange=6;f(x);gl(0,2,4) shows 4 lines that approximate the arc length of f(x) from 0 to 2
gl(a,b,n)=mat(k,{a+k(b-a)/n,f(a+k(b-a)/n)},0,n)
#nth derivitive, precision should be around n*128, so this fails at the 5th derivitive at default precision
#dn(x,n)=sum(k,(-1)^k C(n,k) f(x+(n-k)2^-100),0,n)/2^(-100n)
#dn(x,n)=pw({slope(p,dn(p,n-1),x),n>=1},{f(x),1})
#f(x) rotated by θ
fr(x,θ)=φ=atan(x,f(x))+θ:{cos(φ),sin(φ)}sqrt(x^2+f(x)^2)
#the following is a function to estimate the path of a moving positive charge under the effects of any number of stationary positive or negitive charges, loss of accuracy when close to a stationary charge
#c is the starting {x,y,vx,vy} of the moving charge
#t is the time intervals that will be computed
#a is the cordonates and charge of the stationary charges, organized in a matrix like {{x1,y1,c1},{x2,y2,c2}...{xN,yN,cN}}
#example graph function with the moving charge stationary at the origin with 1/10th second time intervals and a positive chage at {0,1} and negitive charge at {2,0}
#part(iter(g,ef(g,1/10,{{0,1,1},{2,0,-1}}),{0,0,0,0},100,1),-1,0..1))#{{0,1}}#{{2,0}}
ef(c,t,a)=x=part(c,0):y=part(c,1):vx=part(c,2):vy=part(c,3):r=vec(i,(part(a,i,0)-x)^2+(part(a,i,1)-y)^2,0,len(a)-1):θ=mat(i,{part(a,i,0)-x,part(a,i,1)-y}/sqrt(part(r,i)),0,len(a)-1):xp=sum(i,-part(a,i,2)part(θ,i,0)/part(r,i),0,len(a)-1):yp=sum(i,-part(a,i,2)part(θ,i,1)/part(r,i),0,len(a)-1):{x+t*vx+t^2/2*xp,y+t*vy+t^2/2*yp,vx+t*xp,vy+t*yp}
#refraction of light using snells law, x=1 to x=2 is considered a different medium with a refraction index of 'b', 'm' is starting slope of line, 'a' is refraction index outside of x=1 to x=2
#graphing s(x,2,1.5,1.75) will show a refraction example with an index of refraction of 1.5 going to 1.75 with a initial slope of 2
s(x,m,a,b)=d=(am/sqrt(m^2+1)/b)/(sqrt(1-(am/sqrt(m^2+1)/b)^2)):r=(bd/sqrt(d^2+1)/a)/(sqrt(1-(bd/sqrt(d^2+1)/a)^2)):pw({rx+d-r,x>2},{dx+m-d,2>x>1},mx)
#turns a complex number into coordinates on a riemann sphere
rs(z)=θ=atan(re(z),im(z)):c=cos(θ):s=sin(θ):n=1-2/(|z|+1):r=sqrt((1-n^2)/(c^2+s^2)):{c r,s r,n}
#nth deritivive of x^p at x=b, negitive p values corrospond to the anti derititive. cant graph negitive integers p likely do to logarithms from integration, however where logarithms for integration do not apply the whole numbers will work, ie g(-1,-2,3)=-1/3 but g(-2,-2,3) will have a logarithm so it fails
g(n,p,b)=P(p,n) b^(p-n)
#below works for -p values but does not integrate properly for -p values
#g(n,p,b)=lim(a,re(P(p+ai,n)),0) b^(p-n)
#another continuation that can graph negitive p values, however it outputs complex numbers at non whole n values
#g(n,p,b)=(-1)^n b^(p-n) ph(-p,n)
#for p=-1 fixes negitive integer n values
#g(n,p,b)=lim(a,(-1)^(n+a) b^(p-n-a) ph(-p,n+a) + b^(p-n) / (a(p-n)!),0)
#functions used for tangent planes
z(x,y)=x^3-x+y^3-y
zx(x,y)=slope(p,z(p,y),x)
zy(x,y)=slope(p,z(x,p),y)
#tangent plane at point px, py
zt(x,y,px,py)=(zx(px,py))*x+(zy(px,py))*y+(z(px,py)-zx(px,py)*px-zy(px,py)*py)
#so z(x,y) # zt(x,y,2,3) will have the tangent plane of z(x,y) at (2,3)
#z(x,y) rotated by θ and φ
zr(x,y,θ,φ)=α=atan(z(x,y),sqrt(x^2+y^2))+φ:β=atan(x,y)+θ:{sin(α)cos(β),sin(α)sin(β),cos(α)}sqrt(x^2+y^2+z(x,y)^2)
#gets how many digits match, ch(22/7,pi)=3 as 3.142.. equals 3.141.. upto the third decimal
ch(a,b)=floor(log(10,max{a,b}))-floor(log(10,|a-b|))
#i,j,k unit vectors if you like those
#i={1,0,0}
#j={0,1,0}
#k={0,0,1}
#a cube given by 3d points
cube={{0,0,0},{1,0,0},{1,1,0},{0,1,0},{0,0,0},{0,0,1},{0,1,1},{0,1,0},{0,1,1},{1,1,1},{1,1,0},{1,1,1},{1,0,1},{1,0,0},{1,0,1},{0,0,1}}
#the following is graphing this cube and it rotated pi/4 rad in yaw a roll directions
#ticks=3;xr=-1,2;yr=-1,2;zr=1.5;cube#cube*rotate(pi/4,0,pi/4)
#minimum distance between b^x and log(b,x) over b where b>=root(e,e)
minexp(x)=sqrt(2)log(x,eln(x))
#minimum distance between left and right side of x^-(2n+1) over n(n is natural)
minpow(x)=2sqrt(root(x,2x+2)^2+root(x,2x+2)^(-2*x))
#minimum distance between sec(a*x) and its inverse, asec(x)/a
minsec(x)=sqrt(2)(sec(asin((sqrt(x^2+4)-x)/2))-(asin((sqrt(x^2+4)-x)/2)/x))
#following is minimum distance between the center curve and curve right of tan(a*x)
#distance between (x,tan(ax)) and (pi/a-x,-tan(ax))
disttan(x,a)=sqrt((2x-pi/a)^2+4tan(ax)^2)
#derivitive of above set to 0 simplified
mintan(x,a)=x+a*sin(ax)/cos(ax)^3-pi/(2a)
#derivitive of above to find 0 by newtons method
mintanp(x,a)=a^2((1+2sin(ax)^2)/cos(ax)^4)+1
#modified newtons method to allow graphing along 'a'
n(x,a)=x-mintan(x,a)/mintanp(x,a)
#disttan(n(n(n(n(1/x,x),x),x),x),x) for example will graph it fairly nicely, we start with 1/x to scale properly and not get trapped in a asymptote
#the following graphically shows that it finds the minimum for just tan(c*x) by inputing the following into the calculator as the circles only intersect the other curve once with 1 line going between the 2 points of interest and the other should intersect the 2 circles at the same points while being perpendicular to the other line, you may need to increase the amount of 'n' to increase precision
# c=2 ; a=n(n(n(n(n(1/(2c),c),c),c),c),c) ; b=disttan(a,c) ; tan(c*x) # piecewise({+-sqrt(b^2-(x-a)^2)+tan(a*c),x<=(a+b)&&x>=(a-b)}) # piecewise({+-sqrt(b^2-(x-(pi/c-a))^2)-tan(c*a),x<=((pi/c-a)+b)&&x>=((pi/c-a)-b)}) # (-2tan(a*c)/(pi/c-2a))x+tan(a*c)-(-2tan(a*c)/(pi/c-2a))a # x*c*sec(a*c)^2-sec(a*c)^2*pi/2
#{year,month,day,hour,min,second} derived from epoch time, with o as hour offset
#date(o)=t=epoch:{1970+floor(t->year),floor((fract(t->year)year->day)/30.4375)+1,floor(fract((fract(t->year)year->day)/30.4375)day30.4375->day),floor(fract(fract(t->year)year->day)day->hour)+o,floor(fract(fract(fract(t->year)year->day)day->hour)hour->min),floor(fract(fract(fract(fract(t->year)year->day)day->hour)hour->min)min->second)}
#gets the distribution data for the sum of k amounts of n sided die starting at 0, dice(6,2,2) will give the frequency that 2 6 sided die will give a sum of 4 or (p+k) which is 3 so 3/6^2 will give the chance of rolling a sum of 4 from 2 6 sided die, than you can use 'vec(b,dice(6,2,b),0,(6-1)2)' to get the entire distribution data for 2 6 sided die
#dice(n,k,p)=piecewise({1,p==0},{0,(0>p)||(p>(k(n-1)))},{sum(a,dice(n,k-1,p-a),0,n-1),1})
#hyperoperation function
H(a,n,b)=piecewise({b+1,n==0},{a,n==1&&b==0},{0,n==2&&b==0},{1,n>=3&&b==0},{H(a,n-1,H(a,n,b-1)),1})
#graph of the chance for the sum of 2 die to be less then value of a card picked
# a=dice{6,6} ; b=1..13 ; vec(c,part(a,c)*part(b,c),0,10) # vec(c,part(a,c)*(13-part(b,c)),0,10)
#vector input example, m{1,2,3,4}=1^2+2^2+3^2+4^2
m(v)=sum(a,part(v,a)^2,0,len(v)-1)
#x^3+px+q=0, depressed cubic :c
dc(p,q)=cbrt(-q/2+sqrt(q^2/4+p^3/27))+cbrt(-q/2-sqrt(q^2/4+p^3/27))
#complex expansion of fibonacci sequence
fibonacci(x)=(φ^x-(-1/φ)^x)/sqrt(5)