// -*- coding: utf-8 -*-
// ---
// jupyter:
//   jupytext:
//     text_representation:
//       extension: .js
//       format_name: light
//       format_version: '1.5'
//       jupytext_version: 1.14.4
//   kernel_info:
//     name: node_nteract
//   kernelspec:
//     argv:
//     - C:\Program Files\nteract\nteract.exe
//     - C:\Program Files\nteract\resources\app.asar\node_modules\ijavascript\lib\kernel.js
//     - '{connection_file}'
//     - --protocol=5.0
//     - --hide-undefined
//     display_name: Node.js (nteract)
//     env:
//       ELECTRON_RUN_AS_NODE: '1'
//       NODE_PATH: C:\Program Files\nteract\resources\app.asar\node_modules
//     language: javascript
//     name: node_nteract
// ---

// + [markdown] nteract={"transient": {"deleting": false}}
// # Valon aaltoilmiöt
// $n_{12}=\frac{sin \alpha_1}{sin \alpha_2}=\frac{c_1}{c_2}=\frac{\lambda_1}{\lambda_2}=\frac{n_2}{n_1}$
// ## interferenssi
// $2d=k\lambda$ heijastuneet aallot kumoavat toisensa<br>
// $2d=(k+½)\lambda$ heijastuneet aallot vahvistavat toisiaan<br>
// d=kalvon paksuus<br>
// $\lambda$=aallonpituus
//
// ## diffraktio
// Palloaallot interferoivat keskenään<br>
// $d sin \alpha = k \lambda, k=0, 1, 2, 3..$ vahvistus<br>
// $d sin \alpha = (k+½) \lambda, k=0, 1, 2, 3..$ sammutus<br>
// $\alpha$=taipumiskulma<br>
// d=rakojen väli<br>
// ## hila
// Sama ilmiö kuin kaksoisraossa, mutta voimakkaampana rakojen pienen välin vuoksi joten valkoinen valo hajoaa 

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
console.log('Node %s %j',process.version,Date());

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-4 Kaksoisrako, jossa rakojen väli on 0.6 mm. Ensimmäisten keskustan molemmin puolen olevien valoisten kohtien väli on 7.5 mm. Varjostin on 4 m päässä. Määritä aallonpituus.
// k=1
//
// Kirjan vastaus 560 nm
//

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
b=0.0075/2;
a=4;
alpha=Math.atan(b/a);
d=0.0006;
l=d*Math.sin(alpha);
console.log('Aallonpituus on %s m eli %d nm',
            l.toExponential(1),(1e9*l).toFixed(0));

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-5 Valo, jonka aallonpituus on 600 nm, tulee kohtisuorasti hilaan. Toisen kertaluvun spektriviivan taipumiskulmaksi mitataan 26 astetta. <br>
// a) Kuinka suuri on hilavakio?<br>
// b) Kuinka suuri on kolmannnen kertaluvun spektriviivan taipumiskulma.
//
// Kirjan vastaus a) 2.74 μm b) 41.1 astetta

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
l=600e-9;
k=2;
a=26*Math.PI/180;
d=k*l/Math.sin(a);
console.log('a) Hilavakio on %s m eli %d μm',
            d.toExponential(3),(1e6*d).toFixed(2));
a=Math.atan(0.0075/2/4);
k=3;
a=180/Math.PI*Math.asin((k*l)/d);
console.log('b) Kolmannen kertaluvun taipumiskulma on %d astetta',
            a.toFixed(1));

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-7 Keltaisen natriumlampun valo (aallonpituus 589 nm) suunnataan kohtisuorasti hilaan, jossa on 400 rakoa/mm. Interferenssi syntyy hilan suuntaiselle varjostimelle, joka on 2 metrin päässä hilasta. Kuinka etäälle keskustasta syntyy ensimmäisen kertaluvun valoisa viiva.
//
// Kirjan vastaus 48.5 cm

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
k=1;
l=589e-9;
a=2;
d=0.001/400;
alpha=Math.asin(k*l/d)
b=Math.tan(alpha)*a;
console.log('Ensimmäinen valoisa viiva syntyy etäisyydelle %s cm.',
            (b*100).toFixed(1));


// + [markdown] nteract={"transient": {"deleting": false}}
// 4-8 Hilassa on 550 rakoa/mm. Monokromaattinen valo, jonka aallonpituus on 590 nm, osuu hilaan kohtisuorasti. Mikä on ensimmäisen ja toisen kertaluvun intensiteettimaksimien välinen etäisyys seinällä. Seinä on yhdensuntainen hilan kanssa ja sen etäisyys on 5 m.
//
// Kirjan vastaus 2.6 m

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
k=1;
l=590e-9;
a=5;
d=0.001/550;
alpha=Math.asin(k*l/d);
b1=Math.tan(alpha)*a;
k=2;
alpha=Math.asin(k*l/d);
b2=Math.tan(alpha)*a;
console.log('Etäisyys on %d m.',(b2-b1).toFixed(5));

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-9 laservalo, jonka aallonpituus on 633 nm, osuu kohtisuorasti hilaan, jossa on 349 rakoa/mm. Kuinka monta intensiteettimaksimia hilan taakse asetetulle varjostimelle sadaan näkyviin.
//
// Kirjan vastaus 9

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
l=633e-9;
d=0.001/349;
// sin alpha on korkeintaan 1
kmax=Math.floor(d/l); // molemmille puolille, lisäksi 0 keskelle
console.log('Näkyville voidaan saada %d intensiteettimaksimia',
            2*kmax+1);

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-12 Pienin taipumiskulma on 38.5 astetta. Allonpituus 405 nm.
// Määritä, kuinka monta rakoa millimetrillä on hilassa.
//
// Kirjan vastaus 1540

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
l=405e-9;
k=1;
alpha=38.5*Math.PI/180;
d=l/Math.sin(alpha);
console.log('Hilassa on %d rakoa/mm',(1/d/1000).toFixed(0));

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-13 Kaksoisraossa rakojen väli on 0.55 mm ja rako on 1.0 metrin etäisyydellä varjostimesta. Varjostimella nähdään kaksi interferenssikuviota, jotka syntyvät 480 nm ja 600 nm valolla. Kuinka kaukana toisistaan ovat näitä aallonpituuksia vastaavat neljännen kertaluvun valoisat viivat.
//
// Kirjan vastaus 0.96 mm

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
k=4;
l=480e-9;
a=1;
d=0.0005;
alpha=Math.asin(k*l/d);
b1=Math.tan(alpha)*a;
l=600e-9;
alpha=Math.asin(k*l/d);
b2=Math.tan(alpha)*a;
console.log('Etäisyys on %d m eli %d mm',
            (b2-b1).toFixed(5),(1000*(b2-b1)).toFixed(2));

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-14 Lasilevyn pinnalla on ohut asetonikerros. Valo, jonka aallonpituutta voi säätää, osuu kohtisuorasti levyn pintaan. Kalvo ei heijasta valoa, kun aallonpituus on 600 nm ja heijastuneen valon intensiteetillä on maksimi, kun aallonpituus on 700 nm. Laske asetonikerroksen paksuus. Asetonin taitekerroin on 1.25.
//
// Kirjan vastaus 840 nm, jossa on minun mielestä virhe. Tehtävä, joka silloin ratkaistaan, on:<br>
// Ei heijasta valoa, kun aallonpituus on 700 nm ja maksimi on kun aallonpituus on 600 nm.

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
n2=1.25;
l1=600e-9;
l2=700e-9;
la1=l1/n2;
la2=l2/n2;
console.log('Aallonpituudet asetonissa ovat %d nm ja %d nm',(1e9*la1).toFixed(0),(1e9*la2).toFixed(0));
// sammutus 2d=k1*la1;
// vahvistus 2d=(k2+0.5)*la2;
best=1;
bk1=0;
bk2=0;
found=false;
mainLoop:
for(k1=1;k1<10;k1++){
    for(k2=0;k2<10;k2++){
      d1=k1*la1/2;
      d2=(k2+0.5)*la2/2;
      diff=Math.abs(d1-d2);
      if(best>diff){
        best=diff;
        bd1=d1;
        bd2=d2;
        bk1=k1;
        bk2=k2;
      }
    }
}
console.log('Parhaassa yhdistelmässä ero oli %d'+
             ' nm, (%d nm ja %d nm), jolloin k1=%d ja k2=%d',
              (best*1e9).toFixed(0),
            (bd1*1e9).toFixed(0),
            (bd2*1e9).toFixed(0),
              bk1,bk2);


// + [markdown] nteract={"transient": {"deleting": false}}
// 4-15 Valkoisen valon aallonpituudet ovat 400-750 nm. Minkä kulmien välillä ensimmäisen kertaluvun spektri näkyy, jos valkoinen valo tulee kohtisuorasti hilaan, jossa on 500 viivaa/mm.
//
// Kirjan vastaus 12-22 astetta

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
function kulma(l){
k=1;
d=0.001/500;
return Math.asin(k*l/d)/Math.PI*180;
}
console.log('Kulmien %d° ja %d° välillä.',
            kulma(400e-9).toFixed(0),kulma(750e-9).toFixed(0));

// + [markdown] nteract={"transient": {"deleting": false}}
// 4-16 Yhdensuuntaisaet punainen (632.8 nm) ja keltainen lasersäde osuvat kohtisuorasti hilaan. Hilan etäisyys varjostimesta (a) on 139 cm.
// Kuudennen kertaluokan maksimien etäisyydet ovat 38.8 cm ja 41 cm.
// a) määritä hilavakio<br>
// b) Laske keltaisen valon aallonpituus
//
// Kirjan vastaus a) 13 μm b) 600 nm

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
k=6
l=632.8e-9;
alpha=Math.atan(0.41/1.39);
d=k*l/Math.sin(alpha);
console.log('Hilavakio on %d m eli %d μm.',d,(1e6*d).toFixed(0));
alpha=Math.atan(0.388/1.39);
l=d*Math.sin(alpha)/k;
console.log('Keltaisen valon aallonpituus on %d m eli %d nm.'
            ,l,(1e9*l).toFixed(0));



// + [markdown] nteract={"transient": {"deleting": false}}
// 4-17 Spektrometrilla tutkitaan valkoista valoa, joka tulee kohtisuorasti hilalle, jonka hilavakio on 1.74 μm. Mihin kohtiin 1.2 metrin päässä hilan takana olevalle varjostimelle tulee näkyvästä valosta (430-750 THz) spektri.
//
// Kirjan vastaus 28 cm - 53 cm, 62 cm - 160 cm

// + jupyter={"source_hidden": false, "outputs_hidden": false} nteract={"transient": {"deleting": false}}
a=1.2;
d=1.74e-6;
c=2.99792458e8;
function b(f,k){
  l=c/f;
  alpha=Math.asin(k*l/d);
  return Math.tan(alpha)*a;
}
for(k=1;k<3;k++){ 
    console.log('k=%d: %d - %d m',
                k,b(750e12,k).toFixed(3),b(430e12,k).toFixed(3));
}
            

StarcoderdataJupyterScriptsDedupFiltered