公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

–3 投票
2.8k 浏览

数值分析里面有如下理论

并有如下例题

可是我找不到相应的MMA函数

data = {{{27.7}, 4.1, 3.0}, {{28.0}, 4.3}, {{29.0}, 4.1}, {{30.0}, 
   3.0, -4.0}}
InterpolatingPolynomial[data, x] // Expand // OrderedForm

可是返回的并不是分段三次多项式...

该用哪个函数或方法解决呢??

分类:函数 | 用户: mma-2-2-2 (1.3k 分)
书上都把过程写得那么详细了,照着手写个代码出来很难吗?什么功能都想要内置函数是病,得治
mathematica 只是工具,真正重要的是你的想法,不要本末倒置。
很多mathematica用户都有的问题,想什么都要用mathematica来做,
比如解个数值方程,不用mathematica解出来就是难受。
其实重要的是你的想法,只要你实现了自己的想法,什么语言并不重要。
嗯,不能太依赖MMA去解决问题...

2 个回答

+2 投票
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}

我自己按书本步骤试了一下,求优化

用户: mma-2-2-2 (1.3k 分)
好像有进步。好像有进步。
谢谢苹果夸奖,我会继续努力...
...