<?xml version="1.0"  encoding="iso-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="xsl/mathml.xsl"?>
<!DOCTYPE MMLEntities [
<!ENTITY af "&#x02061;">
<!ENTITY alpha "&#x003B1;">
<!ENTITY ap "&#x02048;">
<!ENTITY apos "&#x00027;">
<!ENTITY ApplyFunction "&#x02061;">
<!ENTITY Backslash "&#x02216;">
<!ENTITY beta "&#x003B2;">
<!ENTITY cap "&#x02229;">
<!ENTITY CenterDot "&#x000B7;">
<!ENTITY chi "&#x003C7;">
<!ENTITY compfn "&#x02218;">
<!ENTITY cup "&#x0222A;">
<!ENTITY dd "d">
<!ENTITY Del "&#x02207;">
<!ENTITY Delta "&#x00394;">
<!ENTITY delta "&#x003B4;">
<!ENTITY DifferentialD "d">
<!ENTITY DoubleRightArrow "&#x021D2;">
<!ENTITY ee "e">
<!ENTITY empty "&#x02205;&#x02063;">
<!ENTITY emptyset "&#x02205;&#x02063;">
<!ENTITY epsi "&#x003B5;">
<!ENTITY epsilon "&#x003B5;">
<!ENTITY epsiv "&#x0025B;">
<!ENTITY equiv "&#x02261;">
<!ENTITY eta "&#x003B7;">
<!ENTITY exist "&#x02203;">
<!ENTITY Exists "&#x02203;">
<!ENTITY ExponentialE "e">
<!ENTITY forall "&#x02200;">
<!ENTITY ForAll "&#x02200;">
<!ENTITY Gamma "&#x00393;">
<!ENTITY gamma "&#x003B3;">
<!ENTITY Gammad "&#x003DC;">
<!ENTITY gammad "&#x003DC;">
<!ENTITY ge "&#x02265;">
<!ENTITY gt "&#x0003E;">
<!ENTITY ii "i">
<!ENTITY image "&#x02111;">
<!ENTITY ImaginaryI "i">
<!ENTITY in "&#x02208;">
<!ENTITY infin "&#x0221E;">
<!ENTITY Integral "&#x0222B;">
<!ENTITY InvisibleTimes "&#x02062;">
<!ENTITY iota "&#x003B9;">
<!ENTITY it "&#x02062;">
<!ENTITY kappa "&#x003BA;">
<!ENTITY kappav "&#x003F0;">
<!ENTITY Lambda "&#x0039B;">
<!ENTITY lambda "&#x003BB;">
<!ENTITY lceil "&#x02308;">
<!ENTITY le "&#x02264;">
<!ENTITY LeftBracketingBar "|">
<!ENTITY LeftCeiling "&#x02308;">
<!ENTITY LeftFloor "&#x0230A;">
<!ENTITY lfloor "&#x0230A;">
<!ENTITY LowerRightArrow "&#x02198;">
<!ENTITY mu "&#x003BC;">
<!ENTITY nabla "&#x02207;">
<!ENTITY nbsp "&#x000A0;">
<!ENTITY ne "&#x02260;">
<!ENTITY not "&#x000AC;">
<!ENTITY NotElement "&#x02209;">
<!ENTITY NotEqual "&#x02260;">
<!ENTITY notin "&#x02209;">
<!ENTITY NotSubsetEqual "&#x02288;">
<!ENTITY nsub "&#x02284;">
<!ENTITY nsube "&#x02288;">
<!ENTITY nsubseteq "&#x02288;">
<!ENTITY nu "&#x003BD;">
<!ENTITY Omega "&#x003A9;">
<!ENTITY omega "&#x003C9;">
<!ENTITY OverBar "&#x000AF;">
<!ENTITY part "&#x02202;">
<!ENTITY Phi "&#x003A6;">
<!ENTITY phi "&#x003C6;">
<!ENTITY phiv "&#x003D5;">
<!ENTITY Pi "&#x003A0;">
<!ENTITY pi "&#x003C0;">
<!ENTITY piv "&#x003D6;">
<!ENTITY prime "&#x02032;">
<!ENTITY Product "&#x0220F;">
<!ENTITY Psi "&#x003A8;">
<!ENTITY psi "&#x003C8;">
<!ENTITY rarr "&#x02192;">
<!ENTITY rceil "&#x02309;">
<!ENTITY real "&#x0211C;">
<!ENTITY rfloor "&#x0230B;">
<!ENTITY rho "&#x003C1;">
<!ENTITY rhov "&#x003F1;">
<!ENTITY RightArrow "&#x02192;">
<!ENTITY rightarrow "&#x02192;">
<!ENTITY RightBracketingBar "|">
<!ENTITY RightCeiling "&#x02309;">
<!ENTITY RightFloor "&#x0230B;">
<!ENTITY Sigma "&#x003A3;">
<!ENTITY sigma "&#x003C3;">
<!ENTITY sigmav "&#x003C2;">
<!ENTITY sub "&#x02282;">
<!ENTITY sube "&#x02286;">
<!ENTITY SuchThat "&#x0220B;">
<!ENTITY Sum "&#x02211;">
<!ENTITY tau "&#x003C4;">
<!ENTITY Theta "&#x00398;">
<!ENTITY theta "&#x003B8;">
<!ENTITY thetav "&#x003D1;">
<!ENTITY times "&#x000D7;">
<!ENTITY UpperRightArrow "&#x02197;">
<!ENTITY Upsi "&#x003D2;">
<!ENTITY upsi "&#x003C5;">
<!ENTITY vee "&#x02228;">
<!ENTITY wedge "&#x02227;">
<!ENTITY weierp "&#x02118;">
<!ENTITY xi "&#x003BE;">
<!ENTITY Xi "&#x0039E;">
<!ENTITY zeta "&#x003B6;">
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>numryh.html</title>
<!-- Created by Maple 8.00, IBM INTEL NT -->
<link href="../navi/css/esim.css" rel="stylesheet" type="text/css"/>
</head>
<body bgcolor="FFFFFF">

<a href="../mpl/numryh.mws" target="_blank">numryh.mws</a>

<a name="MapleAutoBookmark1" />
<p align="center">
<b><u><font color="#000000" size="5">Differentiaaliyhtälöryhmä </font></u></b>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Ensimmäisen kertaluvun differentiaaliyhtälöryhmä Â— vaikkapa korkeamman kertaluvun yhtälöÂä vastaava normaaliryhmä Â— voidaan ratkaista numeerisesti täsmälleen samanlaisilla kaavoilla kuin ensimmäisen kertaluvun yhtälö </font>
<i><font color="#000000">y</font></i>
<font color="#000000">' = f(</font>
<i><font color="#000000">x</font></i>
<font color="#000000">, </font>
<i><font color="#000000">y</font></i>
<font color="#000000">). Edellytyksenä luonnollisesti on, että alkuehto on annettu. <br />
<br />
Seuraavat koodit ovat täsmälleen samat kuin ensimmäisen kertaluvun yhtälöÂä koskevassa esimerkissä. (Solut on ajettava, jotta mäÂäritelmät tulevat voimaan.) </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">restart;</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">eulernum:=proc(f, x0, y0, h, xend)<br />
&nbsp;&nbsp;local kend, x, y, i;<br />
&nbsp;&nbsp;kend:= round((xend-x0)/h);<br />
&nbsp;&nbsp;x[0]:= x0;<br />
&nbsp;&nbsp;y[0]:= y0;<br />
&nbsp;&nbsp;for i from 1 to kend do<br />
&nbsp;&nbsp;&nbsp;&nbsp;x[i]:= x[i-1]+h;<br />
&nbsp;&nbsp;&nbsp;&nbsp;y[i]:= y[i-1]+h*f(x[i-1], y[i-1]);<br />
&nbsp;&nbsp;od;<br />
return [seq([x[k], y[k]], k=0..kend)];<br />
end:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">pareuler:= proc(f, x0, y0, h, xend)<br />
&nbsp;&nbsp;local kend, x, y, i;<br />
&nbsp;&nbsp;kend:= round((xend-x0)/h);<br />
&nbsp;&nbsp;x[0]:= x0;<br />
&nbsp;&nbsp;y[0]:= y0;<br />
&nbsp;&nbsp;for i from 1 to kend do<br />
&nbsp;&nbsp;&nbsp;&nbsp;x[i]:= x[i-1]+h;<br />
&nbsp;&nbsp;&nbsp;&nbsp;y[i]:= y[i-1]+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h/2*(f(x[i-1],y[i-1])+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f(x[i],y[i-1]+h*f(x[i-1], y[i-1])));<br />
&nbsp;&nbsp;od;<br />
return [seq([x[k], y[k]], k=0..kend)];<br />
end:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">rungekutta:= proc(f, x0, y0, h, xend)<br />
&nbsp;&nbsp;local kend, x, y, i, k1, k2, k3, k4;<br />
&nbsp;&nbsp;kend:= round((xend-x0)/h);<br />
&nbsp;&nbsp;x[0]:= x0;<br />
&nbsp;&nbsp;y[0]:= y0;<br />
&nbsp;&nbsp;for i from 1 to kend do<br />
&nbsp;&nbsp;&nbsp;&nbsp;x[i]:= x[i-1]+h;<br />
&nbsp;&nbsp;&nbsp;&nbsp;k1:= h*f(x[i-1], y[i-1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;k2:= h*f(x[i-1]+h/2, y[i-1]+k1/2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;k3:= h*f(x[i-1]+h/2, y[i-1]+k2/2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;k4:= h*f(x[i-1]+h, y[i-1]+k3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;y[i]:= y[i-1]+1/6*(k1+2*k2+2*k3+k4);<br />
&nbsp;&nbsp;od;<br />
return [seq([x[k], y[k]], k=0..kend)];<br />
end:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">adamsbashforth:= proc(f, x0, y0, h, xend)<br />
&nbsp;&nbsp;local kend, x, y, i, k1, k2, k3, k4;<br />
&nbsp;&nbsp;kend:= round((xend-x0)/h);<br />
&nbsp;&nbsp;x[0]:= x0;<br />
&nbsp;&nbsp;y[0]:= y0;<br />
&nbsp;&nbsp;for i from 1 to 3 do<br />
&nbsp;&nbsp;&nbsp;&nbsp;x[i]:= x[i-1]+h;<br />
&nbsp;&nbsp;&nbsp;&nbsp;k1:= h*f(x[i-1], y[i-1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;k2:= h*f(x[i-1]+h/2, y[i-1]+k1/2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;k3:= h*f(x[i-1]+h/2, y[i-1]+k2/2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;k4:= h*f(x[i-1]+h, y[i-1]+k3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;y[i]:= y[i-1]+1/6*(k1+2*k2+2*k3+k4);<br />
&nbsp;&nbsp;od;<br />
&nbsp;&nbsp;for i from 4 to kend do<br />
&nbsp;&nbsp;&nbsp;&nbsp;x[i]:= x[i-1]+h;<br />
&nbsp;&nbsp;&nbsp;&nbsp;y[i]:= y[i-1]+h/24*(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55*f(x[i-1], y[i-1])-<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;59*f(x[i-2], y[i-2])+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37*f(x[i-3], y[i-3])-<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9*f(x[i-4], y[i-4]))<br />
&nbsp;&nbsp;od;<br />
return [seq([x[k], y[k]], k=0..kend)];<br />
end:</font></b>
</td></tr>
</table>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Esimerkkinä olkoon differentiaaliyhtälö </font>
<i><font color="#000000">x</font></i>
<font color="#000000">'' + </font>
<i><font color="#000000">xy</font></i>
<font color="#000000">&nbsp;= 0 alkuehtona </font>
<i><font color="#000000">y</font></i>
<font color="#000000">(0) = 0, </font>
<i><font color="#000000">y</font></i>
<font color="#000000">'(0) = 1 . Kyseessä on Airyn yhtälö, jossa x-akselin suunta on käÂännetty, ts. </font>
<i><font color="#000000">x</font></i>
<font color="#000000">:n merkki on vaihdettu. YhtälöÂä vastaava normaaliryhmä muodostuu kahdesta yhtälöstä </font>
<i><font color="#000000">y</font></i>
<font color="#000000">' = </font>
<i><font color="#000000">z</font></i>
<font color="#000000">, </font>
<i><font color="#000000">z</font></i>
<font color="#000000">' = -</font>
<i><font color="#000000">xy</font></i>
<font color="#000000">&nbsp;alkuehtona </font>
<i><font color="#000000">y</font></i>
<font color="#000000">(0) = 0, </font>
<i><font color="#000000">z</font></i>
<font color="#000000">(0) = 1. Vektorimuodossa normaaliryhmä on </font>
<i><font color="#000000">Y</font></i>
<font color="#000000">' = F(</font>
<i><font color="#000000">x</font></i>
<font color="#000000">, </font>
<i><font color="#000000">Y</font></i>
<font color="#000000">); oikean puolen vektoriarvoinen funktio mäÂäritelläÂän </font>
<i><font color="#000000">Maple</font></i>
<font color="#000000">lle seuraavasti: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">f:= unapply([Y[2], -x*Y[1]], x, Y);</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh1.gif" width="178" height="27" alt="f := proc (x, Y) options operator, arrow; [Y[2], -x*Y[1]] end proc" />
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Askelpituus ja arvo, jolla alkuehto annetaan: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">h:= 0.1;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>h</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mn>.1</mn>
  </mrow>
</math>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">x0:= 0;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>x0</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mn>0</mn>
  </mrow>
</math>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Tuntemattomana funktiona on vektori </font>
<i><font color="#000000">Y</font></i>
<font color="#000000">&nbsp;= (</font>
<i><font color="#000000">y</font></i>
<font color="#000000">, </font>
<i><font color="#000000">z</font></i>
<font color="#000000">), joten alkuarvo on myös vektori: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">y0:= [0,1];</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>y0</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mfenced open='[' close=']'>
      <mn>0</mn>
      <mn>1</mn>
    </mfenced>
  </mrow>
</math>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Lasketaan välillä [0, 10]: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">xend:= 10;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>xend</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mn>10</mn>
  </mrow>
</math>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Ratkaisufunktion approksimaatio jokaisessa pisteessä </font>
<img src="images/numryh2.gif" width="32" height="32" alt="x[k]" align="middle" />
<font color="#000000">&nbsp;saadaan kaksikomponenttisena vektorina. Edellinen komponentti on itse funktion </font>
<i><font color="#000000">y</font></i>
<font color="#000000">&nbsp;arvo, jälkimmäinen sen derivaatan </font>
<i><font color="#000000">z</font></i>
<font color="#000000">&nbsp;= </font>
<i><font color="#000000">y</font></i>
<font color="#000000">' arvo: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">eulerdata:= eulernum(f, x0, y0, h, xend):</font></b>
</td></tr>
</table>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Muuttujaan </font>
<b><font color="#000000">eulerdata</font></b>
<font color="#000000">&nbsp;talletettu tulostus on huomattavan pitkä.</font>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Tästä voidaan poimia vain argumentin </font>
<i><font color="#000000">x</font></i>
<font color="#000000">&nbsp;ja funktion </font>
<i><font color="#000000">y</font></i>
<font color="#000000">&nbsp;arvot indeksoimalla, minkä jälkeen voidaan piirtäÂä kuva: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">poiminta:= [seq([eulerdata[k][1], eulerdata[k][2][1]], k=1..xend/h+1)]:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">eulerkuva:= plot(poiminta, style=point):<br />
eulerkuva;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh3.gif" width="612" height="612" alt="[Maple Plot]" />
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Vastaavat laskut muita menetelmiä käyttäen: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">pareulerdata:= pareuler(f, x0, y0, h, xend):</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">poiminta:= [seq([pareulerdata[k][1], pareulerdata[k][2][1]], k=1..xend/h+1)]:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">pareulerkuva:= plot(poiminta, style=point):<br />
pareulerkuva;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh4.gif" width="612" height="612" alt="[Maple Plot]" />
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">rungekuttadata:= rungekutta(f, x0, y0, h, xend):</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">poiminta:=[seq([rungekuttadata[k][1], rungekuttadata[k][2][1]], k=1..xend/h+1)]:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">rungekuttakuva:= plot(poiminta, style=point):<br />
rungekuttakuva;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh5.gif" width="612" height="612" alt="[Maple Plot]" />
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">adamsbashforthdata:= adamsbashforth(f, x0, y0, h, xend):</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">poiminta:= [seq([adamsbashforthdata[k][1], adamsbashforthdata[k][2][1]], k=1..xend/h+1)]:</font></b>
</td></tr>
</table>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">adamsbashforthkuva:= plot(poiminta, style=point):<br />
adamsbashforthkuva;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh6.gif" width="612" height="612" alt="[Maple Plot]" />
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Esimerkkinä oleva alkuarvoprobleema voidaan ratkaista myös tarkasti Airyn funktioiden avulla. </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">dyht:= diff(y(x), x, x)+x*y(x)=0 ;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>dyht</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mrow>
      <mrow>
        <mrow>
          <mfrac>
            <msup>
              <mo>&DifferentialD;</mo>
              <mn>2</mn>
            </msup>
            <msup>
              <mrow>
                <mo>&DifferentialD;</mo>
                <mi>x</mi>
              </mrow>
              <mn>2</mn>
            </msup>
          </mfrac>
          <mrow>
            <mi>y</mi>
            <mo>&ApplyFunction;</mo>
            <mfenced>
              <mi>x</mi>
            </mfenced>
          </mrow>
        </mrow>
        <mo>+</mo>
        <mrow>
          <mi>x</mi>
          <mo>&InvisibleTimes;</mo>
          <mrow>
            <mi>y</mi>
            <mo>&ApplyFunction;</mo>
            <mfenced>
              <mi>x</mi>
            </mfenced>
          </mrow>
        </mrow>
      </mrow>
      <mo>=</mo>
      <mn>0</mn>
    </mrow>
  </mrow>
</math>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">tarkkaratkaisu:= dsolve({dyht, y(0)=0, D(y)(0)=1}, y(x));</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>tarkkaratkaisu</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mrow>
      <mrow>
        <mi>y</mi>
        <mo>&ApplyFunction;</mo>
        <mfenced>
          <mi>x</mi>
        </mfenced>
      </mrow>
      <mo>=</mo>
      <mrow>
        <mrow>
          <mfrac>
            <mn>1</mn>
            <mn>3</mn>
          </mfrac>
          <mo>&InvisibleTimes;</mo>
          <mfrac>
            <mrow>
              <mrow>
                <mn>&pi;</mn>
                <mo>&InvisibleTimes;</mo>
                <msup>
                  <mn>3</mn>
                  <mfrac>
                    <mn>5</mn>
                    <mn>6</mn>
                  </mfrac>
                </msup>
              </mrow>
              <mo>&InvisibleTimes;</mo>
              <mrow>
                <mi>Ai</mi>
                <mo>&ApplyFunction;</mo>
                <mfenced>
                  <mrow>
                    <mo>-</mo>
                    <mi>x</mi>
                  </mrow>
                </mfenced>
              </mrow>
            </mrow>
            <mrow>
              <mi>&Gamma;</mi>
              <mo>&ApplyFunction;</mo>
              <mfenced>
                <mfrac>
                  <mn>2</mn>
                  <mn>3</mn>
                </mfrac>
              </mfenced>
            </mrow>
          </mfrac>
        </mrow>
        <mo>-</mo>
        <mrow>
          <mfrac>
            <mn>1</mn>
            <mn>3</mn>
          </mfrac>
          <mo>&InvisibleTimes;</mo>
          <mfrac>
            <mrow>
              <mrow>
                <mn>&pi;</mn>
                <mo>&InvisibleTimes;</mo>
                <mroot>
                  <mn>3</mn>
                  <mn>3</mn>
                </mroot>
              </mrow>
              <mo>&InvisibleTimes;</mo>
              <mrow>
                <mi>Bi</mi>
                <mo>&ApplyFunction;</mo>
                <mfenced>
                  <mrow>
                    <mo>-</mo>
                    <mi>x</mi>
                  </mrow>
                </mfenced>
              </mrow>
            </mrow>
            <mrow>
              <mi>&Gamma;</mi>
              <mo>&ApplyFunction;</mo>
              <mfenced>
                <mfrac>
                  <mn>2</mn>
                  <mn>3</mn>
                </mfrac>
              </mfenced>
            </mrow>
          </mfrac>
        </mrow>
      </mrow>
    </mrow>
  </mrow>
</math>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">tarkkakuva:= plot(rhs(tarkkaratkaisu), x=0..xend):<br />
tarkkakuva;</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh7.gif" width="612" height="612" alt="[Maple Plot]" />
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Eri menetelmillä saadut approksimaatiot ja tarkka ratkaisu verrattuina: </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">with(plots):</font></b>
</td></tr>
</table>
</p>
<p align="left">
<tt><pre><font color="#0000FF" size="2">Warning, the name changecoords has been redefined<br />
</font></pre></tt>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">display(eulerkuva, pareulerkuva, rungekuttakuva, adamsbashforthkuva, tarkkakuva);</font></b>
</td></tr>
</table>
</p>
<p align="center">
<img src="images/numryh8.gif" width="612" height="612" alt="[Maple Plot]" />
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Tarkan ratkaisun tarkkuus riippuu luonnollisesti siitä, miten </font>
<i><font color="#000000">Maple</font></i>
<font color="#000000">&nbsp;laskee ratkaisussa esiintyvien Airyn funktioiden ja gammafunktion arvot. <br />
<br />
Vertailun vuoksi alkuarvoprobleema voidaan ratkaista myös </font>
<i><font color="#000000">Maple</font></i>
<font color="#000000">n käyttämällä numeerisen ratkaisemisen algoritmilla, joka edellä esitettyjä menetelmiä kehittyneempi:</font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">numeerinenratkaisu:= dsolve({dyht, y(0)=0, D(y)(0)=1}, y(x));</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mrow>
    <mi>numeerinenratkaisu</mi>
  </mrow>
  <mo>:=</mo>
  <mrow>
    <mrow>
      <mrow>
        <mi>y</mi>
        <mo>&ApplyFunction;</mo>
        <mfenced>
          <mi>x</mi>
        </mfenced>
      </mrow>
      <mo>=</mo>
      <mrow>
        <mrow>
          <mfrac>
            <mn>1</mn>
            <mn>3</mn>
          </mfrac>
          <mo>&InvisibleTimes;</mo>
          <mfrac>
            <mrow>
              <mrow>
                <mn>&pi;</mn>
                <mo>&InvisibleTimes;</mo>
                <msup>
                  <mn>3</mn>
                  <mfrac>
                    <mn>5</mn>
                    <mn>6</mn>
                  </mfrac>
                </msup>
              </mrow>
              <mo>&InvisibleTimes;</mo>
              <mrow>
                <mi>Ai</mi>
                <mo>&ApplyFunction;</mo>
                <mfenced>
                  <mrow>
                    <mo>-</mo>
                    <mi>x</mi>
                  </mrow>
                </mfenced>
              </mrow>
            </mrow>
            <mrow>
              <mi>&Gamma;</mi>
              <mo>&ApplyFunction;</mo>
              <mfenced>
                <mfrac>
                  <mn>2</mn>
                  <mn>3</mn>
                </mfrac>
              </mfenced>
            </mrow>
          </mfrac>
        </mrow>
        <mo>-</mo>
        <mrow>
          <mfrac>
            <mn>1</mn>
            <mn>3</mn>
          </mfrac>
          <mo>&InvisibleTimes;</mo>
          <mfrac>
            <mrow>
              <mrow>
                <mn>&pi;</mn>
                <mo>&InvisibleTimes;</mo>
                <mroot>
                  <mn>3</mn>
                  <mn>3</mn>
                </mroot>
              </mrow>
              <mo>&InvisibleTimes;</mo>
              <mrow>
                <mi>Bi</mi>
                <mo>&ApplyFunction;</mo>
                <mfenced>
                  <mrow>
                    <mo>-</mo>
                    <mi>x</mi>
                  </mrow>
                </mfenced>
              </mrow>
            </mrow>
            <mrow>
              <mi>&Gamma;</mi>
              <mo>&ApplyFunction;</mo>
              <mfenced>
                <mfrac>
                  <mn>2</mn>
                  <mn>3</mn>
                </mfrac>
              </mfenced>
            </mrow>
          </mfrac>
        </mrow>
      </mrow>
    </mrow>
  </mrow>
</math>
</p>
<p align="left">
</p>
<p align="left">
<font color="#000000">Tulos on ratkaisua approksimoiva proseduuri, jonka arvo välin päÂätepisteessä voidaan laskea tavalliseen tapaan. Eri ratkaisujen antamat arvot loppupisteessä : </font>
</p>
<p align="left">
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"><b><font color="#FF0000">eulerdata[-1][2][1],<br />
pareulerdata[-1][2][1],<br />
rungekuttadata[-1][2][1],<br />
adamsbashforthdata[-1][2][1],<br />
evalf(subs(x=xend, rhs(tarkkaratkaisu))),<br />
subs(numeerinenratkaisu(xend), y(x));<br />
</font></b>
</td></tr>
</table>
</p>
<p align="center">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
  <mn>7.325357344</mn>
  <mo>,</mo>
  <mn>.3173048438</mn>
  <mo>,</mo>
  <mn>.4290569759</mn>
  <mo>,</mo>
  <mn>.4331992818</mn>
  <mo>,</mo>
  <mn>.4287192530</mn>
  <mo>,</mo>
  <mrow>
    <mi>y</mi>
    <mo>&ApplyFunction;</mo>
    <mfenced>
      <mi>x</mi>
    </mfenced>
  </mrow>
</math>
</p>
<p align="left">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><tt>&gt; &nbsp;&nbsp;</tt></td>
<td width="100%" valign="top"></td></tr>
</table>
</p>

<p><b>Linkkejä</b></p>


 <a href="../xml_mpl/numkkl.xml">korkeamman kertaluvun yhtälön numeerinen ratkaiseminen</a><br/>
<a href="../xml/numeul.xml">Eulerin menetelmä</a><br/>
<a href="../xml/numheu.xml">parannettu Eulerin menetelmä</a><br/>
<a href="../xml/numrgk.xml">Rungen  -  Kuttan menetelmä</a><br/>
<a href="../xml/numadb.xml">Adamsin  -  Bashforthin menetelmä</a><br/>
 <a href="../xml/yhmnor.xml">normaaliryhmä</a><br/>

<p align="left">
<i><font color="#000000">SKK &amp; MS 31.05.2001</font></i>
<font color="#000000">&nbsp;</font>
</p>



</body>
</html>
