Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

Ik heb het dan weer numeriek in Python gedaan. Wat meer werk maar hetzelfde resultaat. En wat minder een "black box".
De beginvoorwaarde voor I1 op t=0 was geen probleem, die voor I2 op t=1 heb ik met trial en error opgelost. Beginwaarde voor UC proberen totdat aan die voorwaarde voldaan werd.
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.916
Lid geworden op: za 28 nov 2015, 10:42

Re: tijdstippen

Maple zal de initiële condities toegepast hebben om eventuele onbekende integratieconstanten te bepalen.
stromen
stromen 800 keer bekeken
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

Kun je terugvinden wat UC is op t=0?
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.916
Lid geworden op: za 28 nov 2015, 10:42

Re: tijdstippen

i2(0)= -7,5458A
Xc=30Ω
condensatorspanning -226,37V ?
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

ukster schreef: ma 19 aug 2024, 12:15 i2(0)= -7,5458A
Xc=30Ω
condensatorspanning -226,37V ?
I2(0) komt overeen met wat ik vind.
Wat bedoel je met XC?
Voor de condensatorspanning op t=0 vind ik 52,7 V.
-226,37 V lijkt me onmogelijk, dan kan I2(0) niet -7,5458 A zijn.
Gebruikersavatar
wnvl1
Artikelen: 0
Berichten: 2.954
Lid geworden op: di 20 jul 2021, 21:43

Re: tijdstippen

Xilvo schreef: ma 19 aug 2024, 11:40 Ik heb het dan weer numeriek in Python gedaan. Wat meer werk maar hetzelfde resultaat. En wat minder een "black box".
Dat differentiaalvergelijkingen analytisch oplossen "black box" is, vind ik niet.

Mijn oplossing is blijkbaar fout. Ik prefereer altijd om te werken met de toestandsvariabelen (zo staat het klassiek ook in de boeken beschreven), dat zijn in dit geval de stroom door de spoel en de spanning over de condensator. De bekomen oplossingen zijn dan uitdrukkingen voor stroom en spanning in met constanten C1 en C2. Daaruit leidde ik dan de stromen i1 en i2 af.
Ik slaagde er echter niet in om dan het stelsel voor de beginvoorwaarden in C1 en C2 op te lossen. Dat moest ik buiten sympy doen in wolfram. Zo vond ik i1 en i2. Ik kon i1 en i2 wel plotten, maar de snijpunten numeriek zoeken lukte dan om een of andere reden weer niet in sympy. De applicatie bleef hangen, hoewel er op de plot duidelijk snijpunten waren die goed geconditioneerd waren.

Sowieso heb ik ergens een type of rekenfout gemaakt. Python sympy is niet slecht, maar ik heb het gevoel dat commerciële pakketten toch nog altijd iets beter zijn of vlotter werken.

Zijn er leden die ervaring hebben met alternatieve opensource software om zulke dingen op te lossen?
Octave heb ik ook gebruikt, het is gebaseerd op sympy, maar geeft technische problemen op al mijn pc's en mijn laptop.
Gebruikersavatar
ukster
Artikelen: 0
Berichten: 4.916
Lid geworden op: za 28 nov 2015, 10:42

Re: tijdstippen

op t=0
UR1=15V
Uc=UR1+i2*R2=15+7,5425*5=52,71V
Laatst gewijzigd door ukster op ma 19 aug 2024, 13:04, 1 keer totaal gewijzigd.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

wnvl1 schreef: ma 19 aug 2024, 12:34
Xilvo schreef: ma 19 aug 2024, 11:40 Ik heb het dan weer numeriek in Python gedaan. Wat meer werk maar hetzelfde resultaat. En wat minder een "black box".
Dat differentiaalvergelijkingen analytisch oplossen "black box" is, vind ik niet.
Ik evenmin! Maar dat bedoelde ik ook niet. De differentiaalvergelijking is niet analytisch opgelost, als ik me niet vergis(!), maar aan Maple gegeven met de opdracht "los maar op".
Ook niets mis mee, maar ik vind het wat minder doorzichtig.
wnvl1 schreef: ma 19 aug 2024, 12:34 Mijn oplossing is blijkbaar fout. Ik prefereer altijd om te werken met de toestandsvariabelen (zo staat het klassiek ook in de boeken beschreven), dat zijn in dit geval de stroom door de spoel en de spanning over de condensator. De bekomen oplossingen zijn dan uitdrukkingen voor stroom en spanning in met constanten C1 en C2. Daaruit leidde ik dan de stromen i1 en i2 af.
Ik ben eveneens begonnen met een (willekeurige) keuze voor de condensatorspanning UC. De stroom door de spoel ligt dan vast, via de beginvoorwaarde voor I1.
Het systeem heb ik op z'n janboerenfluitjes manier geïntegreerd tot t=1. Dan gekeken wat I2 werd en UC gevarieerd tot die aan de tweede voorwaarde voldeed.

Ik heb wel een persoonlijke hiërarchie voor wat een "mooie" oplossing is. Analytisch, met de hand, staat bovenaan.
Iets als sympy (hoe mooi het ook werkt) staat ergens onderaan. Dat wil niet zeggen dat ik zo'n oplossing veroordeel. Het is een kwestie van smaak.
Ik kies vaak voor een numerieke oplossing, simpelweg omdat ik het programmeren leuk vind. Maar het is minder mooi dan analytisch oplossen.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

ukster schreef: ma 19 aug 2024, 13:04 op t=0
UR1=15V
Uc=UR1+i2*R2=15+7,5425*5=52,71V
Dan zijn we het ook daarover eens.
Gebruikersavatar
wnvl1
Artikelen: 0
Berichten: 2.954
Lid geworden op: di 20 jul 2021, 21:43

Re: tijdstippen

Ik blijf een verkeerde uitkomst uitkomen. Dit is mijn stelsel van DV'en.

\[ 10 \cos\left(\frac{t}{3}\right) - L \frac{d}{dt} i(t) - R_1 \left(i(t) - C \frac{d}{dt} u_2(t)\right) = 0
\]
\[ \left(i(t) - C \frac{d}{dt} u_2(t)\right) R_1 - R_2 C \frac{d}{dt} u_2(t) - u_2(t) = 0
\]

met \(u_2\) de spanning over de C en \(i\) de stroom door de spoel. Ik zie dat mijn algemene oplossing al helemaal verschilt van ukster (dus voor ik de beginwaarden verwerk), dus ik denk dat mijn DV'en hierboven verkeerd zijn, maar geen idee waar ik overkijk.

Code: Selecteer alles

from sympy import *
i, u2, i1, i2 = symbols('i u2 i1 i2', cls=Function)
L, R1, R2, C, t = symbols('L R1 R2 C t')
R1=15
R2=5
L=1
C=0.1
eq1 = 10*cos(t/3)-L*i(t).diff(t) - R1 *(i(t) - C*u2.diff(t))
eq2 = (i(t)-C*u2.diff(t))*R1-R2*C*u2.diff(t)-u2(t)
sol = dsolve([eq1, eq2], [i(t), u2(t)])

i=sol[0].rhs
u2=sol[1].rhs

i2 = C*u2.diff(t)
i1 = i - i2

print(i2)

C1, C2 = symbols("C1, C2")
eq1 = i1.subs(t,0) - 1
eq2 = i2.subs(t,1) + 1
sol = solve([eq1, eq2], [C1, C2])

i1=i1.subs('C1', sol[C1]).subs('C2', sol[C2])
i2=i2.subs('C1', sol[C1]).subs('C2', sol[C2])
i=i.subs('C1', sol[C1]).subs('C2', sol[C2])
u2=u2.subs('C1', sol[C1]).subs('C2', sol[C2])
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

Kun je uitleggen wat je hier doet?
\(10 \cos\left(\frac{t}{3}\right) - L \frac{d}{dt} i(t) - R_1 \left(i(t) - C \frac{d}{dt} u_2(t)\right) = 0\)
Ik zie de spanningsbron, dan de spanning over de spoel. Tot zover ok.

Maar dan krijg je een parallelschakeling van R1 en R2+C. Die herken ik niet in de laatste term.
De totale stroom \(i(t)\) loopt al niet (helemaal) door R1.
Gebruikersavatar
wnvl1
Artikelen: 0
Berichten: 2.954
Lid geworden op: di 20 jul 2021, 21:43

Re: tijdstippen

De eerste vergelijking drukt uit dat de som van de spanningen over de linker lus gelijk is aan nul. De stroom door R1 is de stroom door de spoel i verminderd met i2, de stroom door de condensator. De stroom door de condensator i2 is Cdu2/dt.

Mijn tweede vergelijking drukt op analoge manier uit dat de som van de spanningen in de rechterlus nul is.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.737
Lid geworden op: vr 30 mar 2018, 16:51

Re: tijdstippen

Ik zie in jouw code (niet in het vorige bericht maar in het plaatje met de grafiek van de stromen op de vorige pagina) wel een minteken voor aan de tweede vergelijking die hier niet staat.
Gebruikersavatar
wnvl1
Artikelen: 0
Berichten: 2.954
Lid geworden op: di 20 jul 2021, 21:43

Re: tijdstippen

Dat was een fout initieel, maar die had ik dus intussen al verbeterd. Met de laatste code van deze pagina krijg ik dit plaatje.
stromen
Gebruikersavatar
wnvl1
Artikelen: 0
Berichten: 2.954
Lid geworden op: di 20 jul 2021, 21:43

Re: tijdstippen

Als algemene oplossingen van de DV'en kom ik op

u2 = 1.0*C1*exp(-15.0*t) + 1.0*C2*exp(-1.0*t) + 3.19842053307009*sin(0.333333333333333*t) + 8.928923988154*cos(0.333333333333333*t) - 0.5

i1 = 0.566666666666667*C1*exp(-15.0*t) + 0.1*C2*exp(-1.0*t) + 0.31243830207305*sin(0.333333333333333*t) + 0.559723593287266*cos(0.333333333333333*t) + 0.1

i2 = -1.5*C1*exp(-15.0*t) - 0.1*C2*exp(-1.0*t) - 0.297630799605133*sin(0.333333333333333*t) + 0.106614017769003*cos(0.333333333333333*t)

Dat is al anders dan ukster. Dus de fout zit helemaal in het begin alvorens de beginwaarden verwerkt worden.

Terug naar “Sciencetalk café”