Kombinera Motstånd ur Elektroniklådan?

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
Användarvisningsbild
jesse
Inlägg: 9233
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av jesse »

mankan skrev:Kanske inte lika rolig matematiskt men jag tycker den här kalkylatorn är mycket användbar.
Den var ju perfekt!

Finns det nåt sätt att ladda ner källkoden till ett sådant program?
Jag antar att det är javascript eller nåt liknande(?) som läses in i browsern och sedan körs lokalt.
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

Tror jag lurat ut hur många varianter av
grupper om 3 motstånd som finns om jag tex har
4 värden att ta av.

R = {A,B,C,D}

C(4,3) + C(4,1)xC(3,1) + 4

eller enklare

C(4,3) + C(4,1)xC(4,1)

C(4,3) ger 4 varianter med A,B,C och D där ingen 3-grupp är lik den andra

C(4,1) ger 4 varianter med 2 lika, {A,A,x} {B,B,x} {C,C,x} och {D,D,x}
i var och en av dessa grupper kan x vara A,B,C eller D alltså C(4,1)

Totalt 4 + 4x4 = 20 stycken grupper om 3 motstånd som är unika och
ger unika motståndsvärden om de parallellkopplas och 20 unika värden
om de seriekopplas.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

Jepp, kombinatorik är kul. Just detta fall anses ofta som "svårt", men om man känner igen det som ett "programmera robotarmen"-problem är det lättare. Men vi tar en kort omväg och repeterar:

Du har redan jobbat med "n över k" = C(n,k) = n!/(k!(n-k!))

Exempel: Du har exakt 4 motstånd, alla har olika valörer, och du tar 3. På hur många sätt kan du göra det? Jo, första kan du välja på 4 sätt, det andra på 3, och det tredje på 2 sätt. Alltså 4x3x2 = 24 olika sätt. Men det spelar ingen roll i vilken ordning du tar dem, så du får dela med antalet sätt som 3 motstånd kan arrangeras, och det är på motsvarande vis 3x2x1 = 6 olika sätt. Så svaret är 4:

ABC, ABD, ACD, BCD


Nu gör vi det svårare. Antag att du har motstånd av 4 olika valörer, men (tillräckligt) många av varje, och drar 3. Du kan alltså dra samma motstånd tre gånger, till exempel. Hur många varianter finns det då?

Och här kommer robotarmen in. Detta problem är samma sak som att du har 4 tråg med motstånd i, och en robotarm som plockar 3 motstånd åt dig. För att plocka tre motstånd börjar armen vid tråg 1, plockar eller plockar inte, går vidare till tråg två osv. Den börjar alltid vid tråg 1 och slutar alltid vid tråg 4 och plockar alltid totalt 3 gånger.

Du programmerar armen genom att skicka antingen ett P för plocka, eller ett N för att gå till nästa tråg. Några exempel på program:

- PPPNNN betyder "plocka tre motstånd i första tråget och gå vidare till sista.
- PNPNPN betyder "plocka ett motstånd i tråg 1, 2, 3.
- NNPPNP betyder "plocka två motstånd i tråg 3, ett i tråg 4

(Armen måste alltid gå hela vägen till sista tråget.) Det är alltid 3 P (för du vill ha 3 motstånd) och alltid 3 N, för du har 4 tråg, startar i nummer 1 och slutar i nummer 4, dit armen kommer på 3 steg.

Antalet sätt att välja motstånden är samma som antalet olika program du kan skriva. Hur många program finns det då? Jo, programmen är 3+3 = 6 tecken långa, och 3 av dem skall vara P (resten N). Att välja 3 av 6 kan man göra på C(6,3) = 6x5x4/(3x2x1) = 20 sätt:

ABC, ABD, ACD, BCD (alla unika)
AAA, AAB, AAC, AAD (dubbel och trippel A)
ABB, BBB, BBC, BBD (dubbel och trippel B)
ACC, BCC, CCC, CCD (dubbel och trippel C)
ADD, BDD, CDD, DDD (dubbel och trippel D)

Så antalet sätt var C(4+3-1, 3) för 4 tråg och 3 motstånd.
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

Robotarmsmatematiken är nog inte så dumt men jag försöker höja nivån ett snäpp och reda ut det med traditionell matematik även om jag här börjar bli lite osäker på om det verkligen blir rätt.

Nu vill jag ha 4 motstånd att kombinera från 5 olika värden.

R = {A,B,C,D,E}

som ska fördelas på 4 lådor

S1 = C(5,1) = 5 ger alla 4 olika

S2 = C(5,1) = 5 ger alla 4 lika

C(5,1)xC(5,1) = 25 ger 3 lika inklusive alla 4 lika så då måste "alla 4 lika" dras bort

S3 = C(5,1)xC(5,1) - S2 = 25 - 5 = 20

C(5,1) ger 2 lika och övriga två fås som C(5,2) men då har även 3 lika räknats in därför

S4 = C(5,1)xC(5,2) - S3 = 5x10 - 20 = 30

Totalt: S1 + S2 + S3 + S4 = 5 + 5 + 20 + 30 = 60 unika varianter

Tror jag kan se ett mönster men har lite svårt att struta ner det hela i en universell formel.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

Den generella lösningen enligt robotarmen är C(n+k-1, k), så i detta fallet C(5+4-1, 4) = C(8,4) = 8x7x6x5 / (1x2x3x4) = 70.
Så tänkte jag igår, nu bara applicerade jag formeln. Eftersom vi får olika svar skall man nog backa och tänka lite. Senare...
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

Har du hittat felet? Provat skriva ner alla kombinationer för S1...S4?
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

Senaste teorin lyder nu så här:

C(5,4)x[ 1 + [C(5,4)-1]^0 + [C(5,4)-1]^1 + [C(5,4)-1]^2 ]

[C(5,4)-1]^0 motsvarar 4 helt lika AAAA,BBBB,CCCC,DDDD,EEEE

[C(5,4)-1]^1 motsvarar 3 helt lika AAAx,BBBx,CCCx,DDDx,EEEx

[C(5,4)-1]^2 motsvarar 2 helt lika AAxx,BBxx,CCxx,DDxx,EExx

1 motsvarar alla olika ABCD,ACDE,BCDE,BDEA,CEAB

5 x [ 1 + 1 + (5-1)^1 + (5-1)^2 ] =

5 x [ 2 + 4 + 16 ] = 5 x 22 = 110

Kan det verka rimligt eller orimligt?
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

Itertools är ett kraftfullt standardlib till python. Denna "oneliner" printar antalet kombinationer av längd 4:

Kod: Markera allt

from itertools import combinations_with_replacement
print(len(set(combinations_with_replacement(['A', 'B', 'C', 'D', 'E',], 4))))
(svaret blir 70)
Och denna printar alla permutationerna, för "okulär besiktning"

Kod: Markera allt

from itertools import combinations_with_replacement
for x in combinations_with_replacement(['A', 'B', 'C', 'D', 'E',], 4):
        print(x)
Är man mera pythonisk skriver man istället kanske

Kod: Markera allt

from itertools import combinations_with_replacement
print(list(''.join(x) for x in list(combinations_with_replacement(['A', 'B', 'C', 'D', 'E',], 4))))
Det verkar som om du någonstans har permutationer som räknas mer än en gång.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

Kan man tänka såhär?

1. Alla kvadrupler: AAAA ... EEEE
Det finns 5 sådana fall.

2. Alla kombinationer med tripletter: AAAx ... EEEx
För AAAx kan x vara B,C,D,E. Så 4 möjligheter.
För BBBx kan x vara A,C,D,E. Så 4 möjligheter.
osv.
Det ger totalt 4x5 = 20 fall.

3. Alla kombinationer med ETT par: AAxy ... EExy
För AAxy kan x väljas på fyra sätt (B,C,D,E), och då finns det tre sätt kvar för y.
(y kan inte vara samma som A eller x, för då blir det antingen en triplett eller ett dubbelpar).
Det blir 4x3 = 12 sätt, men så är det ingen skillnad på xy och yx, så det finns 6 sådana fall för AA, 6 fall för BB osv, så totalt 6x5 = 30 fall.

4. Alla kombinationer med TVÅ par: AABB ... DDEE
Första paret kan väljas på 5 sätt, andra på 4 (annars blir paren lika och man får en kvadrupel).
Det blir 4x5 = 20, men så är xxyy samma som yyxx, så 10 fall.

5. Alla kombinationer utan par, tripletter, kvadrupler, dvs alla fyra olika
Det finns 5 sådana. (Man plockar fyra olika av fem, så en kommer inte med. Det finns fem olika som inte kan komma med.)
5 fall.


Totalt: 5 + 20 + 30 + 10 + 5 = 70
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

R = {A,B,C,D,E}

Alla olika
=================================================================
Plocka ut 4 olika ur R
För varje vald första bokstav blir det 2 varianter med alla olika
då det ju finns 1 mer bokstav än som får plats i brevlådorna.

Alltså totalt 2x5 (2x antalet element i R)

ABCD 1
ACDE 2
BCDE 3
BDEA 4
CDEA 2
CEAB 5
DEAB 4
DABC 1
EABC 5
EBCD 3

Med den uppställningen blir det 5 par som
innehåller samma element, markerade ovan
med samma nummer, och intressant är endast
de med olika ingående element.

10/2 = 5

Resultat:

ABCD 1
ACDE 2
BCDE 3
BDEA 4
CEAB 5

Det här borde gå skriva en formel för.

Alla lika
=================================================================
Fyll brevådorna med samma bokstav, ger 5 fall pga 5 bokstäver.

AAAA
BBBB
CCCC
DDDD
EEEE

Tre lika
=================================================================
För varje "3 lika" kan den 4:de väljas 4 sätt eftersom bokstaven
i "3 lika" själv inte får ingå. Ingen av dessa varianter är
ogilig i sammanhanget.

AAAx där x kan vara B,C,D,E
BBBx där x kan vara A,C,D,E
CCCx där x kan vara A,B,D,E
DDDx där x kan vara A,B,C,E
EEEx där x kan vara A,B,C,D

5x4 = 20

Två lika
=================================================================
Lite lurigare.
De varianter för AAxx som inte får väljas är AAAx, AAAA.
Då finns 4 bokstäver kvar ur R att välja på. Plocka ut
2 element av 4. Detta blir liknande "Alla olika"-fallet.
Varje förstavald bokstav kan kombineras med sig själv och
övriga tre. Alltså 4 för varje förstavald bokstav och med
4 bokstäver blir det 16 varianter på par.

BB, BC, BD, BE, CC, CD, CE, CB, DE, DB, DC, DD, EB, EC, ED, EE
Men 4 av dessa varianter

har dubbelbokstäver, BB, CC, DD och EE vilka inte får ingå.

BC, BD, BE, CD, CE, CB, DE, DB, DC, EB, EC, ED

16-4 = 12 Av dessa 12 innehåller 6 par samma bokstäver...

BC, BD, BE, CD, CE, DE

12/2 = 6 Jag undrar om detta skulle kunna skrivas som C(4,2) och
användas allmänt?

För varje xx finns 6 tillåtna varianter, 5x6 =30

AAxx
BBxx
CCxx
DDxx
EExx

Nu finns alltså 5 + 5 + 20 + 30 = 60 unika varianter.

Vad kan jag ha missat den här gången?

gurums pkt 1 och pkt 2 stämmer med min teori men sen spårar det ur.
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

Liten sammanställning, hittade 3 extra kombinationer i "Två lika".

Och då blir resultatet 63 i så fall.

Finns ju ingen logik i det här! :humm:


ABCD
ACDE
BCDE
BDEA
CEAB


AAAA
BBBB
CCCC
DDDD
EEEE

AAAx --där x kan vara B,C,D,E
BBBx --där x kan vara A,C,D,E
CCCx --där x kan vara A,B,D,E
DDDx --där x kan vara A,B,C,E
EEEx --där x kan vara A,B,C,D


AAxx --där xx kan vara BC, BD, BE, CD, CE, DE
BBxx --där xx kan vara AC, AD, AE, CD, CE, DE
CCxx --där xx kan vara AB, AD, AE, BA, BD, BE, DE
DDxx --där xx kan vara AB, AC, AE, BA, BC, BE, CE
EExx --där xx kan vara AB, AC, AD, BA, BC, BD, CD
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

Kommentar till näst senaste inlägget (postat 21.28 2018-03-19)
Nu finns alltså 5 + 5 + 20 + 30 = 60 unika varianter.
Vad kan jag ha missat den här gången?
Jag tycker att allt du skrivit är rätt: 5 kvadrupler ("AAAA"), 5 unika ("ABCD"), 20 tripletter ("AAAx"), 30 par ("AABC").
Men du har missat dubbelparen! Se:
...
BB, BC, BD, BE, CC, CD, CE, CB, DE, DB, DC, DD, EB, EC, ED, EE
Men 4 av dessa varianter
har dubbelbokstäver, BB, CC, DD och EE vilka inte får ingå.
...
Så du räknar verkligen bara enkelpar. Dubbelparen glöms bort.
Dubbelparen är alla av formen xxyy, där x!=y. Nästan där nu - hur många sådana har du?!
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

Men säg att dubbelparen tas med...

Ex.

AABB

BBAA

dessa är samma sak i sammanhanget.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av guckrum »

dessa är samma sak i sammanhanget.
Ja, "AABB" är samma som "BBAA", men du har inte med dem alls i din uträkning. De enda par du har är enkelpar, typ "AABC".
Användarvisningsbild
4kTRB
Inlägg: 18289
Blev medlem: 16 augusti 2009, 19:04:48

Re: Kombinera Motstånd ur Elektroniklådan?

Inlägg av 4kTRB »

Sant!

Men vad kan då tillkomma?

AAxx--BB CC DD EE
BBxx--
CCxx--
DDxx--
EExx--

4st ?

63 + 4 = 67

Jag närmar mig dina 70 sakta men säkert!
Skriv svar