回答編集履歴
1
グラフ追加
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
x,yにリストとして座標を追加し、numpyの配列に変換すれば以下のソースコードで計算できると思います。
|
2
2
|
|
3
|
-
x
|
3
|
+
Ax=rとして解いた。a,b,c,dは三次関数の係数。
|
4
4
|
|
5
5
|
```python
|
6
6
|
|
@@ -11,8 +11,6 @@
|
|
11
11
|
x = np.array([0, 1, 4, 5, 8])
|
12
12
|
|
13
13
|
y = np.array([0, 3, 3, 1, 2])
|
14
|
-
|
15
|
-
|
16
14
|
|
17
15
|
n = len(x)-1
|
18
16
|
|
@@ -60,17 +58,19 @@
|
|
60
58
|
|
61
59
|
|
62
60
|
|
63
|
-
|
61
|
+
r = np.zeros(n+1)
|
64
62
|
|
65
|
-
b[:] = 0
|
66
|
-
|
67
|
-
|
63
|
+
r[1:-1] = (3/h)[1:]*(a[2:]-a[1:-1])-(3/h)[:-1]*(a[1:-1]-a[:-2])
|
68
64
|
|
69
65
|
|
70
66
|
|
71
|
-
c = np.dot(Ainv,
|
67
|
+
c = np.dot(Ainv, r)
|
72
68
|
|
73
69
|
|
70
|
+
|
71
|
+
d = (c[1:]-c[:-1])/(3*h)
|
72
|
+
|
73
|
+
b = (a[1:]-a[:-1])/h-h/3*(2*c[:-1]+c[1:])
|
74
74
|
|
75
75
|
print("x", x, "y", y)
|
76
76
|
|
@@ -80,9 +80,17 @@
|
|
80
80
|
|
81
81
|
print(A)
|
82
82
|
|
83
|
+
print("r", r)
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
print("a", a)
|
88
|
+
|
83
89
|
print("b", b)
|
84
90
|
|
85
91
|
print("c", c)
|
92
|
+
|
93
|
+
print("d", d)
|
86
94
|
|
87
95
|
```
|
88
96
|
|
@@ -106,8 +114,18 @@
|
|
106
114
|
|
107
115
|
[0. 0. 0. 0. 1.]]
|
108
116
|
|
109
|
-
|
117
|
+
r [ 0. -9. -6. 7. 0.]
|
118
|
+
|
119
|
+
a [0 3 3 1 2]
|
120
|
+
|
121
|
+
b [ 3.31018519 2.37962963 -1.96759259 -1.5462963 ]
|
110
122
|
|
111
123
|
c [ 0. -0.93055556 -0.51851852 0.93981481 0. ]
|
112
124
|
|
125
|
+
d [-0.31018519 0.04578189 0.48611111 -0.10442387]
|
126
|
+
|
113
127
|
```
|
128
|
+
|
129
|
+
![イメージ説明](e3fd9e612e19ba01268a2ec4ecedbd77.png)
|
130
|
+
|
131
|
+
![イメージ説明](c5c67075d9de612e33dc8a6d5a2c03a0.png)
|