import math class Takisti: def __init__(self, takistus, maxvoimsus): self.R=takistus self.maxN=maxvoimsus self.tegelikVool=0 self.tegelikPinge=0 def __str__(self): return "Takisti "+str(self.R)+" oomi, "+str(self.maxN)+" vatti." def kysiR(self): return self.R def kysiMaxN(self): return self.maxN def kysiTegelikVool(self): return self.tegelikVool def kysiTegelikPinge(self): return self.tegelikPinge def pingesta(self, v): self.tegelikPinge=v self.tegelikVool=self.voolVastavaltPingele(v) def vooluAlla(self, a): self.tegelikVool=a self.tegelikPinge=a*self.R def voolVastavaltPingele(self, pinge): return pinge/self.R def voimsusVastavaltPingele(self, pinge): return pinge*self.voolVastavaltPingele(pinge) def kysiSuurimLubatudPinge(self): return self.maxN/math.sqrt(self.maxN/self.R) def kysiSuurimLubatudVool(self): return self.voolVastavaltPingele(self.kysiSuurimLubatudPinge()) class JadaYhendus: def __init__(self): self.hoidla=[] self.tegelikPinge=0 self.tegelikVool=0 def lisaTakisti(self, t): self.hoidla.append(t) def __iadd__(self,t): self.lisaTakisti(t) return self def copy(self): uus = JadaYhendus() uus.hoidla = self.hoidla[:] def __add__(self,teine): if isinstance(teine,JadaYhendus): uus = JadaYhendus() uus.hoidla = self.hoidla + teine.hoidla elif isinstance(teine,Takisti): uus = self.copy() uus += takisti return uus def __str__(self): vastus="JadaYhendus, mille liikmeteks on:\n" for t in self.hoidla: vastus+=str(t)+"\n" return vastus def koguTakistus(self): kokku=0 for t in self.hoidla: kokku+=t.kysiR() return kokku def pingeleVastavVool(self, pinge): return pinge/self.koguTakistus() def suurimLubatudVool(self): if(len(self.hoidla)==0): return 16 vool=self.hoidla[0].kysiSuurimLubatudVool() nr=1 while(nrself.suurimLubatudVool(): raise Exception( "liiga suur pinge: "+str(v)) self.tegelikPinge=v self.tegelikVool=v/self.koguTakistus() for t in self.hoidla: t.vooluAlla(self.tegelikVool) yhendus=JadaYhendus() yhendus.lisaTakisti(Takisti(3, 2)) yhendus += Takisti(10, 2) print(yhendus.koguTakistus()) print(yhendus.suurimLubatudPinge()) yhendus.pingesta(3) for t in yhendus.hoidla: print(t.kysiTegelikPinge())