【惊】matlab和mma的样条插值结果不同
mathematica吧
全部回复
仅看楼主
level 8
flumer 楼主
论文上说要用三次样条插值,但是相应的matlab程序用cubic出warning,说是换成了spline,程序里要迭代的,最后收敛。然后翻译成mma的代码,Interpolation没有cubic,只有spline和hermite。然后程序不能收敛,看了一下第一步的插值结果,相差0.001这么个量级。
interpolation怎么用三次样条插值呢,说明里没有cubic这个词。我需要插出来二阶可导。Interpolation的spline好像是二阶可导的啊,怎么会不收敛!!
程序比较大,所以就说说了。如果研究了一下觉得是我程序的问题,再来贴。
2015年04月22日 14点04分 1
level 8
flumer 楼主
另外这个程序的matlab上用的interpn,是个不推荐使用要淘汰的指令。
另外做的是二元函数的插值。
2015年04月22日 14点04分 3
吧务
level 12
interpolatingorder
2015年04月22日 14点04分 4
原来有个小地方写错了,没问题了,多谢!
2015年04月26日 05点04分
@flumer [喷]
2015年04月26日 07点04分
@qsraaaa520 [汗]不过结果确实是不同,mma用的是B样条插值
2015年04月30日 08点04分
level 8
flumer 楼主
无力了,不一样的。传来文件,已经影响我对mma的信心了。代码太长,希望有人能解决,很渺茫,放在这里了。里面SHOCK函数和这个没关系的,我已经注释掉了。
[无效] http://pan.baidu.com/s/1jGrb1gq
2015年04月24日 07点04分 5
level 11
三次样条是要给边界的吧,matlab和mma自动给的边界是不是不同
2015年05月01日 02点05分 7
不知道,反正mma用的B样条,好像和数值分析课本上的样条不太一样
2015年05月02日 12点05分
吧务
level 15
我说啊,虽然我不知道你的程序最后是怎么改的,但是,你真的确定matlab和mathematica对高维矩阵各维度的排列是一样的?:
mathematica.stackexchange.com/a/10584/1871
2015年05月02日 10点05分 8
回复一下
2015年05月02日 12点05分
level 8
flumer 楼主
我不太清楚
mathematica.stackexchange.com/a/10584/1871
上的关于mma转换到matlab的结果如何用到matlab上,我觉得这可能是适用于matlink的?
举个例子,我使用的是就是对于mma的单行或者单列要特殊处理一下,其他的没问题,包括赋值。
2015年05月02日 12点05分 9
另外,确实matlab是主列的,我注意到了这点
2015年05月02日 12点05分
还有上面那个链接和Matlink什么的没关系,谈的就是Matlab和Mathematica在高维阵(列表)上的不同。
2015年05月02日 13点05分
@xzcyr matlab的Table。。。我不会用。它们之间确实是不同的,但是用起来不用担心。就是单行单列注意一下了。
2015年05月03日 12点05分
level 8
flumer 楼主
查到了B样条的一个性质,k次B样条的k-1次导数连续。B样条确实和平常的样条不一样,和matlab里平常的样条,不一样。mma只用B样条,窃以为这方法是足够的。
2015年05月03日 13点05分 10
同意
2018年10月14日 16点10分
1