> # Crank-Nicolson-esimerkki, luento ke 26.11.-96 # > eq1:=4*u[1,1]-u[2,1]=u[2,0]; eq1 := 4 u[1, 1] - u[2, 1] = u[2, 0] u := u > eq2:=4*u[2,1]-u[3,1]-u[1,1]=u[3,0]+u[1,0]; eq2 := 4 u[2, 1] - u[3, 1] - u[1, 1] = u[3, 0] + u[1, 0] > eq3:=4*u[3,1]-u[4,1]-u[2,1]=u[4,0]+u[2,0]; eq3 := 4 u[3, 1] - u[4, 1] - u[2, 1] = u[4, 0] + u[2, 0] > eq4:=4*u[4,1]-u[5,1]-u[3,1]=u[5,0]+u[3,0]; eq4 := 4 u[4, 1] - u[5, 1] - u[3, 1] = u[5, 0] + u[3, 0] > > for j from 0 to 5 do u[j,0]:=evalf(sin(j*0.2*Pi)) od; u[0, 0] := 0 u[1, 0] := .5877852524 u[2, 0] := .9510565165 u[3, 0] := .9510565163 u[4, 0] := .5877852522 u[5, 0] := 0 > u[0,1]:=0;u[5,1]:=0; u[0, 1] := 0 u[5, 1] := 0 > solve({eq1,eq2,eq3,eq4},{seq(u[j,1],j=1..4)}); {u[3, 1] = .6460385084, u[4, 1] = .3992737562, u[2, 1] = .6460385084, u[1, 1] = .3992737562} > # Tästä on hyvä jatkaa ja lopulta hoitaa homma for-loopilla k-indeksin # suhteen. #