资源描述
数学实验报告
实验3 插值与数值积分
实验3 插值与数值积分
分1 黄浩 2011011743
一、 实验目的
1) 掌握用matlab计算Lagrange、分段线性、分段三次和三次样条插值这四种插值方法,并通过改变节点的数目,分析插值结果
2) 掌握用matlab及梯形公式、辛普森公式计算数值积分
3) 通过实例学习用插值和数值积分解决实际问题
二、 实验内容
1.(1)题:
问题叙述:
考虑函数:fx=11+x2 x∈[-5,5],取不同的节点数目,分别用Lagrange 插值、分段线性和三次插值,以及三次样条插值近似f(x),分析插值效果
方案实施:
由于在matlab中,没有预设的lagrange插值法函数,因此我首先编制了Lagrange(程序见四.1)和分段线性的插值函数(程序见四.2),并进行了y=x2函数的插值检验(程序见四.3),以检验编写的函数是否准确,如下图所示:
上图中,红、绿两线分别是自设Lagrange和分段线性的插值图,蓝色十字点是matlab自带的分段线性函数的插值图,蓝绿完全吻合、红绿基本吻合,证明自设函数是正确的。
然后进行本题目要求的插值操作:以(x0,y0)为节点,节点在区间内均匀分布且将节点数分别调为6、11、21;x为插值点,绘图时使用101个插值点(始终大于节点数),制表时使用的插值点数目依节点数调节;y为真值,y1、y2、y3、y4分别为使用Lagrange、分段线性、分段三次和三次样条插值的方法所得的插值结果。
1) 节点数为6时:(即节点为-5,-3,…,3,5)
x
y
y1
y2
y3
y4
0
1.0000
0.5673
0.5000
0.5000
0.5685
0.5000
0.8000
0.5501
0.5000
0.5000
0.5513
1.0000
0.5000
0.5000
0.5000
0.5000
0.5000
1.5000
0.3077
0.4213
0.4000
0.4425
0.4167
2.0000
0.2000
0.3212
0.3000
0.3133
0.3131
2.5000
0.1379
0.2097
0.2000
0.1775
0.2029
3.0000
0.1000
0.1000
0.1000
0.1000
0.1000
3.5000
0.0755
0.0078
0.0846
0.0754
0.0183
4.0000
0.0588
-0.0481
0.0692
0.0559
-0.0285
4.5000
0.0471
-0.0460
0.0538
0.0431
-0.0263
5.0000
0.0385
0.0385
0.0385
0.0385
0.0385
图像为:
由上图可见,当节点数为6时,插值效果皆不理想,在各节点之间的插值都有很大的误差,在x=0附近误差最大
2) 节点数为11时:(即节点为-5,-4,…,4,5)
x
y
y1
y2
y3
y4
0
1.0000
1.0000
1.0000
1.0000
1.0000
0.5000
0.8000
0.8434
0.7500
0.7969
0.8205
1.0000
0.5000
0.5000
0.5000
0.5000
0.5000
1.5000
0.3077
0.2353
0.3500
0.3219
0.2973
2.0000
0.2000
0.2000
0.2000
0.2000
0.2000
2.5000
0.1379
0.2538
0.1500
0.1385
0.1401
3.0000
0.1000
0.1000
0.1000
0.1000
0.1000
3.5000
0.0755
-0.2262
0.0794
0.0755
0.0745
4.0000
0.0588
0.0588
0.0588
0.0588
0.0588
4.5000
0.0471
1.5787
0.0486
0.0465
0.0484
5.0000
0.0385
0.0385
0.0385
0.0385
0.0385
图像为:
由上图可见,当节点数为11时,分段三次与三次样条插值的效果较好,其次是分段线性插值,而Lagrange插值在[-2,2]区间内精度较高,但在|x|>3时,就会发生Runge振荡
3) 节点数为21时(程序见四.4):(即节点为-5,-4.5…,4.5,5)
x
y
y1
y2
y3
y4
0
1.0000
1.0000
1.0000
1.0000
1.0000
0.1000
0.9901
0.9904
0.9600
0.9869
0.9891
0.2000
0.9615
0.9626
0.9200
0.9526
0.9594
0.3000
0.9174
0.9189
0.8800
0.9050
0.9152
0.4000
0.8621
0.8632
0.8400
0.8515
0.8606
0.5000
0.8000
0.8000
0.8000
0.8000
0.8000
0.6000
0.7353
0.7337
0.7400
0.7456
0.7372
0.7000
0.6711
0.6682
0.6800
0.6823
0.6742
0.8000
0.6098
0.6065
0.6200
0.6163
0.6127
0.9000
0.5525
0.5503
0.5600
0.5535
0.5541
1.0000
0.5000
0.5000
0.5000
0.5000
0.5000
1.1000
0.4525
0.4550
0.4615
0.4544
0.4517
1.2000
0.4098
0.4143
0.4231
0.4118
0.4089
1.3000
0.3717
0.3765
0.3846
0.3728
0.3711
1.4000
0.3378
0.3411
0.3462
0.3379
0.3375
1.5000
0.3077
0.3077
0.3077
0.3077
0.3077
1.6000
0.2809
0.2770
0.2862
0.2813
0.2810
1.7000
0.2571
0.2501
0.2646
0.2575
0.2572
1.8000
0.2358
0.2281
0.2431
0.2360
0.2359
1.9000
0.2169
0.2115
0.2215
0.2169
0.2170
2.0000
0.2000
0.2000
0.2000
0.2000
0.2000
2.1000
0.1848
0.1918
0.1876
0.1850
0.1848
2.2000
0.1712
0.1843
0.1752
0.1713
0.1712
2.3000
0.1590
0.1742
0.1628
0.1590
0.1589
2.4000
0.1479
0.1590
0.1503
0.1479
0.1479
2.5000
0.1379
0.1379
0.1379
0.1379
0.1379
2.6000
0.1289
0.1130
0.1303
0.1289
0.1289
2.7000
0.1206
0.0896
0.1228
0.1207
0.1206
2.8000
0.1131
0.0750
0.1152
0.1131
0.1131
2.9000
0.1063
0.0770
0.1076
0.1063
0.1063
3.0000
0.1000
0.1000
0.1000
0.1000
0.1000
3.1000
0.0943
0.1408
0.0951
0.0943
0.0942
3.2000
0.0890
0.1858
0.0902
0.0890
0.0890
3.3000
0.0841
0.2101
0.0853
0.0841
0.0841
3.4000
0.0796
0.1823
0.0804
0.0796
0.0796
3.5000
0.0755
0.0755
0.0755
0.0755
0.0755
3.6000
0.0716
-0.1143
0.0721
0.0716
0.0716
3.7000
0.0681
-0.3459
0.0688
0.0681
0.0681
3.8000
0.0648
-0.5136
0.0655
0.0648
0.0648
3.9000
0.0617
-0.4459
0.0622
0.0617
0.0617
4.0000
0.0588
0.0588
0.0588
0.0588
0.0588
4.1000
0.0561
1.1353
0.0565
0.0562
0.0561
4.2000
0.0536
2.6744
0.0541
0.0537
0.0536
4.3000
0.0513
4.0691
0.0518
0.0513
0.0513
4.4000
0.0491
3.9451
0.0494
0.0491
0.0491
4.5000
0.0471
0.0471
0.0471
0.0471
0.0471
4.6000
0.0451
-10.3345
0.0453
0.0451
0.0451
4.7000
0.0433
-28.6626
0.0436
0.0433
0.0433
4.8000
0.0416
-50.8644
0.0419
0.0415
0.0416
4.9000
0.0400
-58.2381
0.0402
0.0399
0.0400
5.0000
0.0385
0.0385
0.0385
0.0385
0.0385
图像为:
由上图可知,当节点数为21时,分段三次和三次样条插值的精度都很高,分段线性稍次,然而Lagrange插值在x=0附近的区间内精度很好,在|x|>3.5时,却发生了更为剧烈的Runge振荡(见上表蓝色粗字,在x=4.9时,插值竟达到了-58.2381)
为定量比较各种算法的误差大小,在节点数为21的情况下,在不发生Runge振荡的[1.1,2.0]的区间内,对上表进行数据处理,结果如下:
(其中y1’,y2’,y3’,y4’分别为使用Lagrange、分段线性、分段三次和三次样条插值的方法所得结果的相对误差的绝对值)
x
y1'
y2'
y3'
y4'
1.1000
0.0055
0.0143
0.0154
0.0059
1.2000
0.0110
0.0212
0.0267
0.0070
1.3000
0.0129
0.0215
0.0307
0.0046
1.4000
0.0098
0.0150
0.0240
0.0012
1.5000
0.0000
0.0000
0.0000
0.0000
1.6000
0.0139
0.0332
0.0171
0.0011
1.7000
0.0272
0.0580
0.0268
0.0012
1.8000
0.0327
0.0658
0.0292
0.0004
1.9000
0.0249
0.0473
0.0208
0.0005
2.0000
0.0000
0.0000
0.0000
0.0000
SUM
0.1379
0.2762
0.1907
0.0218
由上表看出,在无Runge振荡的情况下,使用不同插值方法,误差从大到小排列为:分段线性 > 分段三次 > Lagrange > 三次样条插值。
得出结论:
由上述的比较,我们可以总结出以下几点结论:
a) 一般而言,节点数增加时,插值精度普遍提高
b) 在不发生Runge振荡时,分段三次、三次样条插值和Lagrange插值的精度近似,都有很好的插值效果,而分段线性插值次于上述三者,具体的误差大小为:分段线性 > 分段三次 > Lagrange > 三次样条插值
c) 当节点数增加时,Lagrange插值法的Runge振荡会更加剧烈,在区间端点附近会发生更大的误差,但在区间内部插值效果较好
综合上述三点,还可以对该四种插值方法做一个整体评价:
a) Lagrange插值法:在节点数较少时,插值精度差,当节点数增加时,又有可能发生Runge振荡,造成更大的误差,这是它作为高次插值多项式的内在缺陷。因此,在我们无法评估节点数与所选区间是否合适,也无法判断插值的突跃是否为Runge振荡时,它的精度无法得到保证,可信性较低。
b) 分段线性插值法:其精度随着节点数的增加而单调地增加,但在同种情况下,其精度低于分段三次与三次样条插值。因此在计算机计算时,使用后二者更有利于保证精度,但是在广泛的工程领域中,分段线性因其计算的简便性,使得工程师可以通过查表进行插值,因而比后二者有着更广泛的应用。
c) 分段三次和三次样条插值:精度随着节点数的增加而单调地增加,且明显高于分段线性插值,从精度上来说是更优化的选择,但是计算量也较大。
1.(2)题
问题叙述:
对于上一问的函数fx=11+x2 x∈-5,5,选取非均匀插值节点:xk=5cos2k-12nπ,k=1,2,…,n,尝试进行插值,并分析插值效果
方案实施:
选节点数为20,即n=20,非均匀选取;插值点21个,公差为0.5,节点与插值点互不相同;采用与上一问相似的编程语言(程序见四.5),插值结果如下:
x
y
y1
y2
y3
y4
0
1.0000
0.9624
0.8666
0.8666
0.9468
0.5000
0.8000
0.8126
0.8050
0.8482
0.8170
1.0000
0.5000
0.5119
0.5190
0.5149
0.5156
1.5000
0.3077
0.2963
0.3302
0.3115
0.2981
2.0000
0.2000
0.2028
0.2038
0.2003
0.2013
2.5000
0.1379
0.1405
0.1418
0.1379
0.1386
3.0000
0.1000
0.0964
0.1027
0.1000
0.0996
3.5000
0.0755
0.0783
0.0766
0.0755
0.0756
4.0000
0.0588
0.0567
0.0593
0.0588
0.0588
4.5000
0.0471
0.0487
0.0472
0.0471
0.0471
5.0000
0.0385
0.0370
NaN
0.0385
0.0385
图像为:(其中“+”为节点)
由上图可见,在使用这种非均匀插值节点的情况下,没有Runge振荡发生。
和上一问类似,也对上表进行处理,以定量比较误差大小:
x
y1'
y2'
y3'
y4'
0.0000
0.0376
0.0995
0.0000
0.0925
0.5000
0.0157
0.0094
0.0537
0.0368
1.0000
0.0238
0.0139
0.0079
0.0014
1.5000
0.0370
0.1144
0.0566
0.0430
2.0000
0.0140
0.0049
0.0172
0.0050
2.5000
0.0189
0.0093
0.0275
0.0051
3.0000
0.0360
0.0654
0.0263
0.0040
3.5000
0.0371
0.0217
0.0144
0.0013
4.0000
0.0357
0.0459
0.0084
0.0000
4.5000
0.0340
0.0308
0.0021
0.0000
SUM
0.2898
0.4151
0.2141
0.1891
从上表可以看出,在此情况下,误差从大到小排列为:分段线性 > Lagrange > 分段三次 > 三次样条插值
得出结论:
由该图我们可以得到如下几点信息:
a) 在这种情况下,插值精度从大到小为:分段线性 > Lagrange > 分段三次 > 三次样条插值。该结果与上一问的不同之处,在于Lagrange和分段三次的位次发生了对调,这不难理解,因为上一问是在无Runge振荡的情况下窄区间内排序的,而本次是在全插值区间进行了比较,两者并不矛盾。
b) 当使用这种非均匀插值方法时,在整个插值区间内,都没有发生Runge振荡,也没有任何振荡的痕迹,是对Lagrange插值的优化。
2.题
问题叙述:
用数值积分方法计算函数Φx=-∞x12πe-t22dt在一些节点上的近似值,自行编制一张Φx的取值表。根据此表编写一个函数,对任意x∈R,给出Φ(x)的近似值,同时输出近似值的误差上界。将你的Φ(x)近似值与Matlab中normpdf函数的计算结果进行对比。
方案实施:
为了训练matlab的编程能力,我首先编制了均匀分段的梯形求积函数(程序见四.6)和均匀分段的辛普森求积函数(程序见四.7),为了探究二者是否能准确计算积分,我借助于matlab的预设函数trapz()与quad(),通过计算Φx=0x12πe-t22dt,进行了简易的检验(程序见四.8),结果如下:
x
y1
y2
y3
y4
0.0100
0.0040
0.0040
0.0040
0.0040
0.0200
0.0080
0.0080
0.0080
0.0080
0.0300
0.0120
0.0120
0.0120
0.0120
0.0400
0.0160
0.0160
0.0160
0.0160
0.0500
0.0199
0.0199
0.0199
0.0199
0.0600
0.0239
0.0239
0.0239
0.0239
0.0700
0.0279
0.0279
0.0279
0.0279
0.0800
0.0319
0.0319
0.0319
0.0319
0.0900
0.0359
0.0359
0.0359
0.0359
0.1000
0.0398
0.0398
0.0398
0.0398
上表中的y2,y4,y1,y3分别为自编的梯形、辛普森求积和matlab预设函数trapz()、quad()的积分值。显而易见,自编的两个求积公式都是正确的。
然后进行题目要求的积分操作:
1) 编制标准正态分布函数表(程序见四.9):
u
0.00
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.0
0.5000
0.5040
0.5080
0.5120
0.5160
0.5199
0.5239
0.5279
0.5319
0.5359
0.1
0.5398
0.5438
0.5478
0.5517
0.5557
0.5596
0.5636
0.5675
0.5714
0.5753
0.2
0.5793
0.5832
0.5871
0.5910
0.5948
0.5987
0.6026
0.6064
0.6103
0.6141
0.3
0.6179
0.6217
0.6255
0.6293
0.6331
0.6368
0.6406
0.6443
0.6480
0.6517
0.4
0.6554
0.6591
0.6628
0.6664
0.6700
0.6736
0.6772
0.6808
0.6844
0.6879
0.5
0.6915
0.6950
0.6985
0.7019
0.7054
0.7088
0.7123
0.7157
0.7190
0.7224
0.6
0.7257
0.7291
0.7324
0.7357
0.7389
0.7422
0.7454
0.7486
0.7517
0.7549
0.7
0.7580
0.7611
0.7642
0.7673
0.7704
0.7734
0.7764
0.7794
0.7823
0.7852
0.8
0.7881
0.7910
0.7939
0.7967
0.7995
0.8023
0.8051
0.8078
0.8106
0.8133
0.9
0.8159
0.8186
0.8212
0.8238
0.8264
0.8289
0.8315
0.8340
0.8365
0.8389
1.0
0.8413
0.8438
0.8461
0.8485
0.8508
0.8531
0.8554
0.8577
0.8599
0.8621
1.1
0.8643
0.8665
0.8686
0.8708
0.8729
0.8749
0.8770
0.8790
0.8810
0.8830
1.2
0.8849
0.8869
0.8888
0.8907
0.8925
0.8944
0.8962
0.8980
0.8997
0.9015
1.3
0.9032
0.9049
0.9066
0.9082
0.9099
0.9115
0.9131
0.9147
0.9162
0.9177
1.4
0.9192
0.9207
0.9222
0.9236
0.9251
0.9265
0.9279
0.9292
0.9306
0.9319
1.5
0.9332
0.9345
0.9357
0.9370
0.9382
0.9394
0.9406
0.9418
0.9429
0.9441
1.6
0.9452
0.9463
0.9474
0.9484
0.9495
0.9505
0.9515
0.9525
0.9535
0.9545
1.7
0.9554
0.9564
0.9573
0.9582
0.9591
0.9599
0.9608
0.9616
0.9625
0.9633
1.8
0.9641
0.9649
0.9656
0.9664
0.9671
0.9678
0.9686
0.9693
0.9699
0.9706
1.9
0.9713
0.9719
0.9726
0.9732
0.9738
0.9744
0.9750
0.9756
0.9761
0.9767
2.0
0.9772
0.9778
0.9783
0.9788
0.9793
0.9798
0.9803
0.9808
0.9812
0.9817
2.1
0.9821
0.9826
0.9830
0.9834
0.9838
0.9842
0.9846
0.9850
0.9854
0.9857
2.2
0.9861
0.9864
0.9868
0.9871
0.9875
0.9878
0.9881
0.9884
0.9887
0.9890
2.3
0.9893
0.9896
0.9898
0.9901
0.9904
0.9906
0.9909
0.9911
0.9913
0.9916
2.4
0.9918
0.9920
0.9922
0.9925
0.9927
0.9929
0.9931
0.9932
0.9934
0.9936
2.5
0.9938
0.9940
0.9941
0.9943
0.9945
0.9946
0.9948
0.9949
0.9951
0.9952
2.6
0.9953
0.9955
0.9956
0.9957
0.9959
0.9960
0.9961
0.9962
0.9963
0.9964
2.7
0.9965
0.9966
0.9967
0.9968
0.9969
0.9970
0.9971
0.9972
0.9973
0.9974
2.8
0.9974
0.9975
0.9976
0.9977
0.9977
0.9978
0.9979
0.9979
0.9980
0.9981
2.9
0.9981
0.9982
0.9982
0.9983
0.9984
0.9984
0.9985
0.9985
0.9986
0.9986
3.0
0.9986
0.9987
0.9987
0.9988
0.9988
0.9989
0.9989
0.9989
0.9990
0.9990
3.1
0.9990
0.9991
0.9991
0.9991
0.9992
0.9992
0.9992
0.9992
0.9993
0.9993
3.2
0.9993
0.9993
0.9994
0.9994
0.9994
0.9994
0.9994
0.9995
0.9995
0.9995
3.3
0.9995
0.9995
0.9995
0.9996
0.9996
0.9996
0.9996
0.9996
0.9996
0.9997
3.4
0.9997
0.9997
0.9997
0.9997
0.9997
0.9997
0.9997
0.9997
0.9997
0.9998
3.5
0.9998
0.9998
0.9998
0.9998
0.9998
0.9998
0.9998
0.9998
0.9998
0.9998
3.6
0.9998
0.9998
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
3.7
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
3.8
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
0.9999
3.9
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
经过与《概率论与数理统计(第一版,茆诗松主编)》一书中表格的比对,发现上表的近似值是完全正确的。
2) 编写所求的matlab函数
由于自适应求积函数quad()会自动调节节点以减小误差,因而无法通过公式计算输出误差,因此作者采用了梯形求积公式trap(x,y)来进行计算。又考虑到正态分布关于y轴对称,因此可通过计算x点与零点之间的定积分来转化为所求的广义积分,于是无穷限一端可能引入的端误差被消除。
在课本中给出了梯形求积公式的误差上界公式:I-Tn≤h212M2b-a,其中M2=maxf''x,x∈(a,b),但对于数值积分,仍然存在一个问题,即步长与端点之间“缝隙”的误差:例如,如果使用了0.001的步长,但若求x=1.0009时的广义积分,则trapz()求出的数值积分便未包括区间1.000,1.0009(如下图所示),这会引入另一种误差。
因此,作者认为,该情况下会有三种误差,一是机器精度误差,二是梯形面积带来的误差,三是区间“缝隙”引入的误差(如上图)。从直观上考虑,在步长为0.001时,若x小数位数大于三位,则第三种误差会大一些,我通过实验事实证明了上述猜测(函数见四.10,检验程序见四.11):
x
y1(积分值)
y2(二、三类误差)
y3(第三类误差)
1
0.841344725904315
0.000000033245190
0
1.1
0.864333919083834
0.000000036569709
0
1.22
0.888767543281944
0.000000040559132
0
1.333
0.908734079872674
0.000000044315838
0
1.4444
0.925630495405294
0.000056290322632
0.000056242303280
1.55555
0.940026949905509
0.000065518282553
0.000065466567998
在上表中,x是积分右限,y1是数值积分值,y2是第二、三类误差的和,y3是第三类误差。结果证明上述直观的想法是正确的,当小数位数小于等于三位时,由于无“区间缝隙”,仅有第二类误差,数量级在10^-8左右;而当小数位数大于三位时,在尾部端点产生缝隙,该区间未算入数值积分中,因而产生了第三类误差,数量级较大,在10^-5左右,此时总误差仅取决于第三类误差。而因为matlab都是双精度计算,第一类误差在10^-16左右,远小于后两种误差,不予考虑。
于是,在使用trapz函数的基础上,为了消除第三类误差,我又修改了函数,使输出的积分结果为上表所示的(y1+y3),通过单向校正消除误差;同时考虑到当x≥8时的积分值已经十分趋近0和1,为避免由于x很大造成的大数计算,节省计算时间,我又增添了两个elseif语句,将这种情况下的积分值直接输出为0和1,并将x=±8时的误差当做此时的误差上界。经过以上两步修改,即得到最终题目所要求的函数(程序见四.12),并与matlab中的预设函数normcdf做了对比(程序见四.13),试验结果如下表所示:
x
y1(自设函数)
y2(误差上限)
y3(normcdf)
1
0.841344725904315
0.000000033245190
0.841344746068543
1.1
0.864333919083834
0.000000036569709
0.864333939053617
1.22
0.888767543281944
0.000000040559132
0.888767562552165
1.333
0.908734079872674
0.000000044315838
0.908734098099558
1.4444
0.925686737708574
0.000000048019352
0.925686754633021
1.55555
0.940092416473507
0.000000051714555
0.940092431904425
1.666666
0.952209567582962
0.000000055408628
0.952209581409056
0
0.500000000000000
0
0.500000000000000
-19
0
0.000000332451900
0.000000000000000
3
0.998650100860408
0.000000099735570
0.998650101968370
8
0.999999999999999
0.000000265961520
0.999999999999999
将上表再做整理,以验证误差上限的确小于y3与y1的差值:
y3-y1(实际误差)
y2(输出的误差上限)
0.0000000202
0.0000000332
0.0000000200
0.0000000366
0.0000000193
0.0000000406
0.0000000182
0.0000000443
0.0000000169
0.0000000480
0.0000000154
0.0000000517
0.0000000138
0.0000000554
0.0000000000
0.0000000000
0.0000000000
0.0000003325
0.0000000011
0.0000000997
0.0000000000
0.0000002660
由上表可以看出,自设函数输出的积分值与预设函数normcdf的值十分接近,而且所给的误差上限也大于实际的误差,因此,编制的函数是符合题目要求的。
三、 实验总结
本次“插值与数值积分”实验是第一次数学实验,在实验中遇到了两个比较大的问题:第一个是matlab的使用,一开始对于矩阵、基本运算和常用函数都不太熟悉,所以本次实验的前期工作耗费了较长的时间;第二个是在第二题中的误差分析,这一块需要仔细地分析,否则很容易漏掉第三类误差的校正,而且误差公式也很复杂,涉及到求导运算,许多问题都是边发现、边思考、边查找、边解决的。
当然,这次实验也让我熟悉了matlab的操作,初步掌握了运用数学软件进行数值分析、解决实际问题的方法,更领会了矩阵在matlab中的重要作用。今后应当在进行数学实验的过程中,发挥更多的主观能动性,积极探索更多的、潜在的问题,把问题挖得更深更透,以求更好地提高自己的科研素养与能力。
四、 程序清单
1. Lagrange插值法函数:
function y=lagr(x0,y0,x)
n=length(x0); m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end
2. 分段线性插值法函数:
function y=cutline(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
for j=1:(n-1)
if (x(
展开阅读全文