Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 31. 08. 2023 14:19

Ondry
Příspěvky: 77
Reputace:   
 

Serioparalelní řazení odporů do konkrétní hodnoty

Zdravím,

Mám spousty odporů 1000 Ohmů.
Odpory mohu řadit seriově nebo paralelně dle libosti.
Napadá vás jakou zvolit serio-paralelní kombinaci abych se dostal k celkovému odporu 420 Ohmů?
Já se zmohl k tupému ťukání do kalkulačky a doufal, že najdu nějakej vzor...

[mathjax]R_{ser}=R_{1}+R_{2}+...+R_{n}[/mathjax]
[mathjax]\frac{1}{R_{par}}=\frac{1}{R_{1}}+\frac{1}{R_{2}}+...+\frac{1}{R_{n}}[/mathjax]

Je to takovej dětinskej inside joke pro testování osazovačky a pece na pájení SMD komponent :)

Offline

 

#2 31. 08. 2023 20:51

vlado_bb
Moderátor
Příspěvky: 6211
Škola:
Reputace:   142 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ Ondry:Pri paralelnom zapojení 1000 odporov dostaneš odpor 1 Ohm. No a takých zapojíš seriovo 420.

Offline

 

#3 31. 08. 2023 21:05

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

S použitím 26 odporů takto:

Par(Par(Par(21000, 3000), 1000), 1000) = 420 Ω

Možná to jde i s menším množstvím ...


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#4 01. 09. 2023 13:27

Ondry
Příspěvky: 77
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ mák: Díky. Můžu se zeptat jak jste na takový kombo přišel?

Offline

 

#5 01. 09. 2023 15:30

MichalAld
Moderátor
Příspěvky: 4865
Reputace:   125 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Pokud potřebujeme trefit nějakou přesnou hodnotu (tj. řešit to v celých číslech), tak to vypadá jako NP problém - tj jediná možnost je zkoušet všechny varianty. Nevím, jestli to tak je, ale moc si nedokážu představit algoritmus, který by mě k cíli dovedl.

Pokud by stačilo hodnoty dosáhnout přibližně, tak na to možná postup existovat bude. Nějaký iterační. Protože přidáním jednoho odporu v nějaké složité síti se odpor změní jen málo ... a čím větší síť, tím se změní méně. Čímž lze dosáhnout libovolné přesnosti.


Jedna z možností, co mě napadá a nepřijde mi zas až tak náročná na odpory je vyrobit si z nich dvojkovou řadu. Tj zapojíme 2 paralelně, čímž získáme polovinu původní hodnoty, pak 4 paralelně, čímž získáme čtvrtinu, pak 8 - čímž získáme osminu...

A každé číslo (menší než jedna) můžeme libovolně přesně poskládat jako součet řady

1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...

samozřejmě s tím, že vhodné členy vynecháme. Které? No, stačí naše číslo v desítkové soustavě převést do dvojkové, a kde budou nuly, tam člen vynecháme. Ale je to jen přibližné, řada má obecně nekonečný počet prvků.

Offline

 

#6 01. 09. 2023 15:31 — Editoval MichalAld (01. 09. 2023 15:32)

MichalAld
Moderátor
Příspěvky: 4865
Reputace:   125 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Ondry napsal(a):

↑ mák: Díky. Můžu se zeptat jak jste na takový kombo přišel?

No, na to je takový ten univerzální matematický postup - uhádnout správné řešení a pak ověřit, že je správné. Pro NP problémy je to dokonce jediný možný postup - ale já netvrdím, že tohle je nutně NP problém.

Offline

 

#7 01. 09. 2023 15:33 — Editoval mák (01. 09. 2023 15:36)

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Nejbližší hodnota je 500 Ω, která lze získat paralelním spojením dvou odporů (to je jasné).
Teď si spočítám jak velký odpor musím paralelně připojit k němu abych získal 420 Ω.

[mathjax]420={{X\,500}\over{X+500}}[/mathjax]

Vyjde hodnota 2625 Ω.

A obdobně zjistím kolik odporů musím paralelně spojit, abych získal tuto hodnotu (výsledek celá hodnota pro 3 odpory - tedy 3000 Ω):

[mathjax]2625={{X\,3000}\over{X+3000}}[/mathjax]

X=21000

A je to...


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#8 01. 09. 2023 16:12

check_drummer
Příspěvky: 4623
Reputace:   99 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Optimální počet by šel zjistit napsáním nějakého programu.


"Máte úhel beta." "No to nemám."

Offline

 

#9 01. 09. 2023 18:23

Ondry
Příspěvky: 77
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ mák:
nice

Offline

 

#10 01. 09. 2023 18:29 — Editoval Aleš13 (01. 09. 2023 19:18)

Aleš13
Příspěvky: 329
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Mně to vyšlo s 9 odpory. Když pro paralelní spojení odporů použiju operátor A|B = 1/(1/A+1/B) tak pro R=1000 vyjde
(((((((R+R)|R)+R)|R)+R)+R)|R)|R=420

Řeším to programem, hrubou silou. Procházím rekurzivně strom (do maximální hloubky vnoření 10).
Kořen stromu má parametry (R1=1000,R2=1000) a jeho čtyři větve (R1+R2,R1), (R1+R2,R2),
(R1|R2,R1), (R1|R2,R2) a vypisuji všechna vyhovující řešení. Pak vyberu to nejkratší (čímž zároveň získám důkaz, že lepší řešení neexistuje).

Pro hloubku vnoření 10 trvá výpočet na běžném PC tak 10 vteřin,
kdybych to trochu optimalizoval tak odhaduji, že se odstanu na 1 s a tím pádem na
rozumně řešitelné úlohy s hloubkou vnoření řekněme tak do 15.

Offline

 

#11 02. 09. 2023 01:25 — Editoval mák (02. 09. 2023 01:30)

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Šlo by to i graficky:
https://i.ibb.co/X8PtRDN/Sn-mek-obrazovky-z-2023-09-02-01-05-55.png
420 Ω jde rozložit na 21 * 20 Ω.
Odpor 20 Ω jde udělat paralelním spojením padesáti odporů o hodnotě 1000 Ω.
Takže máme sério-paralelní sít 50*21 odporů.
Využijeme toho, že 2x2 odpory dají opět hodnotu 1000 Ω.
Obdobně 3x3, 4x4 atd...
Na obrázku jsem zvýraznil čtverce které jdou zjednodušit na jeden odpor.
Žlutý čtverec má tedy hodnotu 1000 Ω. Obdobně růžový. Oba paralelním spojením vytvoří hodnotu 500 Ω.
Zbývající část je tvořena seriovým zapojením dvou odporů [světle zelená] a [bledě modrá] a paralelní kombinací [oranžové] atd...
Celkově tedy:

Par(Par(1000,1000),1000+1000+Par(1000,1000+Par(1000,1000+1000))) = 420 Ω

Barevně:
Par(Par(žlutý,růžový),zelený+modrý+Par(oranžový,khaki+Par(fialový,bílý+bílý))) = 420 Ω

Je to pouze 9 odporů (Aleš se k tomu dostal jinou cestou).
Myslím, že je to snadno pochopitelné.


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#12 02. 09. 2023 09:18

Ondry
Příspěvky: 77
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ Aleš13:
Upřímně nemám tušení o čem mluvíte :D ale když to nadlubu do kalkulačky tak mi vyjde požadovaných 420R, takže díky moc! 9 odporů je příjemnější než 26, páč pro mě bude rychlejší programování robota :)

Offline

 

#13 02. 09. 2023 09:46

Aleš13
Příspěvky: 329
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ Ondry: nz :-) myslel jsem to takhle:

Code:

program odporova_sit;

procedure kombinace (r1, r2 : double; vnoreni : integer; k1,k2 : string);
var
  paralelne : double;
  seriove   : double;

begin
  seriove:=r1+r2;
  if abs(seriove-420)<0.00000001 then writeln(k1+'+'+k2);
  if vnoreni>0 then begin
    kombinace(seriove,r1,vnoreni-1,'('+k1+'+'+k2+')',k1);
    kombinace(seriove,r2,vnoreni-1,'('+k1+'+'+k2+')',k2);
    end;
  paralelne:=1/(1/r1+1/r2);
  if abs(paralelne-420)<0.00000001 then writeln(k1+'|'+k2);
  if vnoreni>0 then begin
    kombinace(paralelne,r1,vnoreni-1,'('+k1+'|'+k2+')',k1);
    kombinace(paralelne,r2,vnoreni-1,'('+k1+'|'+k2+')',k2);
    end;
  end;

begin
  kombinace(1000,1000,10,'R','R');
  end.

Offline

 

#14 03. 09. 2023 00:08 — Editoval mák (03. 09. 2023 19:32)

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Zdravím,

udělal jsem program pro LibreOffice (Calc) - vyžaduje však funkčnost maker.
Výpočet je velmi rychlý pro běžné hodnoty (pod sekundu).

Odkaz ke stažení

Samotné makro by po překopírování mělo být funkční i v excelu.
Hloubka vnoření je omezena na maximálně 20 (kombinace 20 odporů), ale jde změnit.

Odkazovaný soubor byl vadný, opravil jsem jej


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#15 03. 09. 2023 11:28

check_drummer
Příspěvky: 4623
Reputace:   99 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ Aleš13:
Ahoj,
akorát mi není jasné, zda ten program projde všechny možné kombinace. Např. dvě paralelní zapojení, které jsou za sebou v sérii.


"Máte úhel beta." "No to nemám."

Offline

 

#16 03. 09. 2023 13:29 — Editoval Aleš13 (03. 09. 2023 13:29)

Aleš13
Příspěvky: 329
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Zrovna tohle projde (lze dokázat odstraněním podmínky zobrazení a vyhledáním ve výpisu). Podle mě by měl projít všechno, protože čtyři podstromy jsou založené na všech čtyřech kombinacích, ale obecný důkaz správnosti nemám, ani jsem se o něj vlastně nepokoušel.

Offline

 

#17 03. 09. 2023 19:34 — Editoval check_drummer (03. 09. 2023 19:38)

check_drummer
Příspěvky: 4623
Reputace:   99 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Mně to vychází (možná je to stejné jako u kolegů):

P(S(1000,P(1000,1000)),P(1000,S(1000,P(S(1000,1000),P(1000,1000)))))

P je paralelní zapojení, S seriové, argumenty jsou velikosti odporů v daném zapojení, případně rekurzivně další zapojení.

V podstatě jde o palelelní zapojení 3 odporů s hodnotami 1500, 1000 a 1400.


Pak mi vyšla ještě další zapojení s 9 odpory, ale možná jsou ekvivaletní, to jsem nezjišťoval.


"Máte úhel beta." "No to nemám."

Offline

 

#18 03. 09. 2023 20:16

check_drummer
Příspěvky: 4623
Reputace:   99 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Aleš13 napsal(a):

Zrovna tohle projde (lze dokázat odstraněním podmínky zobrazení a vyhledáním ve výpisu).

Jakými kroky to tedy získám? Začnu s 1000,1000 a co potom? Kterou větví výpočtu se dám?


Ten algoritmus tedy pracuje odspoda, že jakoby nabaluje na ten obvod stále víc odporů?
Co vlastně vyjadřuje ta dvojice r1,r2?


Mně totiž připadá, že nebude umět zkonstruovat např. dva nějaké hodně složité obvody zapojené k sobě, ale možná se pletu.


"Máte úhel beta." "No to nemám."

Offline

 

#19 03. 09. 2023 20:41 — Editoval Aleš13 (03. 09. 2023 20:43)

Aleš13
Příspěvky: 329
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

r1,r2 jsou odpory které zkusmo spojím sériově a pak paralelně. Nejdřív se podívám, zda jsem tím nedosáhl požadovaného výsledku, pak znovu volám tutéž funkci, vždy pro každé spojení r1,r2 dvakrát, poprvé s r1 a podruhé s r2 jako druhým argumentem. Souběžně totéž, ale symbolicky, dělám s řetězci k1,k2 aby bylo co vypisovat. Takže ano, postupně to na sebe nabaluje další odpory, ale na ty hodně složité obvody to není, algoritmus má exponenciální složitost a trvalo by to věčnost.

Offline

 

#20 03. 09. 2023 21:12

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Mě vyšlo 16 správných unikátních kombinací:

Par(1000,Par(1000,Par(1000,Par(1000,2000)+1000)+2000))
Par(1000,Par(1000,Par(1000,Par(2000,1000)+1000)+2000))
Par(1000,Par(1000,Par(Par(1000,2000)+1000,1000)+2000))
Par(1000,Par(1000,Par(Par(2000,1000)+1000,1000)+2000))
Par(1000,Par(Par(1000,Par(1000,2000)+1000)+2000,1000))
Par(1000,Par(Par(1000,Par(2000,1000)+1000)+2000,1000))
Par(1000,Par(Par(Par(1000,2000)+1000,1000)+2000,1000))
Par(1000,Par(Par(Par(2000,1000)+1000,1000)+2000,1000))
Par(Par(1000,Par(1000,Par(1000,2000)+1000)+2000),1000)
Par(Par(1000,Par(1000,Par(2000,1000)+1000)+2000),1000)
Par(Par(1000,Par(Par(1000,2000)+1000,1000)+2000),1000)
Par(Par(1000,Par(Par(2000,1000)+1000,1000)+2000),1000)
Par(Par(Par(1000,Par(1000,2000)+1000)+2000,1000),1000)
Par(Par(Par(1000,Par(2000,1000)+1000)+2000,1000),1000)
Par(Par(Par(Par(1000,2000)+1000,1000)+2000,1000),1000)
Par(Par(Par(Par(2000,1000)+1000,1000)+2000,1000),1000)


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#21 03. 09. 2023 21:37 — Editoval mák (03. 09. 2023 21:52)

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 864
Reputace:   61 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Pro zajímavost, tady jsem vypočítal, kolik je potřeba odporů o hodnotě 1000 Ω k sestavení obvodu o hodnotě 1 až 1000 Ω. Je tam tedy 1000 hodnot.



A to samé do 2000 Ω.


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#22 04. 09. 2023 02:37 — Editoval check_drummer (04. 09. 2023 04:31)

check_drummer
Příspěvky: 4623
Reputace:   99 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ Aleš13:
Mně šlo spíš o to, zda tak vygeneruje v principu všechny obvody.

Kromě toho že stále nevidím jak se vygenerují dva paralelně zapojené odpory a dvě kopie téhož za sebou v serii, tak třeba ani nevidím obecně n paralelně zapojených odporů a v sérii za tím m paralelně zapojených odporů.

Tedy S(P(1000,1000),P(1000,1000)).

Zkusil jsem si ten program pustit a nevygeneroval mi to....

Takže např. podle mě ti to nenajde pomocí odporů 10 a 40 obvod s odporem 16 pomocí 4 odporů - paralelně 40 a 10 a to celé 2x (v serii).


"Máte úhel beta." "No to nemám."

Offline

 

#23 04. 09. 2023 02:39

check_drummer
Příspěvky: 4623
Reputace:   99 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ mák:
Nepřipomíná to nějakou známou křivku?


"Máte úhel beta." "No to nemám."

Offline

 

#24 04. 09. 2023 20:30

Aleš13
Příspěvky: 329
Reputace:   
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

↑ check_drummer:Aha, tak na to se kouknu, dík.

Offline

 

#25 05. 09. 2023 16:05

MichalAld
Moderátor
Příspěvky: 4865
Reputace:   125 
 

Re: Serioparalelní řazení odporů do konkrétní hodnoty

Já pořád přemýšlím nad tím, jak vymyslet nějaký formální zápis, pomocí kterého by šly jednoduše zrealizovat všechny možné kombinace. Když budeme používat symboly + a | musíme k tomu použít i závorky. (R + R) | R je něco jiného než R + (R | R). A i když je snadné hodnotu spočítat (napsat na to parser), tak je podle mě dost těžké vyrobit všechny možné kombinace. Nějak jednoduše - což znamená dokázat je seřadit do řady, aby byla jistota, že jsme žádnou nevynechali. To jestli používáme operátory nebo funkce už na problému zas až tolik nemění.

Napadlo mě využít Polskou notaci, ta závorky nepotřebuje, a nakonec i parser se na to dá napsat snadněji. Polská notace je něco ve stylu R R | R + R R R + | | a bere se to (v tomhle případě) zleva, tedy
(((R R |) R +) (R (R R +) |) |). Přičemž výraz (R R +) je výsledek sériové kombinace těch R, (R R |) je výsledek té paralelní. Je to to samé jako volání funkcí.

Akorát že se to hezky parsuje, prostě bereme zleva symbol po symbolu, když je to číslo, tak ho vložme na zásobník, a když je to operace tak vezmeme dvě poslední hodnoty ze zásobníku, provedeme na nich tu operaci a výsledek vrátíme na zásobník. Nakonec nám na zásobníku zůstane jedna hodnota - výsledek. Pokud jich tam zůstane víc, nebo tam nejsou aslespoň dvě během procesu, tak je to syntaktická chyba.

Tenhle zápis nepotřebuje závorky, priorita je určená čistě jen pořadím operátorů a číslic. Akorát že né všechny posloupnosti jsou plané. A celkové množství kombinací je [mathjax]3^n[/mathjax], pokud tedy uvažujeme jen jednu hodnotu odporu. A z nich je určitě velká část kombinací neplatných.

Nemáte někdo nějaký nápad, jak udělat syntaktický zápis těchto sérioparalelních kombinací tak, aby těch neplatných možností bylo malé množství (ideálně žádné) ale zároveň aby šly jednoduše vyrobit všechny kombinace?

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson