elif i == 0 and j == 1:
        return 1
    elif i == 1 and j == 0:
        return 0
    elif i == 1 and j == 1:
        return 1
    raise ValueError("Wrong i, j (i=%d, j=%d)." % (i, j))
d.define_ode(F, DFDY)
d.assign_dofs()
Y = zeros(d.ndofs)
J = d.assemble_J(Y)
error = 1e10
i = 0
while error > 1e-10:
    F = d.assemble_F(Y)
    dY = d.solve(J, F)
    error = d.calculate_error_l2_norm(dY)
    print "it=%d, l2_norm=%e" % (i, error)
    Y += dY
    i += 1
x = Y

from pylab import plot, legend, show
sln1, sln2 = d.linearize(x, 5)
x1, y1 = sln1
x2, y2 = sln2
plot(x1, y1, label="$u_1$")
plot(x2, y2, label="$u_2$")
legend()
show()
Esempio n. 2
0
    elif i == 2 and j == 1:
        return 1
    elif i == 2 and j == 2:
        return 4
    raise ValueError("Wrong i, j (i=%d, j=%d)." % (i, j))
d.define_ode(F, DFDY)
ndofs = d.assign_dofs()
Y = zeros(ndofs)
J = d.assemble_J(Y)
error = 1e10
i = 0
while error > 1e-4:
    F = d.assemble_F(Y)
    dY = d.solve(J, F)
    error = d.calculate_error_l2_norm(dY)
    print "it=%d, l2_norm=%e" % (i, error)
    Y += dY
    i += 1
x = Y

from pylab import plot, legend, show
sln1, sln2, sln3 = d.linearize(x, 5)
x1, y1 = sln1
x2, y2 = sln2
x3, y3 = sln3
plot(x1, y1, label="$u_1$")
plot(x2, y2, label="$u_2$")
plot(x3, y3, label="$u_3$")
legend()
show()