orttrpol.mws |
Esimerkki on jatkoa 'Käyräparven kohtisuorat leikkaajat' -esimerkille, jossa vastaavaa ongelmaa on tarkasteltu suorakulmaisissa koordinaateissa.
Puhdistetaan työtila:
> restart;
Käyräparvi voidaan antaa myös napakoordinaattiesityksenä muodossa
. Olkoon annettuna myös toinen käyräparvi
. Ehto näiden kohtisuoralle leikkaamiselle voidaan johtaa seuraavasti:
Kummankin käyrän pisteiden suorakulmaiset koordinaatit saadaan vektoreista
> v[1]:= [r[1](phi)*cos(phi), r[1](phi)*sin(phi)];
> v[2]:= [r[2](phi)*cos(phi), r[2](phi)*sin(phi)];
Näissä napakulma on käyräparametrin asemassa. Käyrien tangenttivektorit saadaan derivoimalla käyräparametrin suhteen:
> t[1]:= diff(v[1], phi);
> t[2]:= diff(v[2], phi);
Käyrien leikkaamisen kohtisuoruusehto on, että tangenttivektorit ovat toisiaan vastaan kohtisuorat, ts. niiden pistetulo on = 0.
Pistetulo muodostetaan linalg -paketin multiply -komennolla.
> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
>
kohtisuoruusehto:= multiply(t[1], t[2])=0:
simplify(%);
Ratkaisemalla tästä saadaan:
> ratk1:= diff(r[1](phi), phi)=solve(kohtisuoruusehto, diff(r[1](phi), phi));
Ottamalla huomioon, että leikkauspisteessä , saadaan:
> subs({r[1](phi)=r(phi), r[2](phi)=r(phi)}, ratk1);
Korvausehto, joka tarvitaan johdettaessa alkuperäisen parven differentiaaliyhtälöstä kohtisuorien leikkajien differentiaaliyhtälö, on siis
Esimerkkinä olkoon käyräparven
> parvi:= r(phi)=C*exp(k*phi);
kohtisuorien leikkaajien etsiminen.
Käyräparven kuva arvolla voidaan piirtää plot -komennolla käyttämällä parametria coords=polar .
> with(plots):
Warning, the name changecoords has been redefined
> kuva1:=seq(plot(subs(k=0.5, rhs(parvi)), phi=-2..6, coords=polar), C=1..10):
> display(kuva1, scaling=constrained, view=[-60..60, -120..30]);
Käyräparven differentiaaliyhtälön johto:
> derivparvi:= diff(parvi,phi);
> eliminoi:= eliminate({parvi, derivparvi}, C);
> diffyht:= eliminoi[-1][]=0;
Kohtisuorien leikkaajien differentiaaliyhtälö saadaan tekemällä alussa johdettu korvaus:
> diffyht2:= subs(diff(r(phi), phi)=-r(phi)^2/diff(r(phi), phi), diffyht);
Tämän ratkaiseminen antaa kohtisuorat leikkaajat:
> ratk2:= dsolve(diffyht2, r(phi));
Warning, it is required that the numerator of the given ODE depends on the highest derivative. Returning NULL.
Maple ei pidä siitä, että dsolve -komennolle annetun differentiaaliyhtälön korkein derivaatta on nimittäjässä ja antaa siksi varoituksen.
Kuva kohtisuorien leikkaajien parvesta arvolla ja molemmista parvista yhdessä:
> kuva2:= seq(plot(subs(k=0.5, rhs(ratk2)), phi=-2..6, coords=polar), _C1=1..20):
> display(kuva2, scaling=constrained, view=[-75..75, -120..30]);
> display({kuva1,kuva2}, scaling=constrained, view=[-75..75, -120..30]);
Kuvasta voidaan ottaa osasuurennus:
> display({kuva1, kuva2}, scaling=constrained, view=[-0..10, -5..5]);
Etsi napakoordinaateissa annetun käyräparven
kohtisuorat leikkaajat. Mieti ennen piirtämistä, millaisesta käyräparvesta on kyse.
Tutki, millainen korvausehto saadaan, jos käyräparvien halutaan leikkaavan 45 asteen kulmassa. Sovella tätä sekä esimerkin alkuperäiseen käyräparveen että edellisen tehtävän parveen.