zpět na hlavní stránku

JSNotebook

Vytvořil Richard Kokštein, 2022.

JSNotebook umožňuje generovat dynamický obsah pomocí funkčních bloků. Je inspirován TeXem, Jupyter Notebookem a Matlab Live Scriptem. Funkční bloky umoňují přidávat text, rovnice, obrázky a JavaScript kód. Textové bloky mohou obsahovat HTML značky. JavaScript se používá pro výpočty nebo tvorbu složitějšího obsahu, než nabízejí základní bloky. Bloky s textem a rovnicemi umožňují dynamické nahrazení části obsahu odkazem na JavaScript objekt GLOBAL (nebo pouze G). Používá se pro to příkaz \var{GLOBAL.mojePromenna} nebo \var{G.mojePromenna}, který bude po kompilaci nahrazen obsahem proměnné. Vytvořené bloky lze ukládat i načítat. Obsah uloženého souboru obsahuje pouze JavaScript příkazy addTxtBlock(...), addEqBlock(...), addImgBlock(...) a addJsBlock(...). Celý JSNotebook je postavený na kontroverzní funkci eval(), která spouští JavaScript kód uložený v textové podobě (string). Šance na zneužití nebo útok je malá (stránka se nepřipojuje na žádný server ani nemanipuluje s citlivými daty) a škody by mohly být maximálně zamrznutý prohlížeč, přesto je dobré načítat a spouštět pouze bloky, u kterých jste si jistí jejich původem a neškodností. Defaultně načtené bloky jsou vytvořené mnou a neobsahují nebezpečný kód. Pokud máte problém s kompilací, můžete si v prohlížeči otevřít vývojářské nástroje, otevřít si konzoli a podívat se na chyby, které stránka při kompilaci hlásí. Obsah textových nebo rovnicových bloků začínajících středníkem (;, U+003B, alt+59) nebude zobrazen. Při kompilaci prohlížeč nachvilku zamrzne, kvůli výpočtům a renderování rovnic. Na mobilu může být zásek znatelně delší. Stránka je určena především pro desktopové webové prohlížeče.

howto/showcase video


Source

Javascript
Dynamic
Javascript
Dynamic
Text
Dynamic
Text
Dynamic
Text
Dynamic
Equation
Dynamic
Javascript
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Javascript
Dynamic
Text
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Text
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Text
Dynamic
Javascript
Dynamic
Equation
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Text
Dynamic
Equation
Dynamic
Javascript
Dynamic
Text
Dynamic
Equation
Dynamic
Equation
Dynamic
Equation
Dynamic
Equation
Dynamic
Text
Dynamic
Javascript
Dynamic
Text
Dynamic
Equation
Dynamic
Equation
Dynamic
Equation
Dynamic
Equation
Dynamic
Text
Dynamic
Javascript
Dynamic
Text
Dynamic
Equation
Dynamic
Equation
Dynamic
Equation
Dynamic
Equation
Dynamic
Text
Dynamic
Text
Dynamic
Equation
Dynamic

Result

Výpočet hlavních napětí při obecné napjatosti

Zadané napětí: σx=60MPa, σy=50MPa, σz=20MPa, τx=40MPa, τy=0MPa, τz=30MPa.

Tenzor napětí:

Tσ=[σxτzτyτzσyτxτyτxσz]=[6030030504004020]MPa

Invarianty tenzoru napětí:

I0=1I1=σx+σy+σz=(60)+(50)+(20)=30I2=|σxτzτzσy|+|σyτxτxσz|+|σxτyτyσz|=σxσy+σyσz+σxσzτx2τy2τz2=(60)(50)+(50)(20)+(60)(20)(40)2(0)2(30)2=5300I3=|σxτzτyτzσyτxτyτxσz|=σxσyσz+2τxτyτzσxτx2σyτy2σzτz2=(60)(50)(20)+2(40)(0)(30)(60)(40)2(50)(0)2(20)(30)2=174000

Pro stanovení hlavních napětí musíme vyřešit kubickou charakteristickou rovnici:

det(Tσσ)=0I0σ3I1σ2+I2σI3=0σ3(30)σ2+(5300)σ(174000)=0

Pro zjištění kořenů kubické rovnice existuje řada postupů. Jedním z nich jsou např. Cardanovy vzorce, které vyžadují operace s imaginárními čísly i v našem případě, kdy víme, že kubika má všechny kořeny reálné. Pro náš případ existuje implementačně jednodušší řešení, které vytvořili francoužští matematici François Viète a René Descartes.

Obecnou kubiku ax3+bx2+cx+d=0 můžeme přepsat do podoby t3+pt+q=0, kde p=3acb23a2, q=2b39abc+27a2d27a3. Kořeny původní a upravené kubiky jsou svázané vztahem xk=tkb3a.

tk=2p3cos[13arccos(3q2p3p)2πk3]pro k=0,1,2

Diskriminant upravené kubiky se vypočítá Dt=(4p3+27q2). Pokud Dt>0, původní kubika má tři rozdílné reálné kořeny. Pokud Dt=0 a p0, má původní kubika dva rozdílné reálné kořeny (jeden dvojnásobný). Pokud Dt=0 a p=q=0, má původní kubika jeden reálný kořen (trojnásobný) x1,2,3=d3. Pro případ s dvojnásobným kořenem vypočítáme kořeny upravené kubiky t0=3qp, t1,2=3q2p.

V tomto případě jsou koeficienty obecné kubiky: a=I0=1, b=I1=30, c=I2=5300, d=I3=174000.

Koeficienty upravené kubiky:

p=3acb23a2=3(5300)(30)23=5600q=2b39abc+27a2d27a3=2(30)39(30)(5300)+27(174000)27=119000

Determinant upravené kubiky:

Dt=(4p3+27q2)=(4(5600)3+27(119000)2)=320117000000

Platí Dt>0, můžeme počítat kořeny upravené kubiky a posléze kořeny původní charakteristické rovnice.

t0=2p3cos[13arccos(3q2p3p)]=2(5600)3cos[13arccos(3(119000)2(5600)3(5600))]=60.191t1=2p3cos[13arccos(3q2p3p)2π3]=2(5600)3cos[13arccos(3(119000)2(5600)3(5600))2π3]=23.596t2=2p3cos[13arccos(3q2p3p)4π3]=2(5600)3cos[13arccos(3(119000)2(5600)3(5600))4π3]=83.787σ1=x0=t0b3a=60.191303=70.191MPaσ2=x0=t1b3a=23.596303=33.596MPaσ3=x0=t2b3a=83.787303=73.787MPa

Výsledkem výpočtu jsou hlavní napětí σ1=70.191MPa, σ2=33.596MPa, σ3=73.787MPa.

Tσ:[σxτzτyτzσyτxτyτxσz][σ1000σ2000σ3][6030030504004020][70.19100033.59600073.787]

Hlavní napětí jako obyčejný text pro zkopírování: 70.191, 33.596, -73.787.

Kontrola hlavních napětí pomocí invariant tenzoru. Musí platit I1=I1, I2=I2, I3=I3. Kvůli zaokrouhlování během výpočtu se skutečné invarianty budou lehce lišit.

I1=σ1+σ2+σ3=(70.191)+(33.596)+(73.787)=30I2=σ1σ2+σ2σ3+σ1σ3=(70.191)(33.596)+(33.596)(73.787)+(70.191)(73.787)=5299.995I3=σ1σ2σ3=(70.191)(33.596)(73.787)=173999.843

I1I13030I2I253005299.995I3I3174000173999.843

Pro určení úhlů hlavních rovin musíme vyřešit následující soustavu nelineárních rovnic, kde první tři lineární rovnice jsou lineárně závislé.

(σxσi)cosαi+τzcosβi+τycosγi=0τzcosαi+(σyσi)cosβi+τxcosγi=0τycosαi+τxcosβi+(σzσi)cosγi=0cos2αi+cos2βi+cos2γi=1

Abychom pro výpočet nemuseli vybírat dvě lineárně nezávislé rovnice z prvních třech rovnic, sečteme první dvě rovnice a budeme řešit následující soustavu. Pro zjednodušení problému zavedeme A=σxσi+τz, B=τz+σyσi, C=τy+τx, D=τy, E=τx, F=σzσi.

Acosαi+Bcosβi+Ccosγi=0Dcosαi+Ecosβi+Fcosγi=0cos2αi+cos2βi+cos2γi=1

Pro tuto soustavu lze nalézt obecné řešení:

x=(B2+A2)F2+(2BCE2ACD)F+(C2+A2)E22ABDE+(C2+B2)D2cosαi=±BFCExcosβi=AFCDxcosγi=±AEBDx

Určení hlavních rovin pro první hlavní napětí:

A=σxσ1+τz=60(70.191)+(30)=40.191B=τz+σyσ1=30+(50)(70.191)=150.191C=τy+τx=0+(40)=40D=τy=0E=τx=40F=σzσ1=20(70.191)=50.191

x=(B2+A2)F2+(2BCE2ACD)F+(C2+A2)E22ABDE+(C2+B2)D2=[(150.191)2+(40.191)2](50.191)2+[2(150.191)(40)(40)2(40.191)(40)(0)](50.191)+[(40)2+(40.191)2](40)22(40.191)(150.191)(0)(40)+[(40)2+(150.191)2](0)2=41916361.549527

cosα1=±BFCEx=±(150.191)(50.191)(40)(40)41916361.549527=±(0.917203)cosβ1=±AFCDx=±(40.191)(50.191)(40)(0)41916361.549527=±(0.311575)cosγ1=±AEBDx=±(40.191)(40)(150.191)(0)41916361.549527=±(0.248312)

α1+=arccos(+(0.917203))=±23.479 α1=arccos((0.917203))=±156.521β1+=arccos(+(0.311575))=±108.154β1=arccos((0.311575))=±71.846γ1+=arccos(+(0.248312))=±104.378γ1=arccos((0.248312))=±75.622

Úhly a cosiny uhlů hlavní roviny prvního hlavního napětí jako obyčejný text pro zkopírování:

1) Úhly: {23.479, 156.521}, {108.154, 71.846}, {104.378, 75.622}.
2) Cosiny: 0.917203, -0.311575, -0.248312.

Určení hlavních rovin pro druhé hlavní napětí:

A=σxσ2+τz=60(33.596)+(30)=3.596B=τz+σyσ2=30+(50)(33.596)=113.596C=τy+τx=0+(40)=40D=τy=0E=τx=40F=σzσ2=20(33.596)=13.596

x=(B2+A2)F2+(2BCE2ACD)F+(C2+A2)E22ABDE+(C2+B2)D2=[(113.596)2+(3.596)2](13.596)2+[2(113.596)(40)(40)2(3.596)(40)(0)](13.596)+[(40)2+(3.596)2](40)22(3.596)(113.596)(0)(40)+[(40)2+(113.596)2](0)2=26165.964006

cosα2=±BFCEx=±(113.596)(13.596)(40)(40)26165.964006=±(0.343405)cosβ2=±AFCDx=±(3.596)(13.596)(40)(0)26165.964006=±(0.302247)cosγ2=±AEBDx=±(3.596)(40)(113.596)(0)26165.964006=±(0.889224)

α2+=arccos(+(0.343405))=±110.084 α2=arccos((0.343405))=±69.916β2+=arccos(+(0.302247))=±107.593β2=arccos((0.302247))=±72.407γ2+=arccos(+(0.889224))=±152.776γ2=arccos((0.889224))=±27.224

Úhly a cosiny uhlů hlavní roviny druhého hlavního napětí jako obyčejný text pro zkopírování:

1) Úhly: {110.084, 69.916}, {107.593, 72.407}, {152.776, 27.224}.
2) Cosiny: -0.343405, -0.302247, -0.889224.

Určení hlavních rovin pro třetí hlavní napětí:

A=σxσ3+τz=60(73.787)+(30)=103.787B=τz+σyσ3=30+(50)(73.787)=6.213C=τy+τx=0+(40)=40D=τy=0E=τx=40F=σzσ3=20(73.787)=93.787

x=(B2+A2)F2+(2BCE2ACD)F+(C2+A2)E22ABDE+(C2+B2)D2=[(6.213)2+(103.787)2](93.787)2+[2(6.213)(40)(40)2(103.787)(40)(0)](93.787)+[(40)2+(103.787)2](40)22(103.787)(6.213)(0)(40)+[(40)2+(6.213)2](0)2=116747211.332407

cosα3=±BFCEx=±(6.213)(93.787)(40)(40)116747211.332407=±(0.202009)cosβ3=±AFCDx=±(103.787)(93.787)(40)(0)116747211.332407=±(0.90087)cosγ3=±AEBDx=±(103.787)(40)(6.213)(0)116747211.332407=±(0.38422)

α3+=arccos(+(0.202009))=±101.654 α3=arccos((0.202009))=±78.346β3+=arccos(+(0.90087))=±154.273β3=arccos((0.90087))=±25.727γ3+=arccos(+(0.38422))=±67.405γ3=arccos((0.38422))=±112.595

Úhly a cosiny uhlů hlavní roviny třetího hlavního napětí jako obyčejný text pro zkopírování:

1) Úhly: {101.654, 78.346}, {154.273, 25.727}, {67.405, 112.595}.
2) Cosiny: -0.202009, -0.90087, 0.38422.

Výsledkem výpočtů je souhrnná tabulka obsahující hlavní napětí a pro ně vypočítané úhly hlavních rovin.

iσi [MPa]cosαi []αi []cosβi []βi []cosγi []γi []1.70.191±(0.917203)±23.479,±156.521±(0.311575)±108.154,±71.846±(0.248312)±104.378,±75.6222.33.596±(0.343405)±110.084,±69.916±(0.302247)±107.593,±72.407±(0.889224)±152.776,±27.2243.73.787±(0.202009)±101.654,±78.346±(0.90087)±154.273,±25.727±(0.38422)±67.405,±112.595

Stránka využívá skripty MathJax, FileSaver.js a Blob.js.