Fortran Coder

查看: 12807|回复: 12
打印 上一主题 下一主题

[插值拟合] 关于差值方法

[复制链接]

98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

跳转到指定楼层
楼主
发表于 2014-1-23 20:05:41 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
已知一组数据,用Lagrange多项式插值方法计算出来的数据不符合数据的真实趋势,如何解决?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

沙发
 楼主| 发表于 2014-1-24 08:43:23 | 显示全部楼层
这是已知数据:
0          0
2      0.350617
4       0.938272
6      0
8      -0.316049
10      -0.217284
12      0
14      0.0987654
16      0.0790123
18      0
下面是插值后加密的数据:
0              0
            0.5       -1.14289
              1      -0.970142
            1.5      -0.319806
              2       0.350617
            2.5       0.832135
              3        1.06738
            3.5        1.08199
              4       0.938272
            4.5       0.705968
              5       0.445728
            5.5       0.201669
              6              0
            6.5      -0.148687
              7      -0.245285
            7.5      -0.297569
              8      -0.316049
            8.5      -0.310836
              9      -0.289764
            9.5      -0.257765
             10      -0.217284
           10.5      -0.169407
             11      -0.115269
           11.5     -0.0573139
             12              0
           12.5      0.0503486
             13      0.0866936
           13.5       0.103369
             14      0.0987654
           14.5      0.0779355
             15      0.0540707
           15.5      0.0473299
             16      0.0790123
           16.5       0.158492
             17        0.25971
           17.5       0.283339
             18              0
下图是插值前后的对比图,显然插值后数据趋势不正确(黄色点为原始数据)。



98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

板凳
 楼主| 发表于 2014-1-24 12:10:21 | 显示全部楼层
谢谢!这个很完美,下午看。

98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

地板
 楼主| 发表于 2014-1-24 15:16:41 | 显示全部楼层
再次感谢臭石头!
下午考虑的情况:三次样条虽然能很好地光滑插值(如臭石头给出的例子),但是和影响线的真实情况有所区别(如弯矩影响线有尖点),所以最终采取数据分段的方法,依旧采用Lagrange差值计算,结果吻合良好:


98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

5#
 楼主| 发表于 2014-3-12 09:13:47 | 显示全部楼层

发现拉格朗插值的稳定性不好,下面的数据插值后发散。期待雪球用三次样条验证下是否可行(我改了下fortran代码,老是不对)?
共53行数据,要求插值间距为0.1:

0 0.0448691
0.8 0
3.36 -0.141092
5.92 -0.270408
8.48 -0.379768
11.04 -0.462291
13.6 -0.511338
16.16 -0.524469
18.72 -0.509841
21.28 -0.47633
23.84 -0.432552
26.4 -0.387011
28.96 -0.346568
31.52 -0.311683
34.08 -0.281601
36.64 -0.255941
39.2 -0.234728
41.76 -0.218125
44.32 -0.204685
46.88 -0.192656
49.44 -0.180615
52 -0.16741
54.56 -0.152814
57.12 -0.137541
59.68 -0.122244
62.24 -0.107776
64.8 -0.0951893
67.36 -0.0854269
69.92 -0.0777986
72.48 -0.071234
75.04 -0.0648455
77.6 -0.0579076
80.16 -0.0502016
82.72 -0.0420509
85.28 -0.0337848
87.84 -0.0258565
90.4 -0.0188259
92.96 -0.0132322
95.52 -0.00877765
98.08 -0.00491217
100.64 -0.0011118
103.2 0.0032074
105.76 0.00809623
108.32 0.0127307
110.88 0.0166258
113.44 0.019518
116 0.0215117
118.56 0.0226838
121.12 0.0216095
123.68 0.0171785
126.24 0.00933951
128.8 0
129.6 -2.70E-03

98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

6#
 楼主| 发表于 2014-3-12 09:22:35 | 显示全部楼层



要分段的话不方便,不知道三次样条怎么样?

98

帖子

5

主题

3

精华

专家

F 币
426 元
贡献
275 点

管理勋章新人勋章

7#
 楼主| 发表于 2014-3-12 16:34:46 | 显示全部楼层
总结:当插值点较多的时候,全局拉格朗日方法会出现插值不稳定,差值结果误差很大的情况;后来采用了三次样条函数插值的方法,差值效果很好,解决了插值发散的问题。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-14 17:35

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表