lineus.mws
Esimerkit : Lineaariset yhtälöt

Eulerin yhtälön muuntaminen vakiokertoimiseksi

Maple a voidaan käyttää yleisen Eulerin yhtälön muuntamiseen vakiokertoimiseksi yhtälöksi sijoituksella x = exp(t) . Seuraava esitys toimii periaatteessa mille tahansa kertaluvulle n . Jos n > 20, alkaa laskenta kuitenkin vaatia varsin paljon resursseja.

Syötetään Eulerin yhtälön kertaluku ja muodostetaan yhtälö:

> n:= 5;

n := 5

> euleryht:= sum(a[k]*x^k*(D@@k)(y)(x), k=0..n)=0;

euleryht := a[0]*y(x)+a[1]*x*D(y)(x)+a[2]*x^2*`@@`(...
euleryht := a[0]*y(x)+a[1]*x*D(y)(x)+a[2]*x^2*`@@`(...

Sijoituksen seurauksena syntyy uusi tuntematon funktio u(t) = y(exp(t)) . Funktiot y ja u toisiinsa sitova yhtälö talletetaan nimelle yht[0] :

> yht[0]:= u(t)=y(exp(t));

yht[0] := u(t) = y(exp(t))

Tätä yhtälöä derivoidaan muuttujan t suhteen n kertaa, jotta saadaan vastaavat derivaattojen väliset yhtälöt; nämä kerätään listaksi:

> yhtalot:= {seq(diff(yht[0], [t$k]), k=0..n)};

yhtalot := {diff(u(t),t) = D(y)(exp(t))*exp(t), u(t...
yhtalot := {diff(u(t),t) = D(y)(exp(t))*exp(t), u(t...
yhtalot := {diff(u(t),t) = D(y)(exp(t))*exp(t), u(t...
yhtalot := {diff(u(t),t) = D(y)(exp(t))*exp(t), u(t...
yhtalot := {diff(u(t),t) = D(y)(exp(t))*exp(t), u(t...
yhtalot := {diff(u(t),t) = D(y)(exp(t))*exp(t), u(t...

Tuntemattomat, ts. funktion y derivaatat kerätään omaksi listakseen; muuttujaksi otetaan t :

> tuntemattomat:= {seq((D@@k)(y)(exp(t)), k=0..n)};

tuntemattomat := {y(exp(t)), D(y)(exp(t)), `@@`(D,2...
tuntemattomat := {y(exp(t)), D(y)(exp(t)), `@@`(D,2...
tuntemattomat := {y(exp(t)), D(y)(exp(t)), `@@`(D,2...

Jotta alkuperäinen differentiaaliyhtälö saadaan muunnetuksi funktiota u koskevaksi, yhtälöryhmästä ratkaistaan funktion y derivaatat ja sijoitetaan nämä differentiaaliyhtälöön; muuttujaksi otetaan t :

> sij:= solve(yhtalot, tuntemattomat);

sij := {`@@`(D,3)(y)(exp(t)) = (diff(u(t),`$`(t,3))...
sij := {`@@`(D,3)(y)(exp(t)) = (diff(u(t),`$`(t,3))...
sij := {`@@`(D,3)(y)(exp(t)) = (diff(u(t),`$`(t,3))...
sij := {`@@`(D,3)(y)(exp(t)) = (diff(u(t),`$`(t,3))...
sij := {`@@`(D,3)(y)(exp(t)) = (diff(u(t),`$`(t,3))...

> subs(x=exp(t), euleryht):
vakiokertyht:= subs(sij, %):
simplify(%);

a[0]*u(t)+a[1]*diff(u(t),t)+a[2]*diff(u(t),`$`(t,2)...
a[0]*u(t)+a[1]*diff(u(t),t)+a[2]*diff(u(t),`$`(t,2)...
a[0]*u(t)+a[1]*diff(u(t),t)+a[2]*diff(u(t),`$`(t,2)...
a[0]*u(t)+a[1]*diff(u(t),t)+a[2]*diff(u(t),`$`(t,2)...

Tällöin on saatu Eulerin yhtälöä vastaava vakiokertoiminen yhtälö. Jotta tämä hahmottuisi selkeämmin, termit kootaan funktion u derivaattojen mukaan ryhmiteltyinä:

> derivaatat:=[seq(diff(u(t), [t$k]), k=0..n)];

derivaatat := [u(t), diff(u(t),t), diff(u(t),`$`(t,...

> ryhmitettyvakiokertyht:= collect(vakiokertyht, derivaatat);

ryhmitettyvakiokertyht := a[0]*u(t)+(a[1]-a[2]-6*a[...
ryhmitettyvakiokertyht := a[0]*u(t)+(a[1]-a[2]-6*a[...
ryhmitettyvakiokertyht := a[0]*u(t)+(a[1]-a[2]-6*a[...

Saadun yhtälön vasemmasta puolesta voidaan myös poimia eri derivaattojen kertoimet:

> coeffs(lhs(ryhmitettyvakiokertyht), derivaatat);

a[1]-a[2]-6*a[4]+2*a[3]+24*a[5], a[0], -3*a[3]+a[2]...
a[1]-a[2]-6*a[4]+2*a[3]+24*a[5], a[0], -3*a[3]+a[2]...

Kertoimet ovat todellakin vakioita.


Ratkaiseminen: Eulerin yhtälön muuntaminen vakiokertoimiseksi ja ratkaiseminen
Teoria: yhtälön muuntaminen sijoituksella

SKK & MS 31.05.2001