2x2 ja 3x3 lineaarsed vorrandisusteemid Crameri reegliga, 2x2/3x3 determinant.
# Vorrandisusteem EE - NumWorks # Created by Alvar Laigna - https://alvarlaigna.com # Nooled:vali OK:kinnita Back:tagasi from kandinsky import fill_rect as F,draw_string as D from ion import keydown as K from time import sleep as Z SW,SH=320,222 BK=(0,)*3;WH=(255,)*3 BL=(50,110,230);TL=(0,190,190) YL=(220,200,60);GN=(60,190,60) DG=(120,)*3 okv=1 if K(4)or K(52) else 0 def okd(): return K(4)or K(52) def okp(): global okv d=okd() if d and not okv: okv=1 return True if not d:okv=0 return False def wup(): while okd():Z(0.02) Z(0.12) def menu(title,items,sub=False): sel=0;n=len(items) while True: F(0,0,SW,SH,BK) D(title,SW//2-len(title)*5,6,TL,BK) F(0,24,SW,2,(40,)*3) for i in range(n): y=34+i*22 if i==sel: F(8,y,SW-16,20,BL) D("> "+items[i],14,y+2,WH,BL) else: D(" "+items[i],14,y+2,DG,BK) if sub:D("Back=tagasi",100,SH-16,(60,)*3,BK) else:D("Back=valju",115,SH-16,(60,)*3,BK) while True: if K(1):sel=(sel-1)%n;Z(0.15);break if K(2):sel=(sel+1)%n;Z(0.15);break if okp():wup();return sel if K(17):return-1 Z(0.04) def inp(prompt): try: v=input(prompt) return float(v) except:return None def show(lines): F(0,0,SW,SH,BK) D("TULEMUS",125,6,TL,BK) F(0,24,SW,2,(40,)*3) for i,ln in enumerate(lines): c=YL if i==len(lines)-1 else WH D(str(ln),14,34+i*20,c,BK) D("OK=tagasi",125,SH-16,DG,BK) while True: if okp()or K(17):wup();return Z(0.04) def r(v): return round(v,6) def det2(a,b,c,d): return a*d-b*c def det3(a): return(a[0][0]*(a[1][1]*a[2][2]-a[1][2]*a[2][1]) -a[0][1]*(a[1][0]*a[2][2]-a[1][2]*a[2][0]) +a[0][2]*(a[1][0]*a[2][1]-a[1][1]*a[2][0])) def sys2(): D("Vorrand 1: a1*x+b1*y=c1",14,34,WH,BK) a1=inp("a1: ") if a1 is None:return b1=inp("b1: ") if b1 is None:return c1=inp("c1: ") if c1 is None:return D("Vorrand 2: a2*x+b2*y=c2",14,56,WH,BK) a2=inp("a2: ") if a2 is None:return b2=inp("b2: ") if b2 is None:return c2=inp("c2: ") if c2 is None:return dt=det2(a1,b1,a2,b2) e1=str(r(a1))+"x+"+str(r(b1))+"y="+str(r(c1)) e2=str(r(a2))+"x+"+str(r(b2))+"y="+str(r(c2)) if dt==0: show([e1,e2,"","Det = 0","Uhene lahend puudub"]) return x=det2(c1,b1,c2,b2)/dt y=det2(a1,c1,a2,c2)/dt show([e1,e2,"","Determinant = "+str(r(dt)), "x = "+str(r(x)),"y = "+str(r(y))]) def sys3(): D("V1: a1x+b1y+c1z=d1",14,34,WH,BK) a1=inp("a1: ") if a1 is None:return b1=inp("b1: ") if b1 is None:return c1=inp("c1: ") if c1 is None:return d1=inp("d1: ") if d1 is None:return D("V2: a2x+b2y+c2z=d2",14,56,WH,BK) a2=inp("a2: ") if a2 is None:return b2=inp("b2: ") if b2 is None:return c2=inp("c2: ") if c2 is None:return d2=inp("d2: ") if d2 is None:return D("V3: a3x+b3y+c3z=d3",14,78,WH,BK) a3=inp("a3: ") if a3 is None:return b3=inp("b3: ") if b3 is None:return c3=inp("c3: ") if c3 is None:return d3=inp("d3: ") if d3 is None:return m=[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]] dt=det3(m) e1=str(r(a1))+"x+"+str(r(b1))+"y+"+str(r(c1))+"z="+str(r(d1)) e2=str(r(a2))+"x+"+str(r(b2))+"y+"+str(r(c2))+"z="+str(r(d2)) e3=str(r(a3))+"x+"+str(r(b3))+"y+"+str(r(c3))+"z="+str(r(d3)) if dt==0: show([e1,e2,e3,"","Det = 0","Uhene lahend puudub"]) return dx=det3([[d1,b1,c1],[d2,b2,c2],[d3,b3,c3]]) dy=det3([[a1,d1,c1],[a2,d2,c2],[a3,d3,c3]]) dz=det3([[a1,b1,d1],[a2,b2,d2],[a3,b3,d3]]) x=dx/dt;y=dy/dt;z=dz/dt show([e1,e2,e3,"","Det = "+str(r(dt)), "x = "+str(r(x)),"y = "+str(r(y)), "z = "+str(r(z))]) def det2m(): D("Maatriks [[a,b],[c,d]]",14,34,WH,BK) a=inp("a: ") if a is None:return b=inp("b: ") if b is None:return c=inp("c: ") if c is None:return d=inp("d: ") if d is None:return dt=det2(a,b,c,d) show(["| "+str(r(a))+" "+str(r(b))+" |", "| "+str(r(c))+" "+str(r(d))+" |","", "det = a*d - b*c", "Determinant = "+str(r(dt))]) def det3m(): D("Maatriks 3x3 rida kaupa",14,34,WH,BK) D("Rida 1:",14,56,WH,BK) a1=inp("a1: ") if a1 is None:return b1=inp("b1: ") if b1 is None:return c1=inp("c1: ") if c1 is None:return D("Rida 2:",14,78,WH,BK) a2=inp("a2: ") if a2 is None:return b2=inp("b2: ") if b2 is None:return c2=inp("c2: ") if c2 is None:return D("Rida 3:",14,100,WH,BK) a3=inp("a3: ") if a3 is None:return b3=inp("b3: ") if b3 is None:return c3=inp("c3: ") if c3 is None:return m=[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]] dt=det3(m) show(["| "+str(r(a1))+" "+str(r(b1))+" "+str(r(c1))+" |", "| "+str(r(a2))+" "+str(r(b2))+" "+str(r(c2))+" |", "| "+str(r(a3))+" "+str(r(b3))+" "+str(r(c3))+" |","", "Determinant = "+str(r(dt))]) def run(): items=["2x2 susteem","3x3 susteem", "2x2 determinant","3x3 determinant"] while True: s=menu("Vorrandisusteem",items) if s<0:break F(0,0,SW,SH,BK) D("Sisesta kordajad",14,6,TL,BK) F(0,24,SW,2,(40,)*3) if s==0:sys2() elif s==1:sys3() elif s==2:det2m() elif s==3:det3m() run()