Annettu differentiaaliyhtälö on lineaarinen ja homogeeninen. Talletetaan se:
Input := dyht= (1 - 2 x)y''[x] + 2 y'[x] + (2 x - 3)y[x] == 0
Output = (-3 + 2 x) y[x] + 2 y'[x] + (1 - 2 x) y''[x] == 0
Yritetään ratkaista:
Input := ylrtk1= DSolve[dyht,y[x],x]
Output = DSolve[(-3 + 2 x) y[x] + 2 y'[x] + (1 - 2 x) y''[x] == 0, y[x], x]
Koska ei onnistu, ladataan differentiaaliyhtälöiden lisäpaketti:
Input := Needs["Calculus`DSolve`"]
Ja uusi yritys, jolloin ratkaisu onnistuu, mutta tulos näyttää aika
monimutkaiselta:
Input := ylrtk2= DSolve[dyht,y[x],x]
Output =
1/2 - x
E x Sqrt[-1 + 2 x] C[1]
{{y[x] -> -(------------------------------) +
Sqrt[2] Sqrt[1 - 2 x]
-(1/2) - x 2 x
E Sqrt[1 - 2 x] (E - 2 E x) C[2]
---------------------------------------------}}
Sqrt[2] Sqrt[-1 + 2 x]
Yritetään ratkaista perinteisillä käsinlaskumenetelmillä.
Eksponenttifunktio näyttää olevan ratkaisu:
Input := dyht/.y->Exp//Simplify
Output = True
Toinen lineaarisesti riippumaton ratkaisu saadaan sopivalla yritteellä:
Input := yrite= u[x] Exp[x]
Output = x E u[x]
Sijoitus yhtälöön ja apufunktion ratkaisu:
Input := dyht1= dyht/.y->Function[x,Evaluate[yrite]]//Simplify
Output = x E (4 u'[x] - 4 x u'[x] + u''[x] - 2 x u''[x]) == 0
Input := apurtk= DSolve[dyht1,u[x],x]
Output =
x C[1]
{{u[x] -> ------ + C[2]}}
2 x
E
Input :=
sij= First[apurtk]/.{C[1]->1,C[2]->0}
Output =
x
{u[x] -> ----}
2 x
E
Yleinen ratkaisu:
Input := ylrtk2= C[1] Exp[x] + C[2] Exp[x] u[x]/.sij
Output =
x x C[2]
E C[1] + ------
x
E
Pohdittavaksi jääköön, onko tämä sama kuin edellä suoraan DSolve-funktiolla saatu.
Hävitetään luodut muuttujat:
Input := Remove["Global`*"]
Asiat löytyvät helpoimmin luennoista tai kirjoista.
Funtkion määrittely ja muuttujalista:
Input := f[x_,y_,z_]:= Exp[x y + y z + z x]
Input :=
muuttujat= {x,y,z}
Output =
{x, y, z}
Ensimmäisen ja toisen kertaluvun osittaisderivaatat:
Input :=
grad= Table[D[f[x,y,z],muuttujat[[k]]],{k,1,3}]
Output =
x y + x z + y z x y + x z + y z
{E (y + z), E (x + z),
x y + x z + y z
E (x + y)}
Input :=
hesse= Table[D[f[x,y,z],muuttujat[[k]],
muuttujat[[j]]],{k,1,3},{j,1,3}]
Output =
x y + x z + y z 2
{{E (y + z) ,
x y + x z + y z x y + x z + y z
E + E (x + z) (y + z),
x y + x z + y z x y + x z + y z
E + E (x + y) (y + z)},
x y + x z + y z x y + x z + y z
{E + E (x + z) (y + z),
x y + x z + y z 2
E (x + z) ,
x y + x z + y z x y + x z + y z
E + E (x + y) (x + z)},
x y + x z + y z x y + x z + y z
{E + E (x + y) (y + z),
x y + x z + y z x y + x z + y z
E + E (x + y) (x + z),
x y + x z + y z 2
E (x + y) }}
Näiden arvot origossa:
Input :=
grad0= grad/.{x->0,y->0,z->0}
Output =
{0, 0, 0}
Input :=
hesse0= hesse/.{x->0,y->0,z->0}
Output =
{{0, 1, 1}, {1, 0, 1}, {1, 1, 0}}
Taylorin polynomi:
Input := taylor= f[0,0,0] + grad0.muuttujat + (1/2) muuttujat.hesse0.muuttujat//Expand
Output = 1 + x y + x z + y z
Origossa muodostettu Hessen matriisi matriisimuodossa:
Input := hesse0//MatrixForm
Output = 0 1 1 1 0 1 1 1 0
Input := Remove["Global`*"]
Ladataan aluksi lisäpaketti, joka mm. sisältää pallokoordinaatteja koskevia apufunktioita:
Input := Needs["Calculus`VectorAnalysis`"]
Input := dv= JacobianDeterminant[Spherical]
Output = 2 r Sin[theta]
Tilavuus voidaan laskea yhdellä integrointikäskyllä:
Input :=
vol= Integrate[dv,{theta,0,Pi},{phi,0,2 Pi},
{r,0,Sin[theta] Sin[phi/2]}]
Output = Pi -- 3
Input := Remove["Global`*"]
Stokesin lause löytyy luennoista ja kirjoista.
Vektorikentän määrittely:
Input :=
u[x_,y_,z_]:= {z,x,y}
Ja sen roottori (Curl ladatusta vektorianalyysipaketista):
Input := rot= Curl[u[x,y,z]]
Output =
{1, 1, 1}
Pinnan määrittely ja pintaintegraalin laskemisessa tarvittava normaalivektori:
Input :=
pinta= {x,y,x y}
Output =
{x, y, x y}
Input := p= CrossProduct[D[pinta,x],D[pinta,y]]
Output =
{-y, -x, 1}
Käyräintegraalin laskeminen Stokesin lauseen mukaisesti pintaintegraalina:
Input :=
int= Integrate[rot.p,{x,-1,1},{y,-1,1}]
Output = 4
Input := Remove["Global`*"]
Ladataan jälleen lisäpaketti:
Input := Needs["Algebra`SymbolicSum`"]
Ensimmäinen summa saadaan helposti:
Input :=
sum1= Sum[Exp[-k x],{k,0,Infinity}]
Vastaus ei kyllä anna mitään viitteitä siitä, millä arvoilla x sarja suppenee.
Kyseessä on kuitenkin geometrinen sarja ja se suppenee, jos x > 0.
Output =
x
E
-------
x
-1 + E
Toinen sarja vastaavasti, mutta nyt Mathematica väittääkin sen hajaantuvan.
Näin onkin arvoilla x<=0, mutta arvoilla x > 0 sarja suppenee. Tasaiseen suppenevuuteen perustuvat tarkastelut osoittavat, että se saadaan derivoimalla edellinen sarja ja muuttamalla merkki:
Input :=
sum2= Sum[k Exp[-k x],{k,0,Infinity}]
Output = ComplexInfinity
Input := sum2= -D[sum1,x]//Together
Output =
x
E
----------
x 2
(-1 + E )
Mitä kaikkiaan voisi sanoa?
Tehtäviä voi ratkaista Mathematicallakin, vaikka se ei käytännössä tenttitilaisuudessa olekaan mahdollista. Ratkaiseminen kuitenkin edellyttää kohtalaisen paljon tietämystä. DWIM (Do What I Mean) -tietokonetta ei ole ja tuskin tuleekaan.