|
33 | 33 | }, |
34 | 34 | { |
35 | 35 | "cell_type": "code", |
36 | | - "execution_count": 2, |
| 36 | + "execution_count": 3, |
37 | 37 | "id": "50cb54b8-95ae-4b38-a34b-3b68d9251ea5", |
38 | 38 | "metadata": {}, |
39 | 39 | "outputs": [], |
|
44 | 44 | "import matplotlib.pyplot as pt" |
45 | 45 | ] |
46 | 46 | }, |
| 47 | + { |
| 48 | + "cell_type": "markdown", |
| 49 | + "id": "d7ccce38-d1e2-483f-b811-ca580f36317e", |
| 50 | + "metadata": {}, |
| 51 | + "source": [ |
| 52 | + "Let's solve $u''=-30x^2$ with $u(0)=1$ and $u(1)=-1$." |
| 53 | + ] |
| 54 | + }, |
47 | 55 | { |
48 | 56 | "cell_type": "code", |
49 | | - "execution_count": 3, |
| 57 | + "execution_count": 5, |
50 | 58 | "id": "1f92e1b9-6975-458b-861c-64a7044e0c07", |
51 | 59 | "metadata": {}, |
52 | 60 | "outputs": [], |
|
57 | 65 | "h = mesh[1] - mesh[0]" |
58 | 66 | ] |
59 | 67 | }, |
| 68 | + { |
| 69 | + "cell_type": "markdown", |
| 70 | + "id": "972fef0b-fdf2-4709-b7bb-151573e1f583", |
| 71 | + "metadata": {}, |
| 72 | + "source": [ |
| 73 | + "Set up the system matrix `A` to carry out centered finite differences\n", |
| 74 | + "\n", |
| 75 | + "$$\n", |
| 76 | + "u''(x)\\approx \\frac{u(x+h) - 2u(x) + u(x-h)}{h^2}.\n", |
| 77 | + "$$\n", |
| 78 | + "\n", |
| 79 | + "Use `np.eye(n, k=...)`. What needs to be in the first and last row?" |
| 80 | + ] |
| 81 | + }, |
60 | 82 | { |
61 | 83 | "cell_type": "code", |
62 | | - "execution_count": 4, |
| 84 | + "execution_count": 6, |
63 | 85 | "id": "0865715a-b5c7-4cd6-9a85-ce751c158d29", |
64 | 86 | "metadata": {}, |
65 | 87 | "outputs": [], |
| 88 | + "source": [] |
| 89 | + }, |
| 90 | + { |
| 91 | + "cell_type": "markdown", |
| 92 | + "id": "80bf4822-86e1-4948-b801-43ea6f5598f2", |
| 93 | + "metadata": {}, |
| 94 | + "source": [ |
| 95 | + "Next, fix the right hand side: " |
| 96 | + ] |
| 97 | + }, |
| 98 | + { |
| 99 | + "cell_type": "code", |
| 100 | + "execution_count": 7, |
| 101 | + "id": "a246c2c3-79ac-4966-9d46-34b6493eb16d", |
| 102 | + "metadata": {}, |
| 103 | + "outputs": [], |
| 104 | + "source": [] |
| 105 | + }, |
| 106 | + { |
| 107 | + "cell_type": "markdown", |
| 108 | + "id": "de5fe2de-537e-42a3-9415-4998a11699d6", |
| 109 | + "metadata": {}, |
| 110 | + "source": [ |
| 111 | + "Compute a reference solution `x_true` to the linear system:" |
| 112 | + ] |
| 113 | + }, |
| 114 | + { |
| 115 | + "cell_type": "code", |
| 116 | + "execution_count": 8, |
| 117 | + "id": "de331c55-d62b-4edc-91de-79181e35342b", |
| 118 | + "metadata": {}, |
| 119 | + "outputs": [], |
| 120 | + "source": [ |
| 121 | + "x_true = la.solve(A, b)\n", |
| 122 | + "pt.plot(mesh, x_true)" |
| 123 | + ] |
| 124 | + }, |
| 125 | + { |
| 126 | + "cell_type": "markdown", |
| 127 | + "id": "2d3e09f9-f508-4752-b3f6-4847d3fd3ad8", |
| 128 | + "metadata": {}, |
66 | 129 | "source": [ |
67 | | - "A = (np.eye(n, k=1) + -2*np.eye(n) + np.eye(n, k=-1))/h**2\n", |
68 | | - "A[0] = 0\n", |
69 | | - "A[-1] = 0\n", |
70 | | - "A[0,0] = 1\n", |
71 | | - "A[-1,-1] = 1" |
| 130 | + "Next, let's consider the influence of each individual RHS component:" |
72 | 131 | ] |
73 | 132 | }, |
74 | 133 | { |
|
0 commit comments