Clear["`*"]
Data = Rationalize /@ {{{27.7}, 4.1, 3}, {{28}, 4.3}, {{29},
4.1}, {{30}, 3, -4}};
n = Dimensions[Data][[1]] - 1;
x = Data[[;; , 1]] // Flatten;
y = Data[[;; , 2]] // Flatten;
boundarycondition0 = Data[[1, 3]];
boundarycondition1 = Data[[n + 1, 3]];
Do[h[i] = x[[i + 2]] - x[[i + 1]], {i, 0, n - 1}]
Do[\[Mu][i] = h[i - 1]/(h[i - 1] + h[i]), {i, 1, n - 1}]
Do[\[Lambda][i] = h[i]/(h[i - 1] + h[i]), {i, 1, n - 1}]
f[i_, j_] := (y[[j + 1]] - y[[i + 1]])/(x[[j + 1]] - x[[i + 1]])
f[i_, j_, k_] := (f[j, k] - f[i, j])/(x[[k + 1]] - x[[i + 1]])
Do[d[i_] := 6*f[i - 1, i, i + 1], {i, 1, n - 1}]
\[Lambda][0] = 1;
d[0] = (6 (f[0, 1] - boundarycondition0))/h[0];
\[Mu][n] = 1;
d[n] = (6 (boundarycondition1 - f[n - 1, n]))/h[n - 1];
s = SparseArray[{{i_, i_} ->
2, {i_, j_} /; i - j == -1 -> \[Lambda][i - 1], {i_, j_} /;
i - j == 1 -> \[Mu][j]}, {n + 1, n + 1}];
d = Table[d[i], {i, 0, n}];
M = LinearSolve[s, d];
Table[M[[j + 1]] (x[[j + 2]] - X)^3/(6 h[j]) +
M[[j + 2]] (X - x[[j + 1]])^3/(
6 h[j]) + (y[[j + 1]] - (M[[j + 1]] h[j]^2)/6) (x[[j + 2]] - X)/
h[j] + (y[[j + 2]] - (M[[j + 2]] h[j]^2)/6) (X - x[[j + 1]])/
h[j], {j, 0, n - 1}] // N
{14.84323432 (28. - 1. X) - 13.07297396 (28. - 1. X)^3 +
14.31353135 (-27.7 + X) + 0.2200220022 (-27.7 + X)^3,
4.233993399 (29. - 1. X) + 0.06600660066 (29. - 1. X)^3 +
3.961716172 (-28. + X) + 0.1382838284 (-28. + X)^3,
3.961716172 (30. - 1. X) + 0.1382838284 (30. - 1. X)^3 +
4.519141914 (-29. + X) - 1.519141914 (-29. + X)^3}
我自己按书本步骤试了一下,求优化