MATLAB数值分析实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016-2017第一学期数值分析
上机实验报告
姓名:xxx
学号:*****…….
学院:土木工程学院
导师:………..
联系电话:…………..
指导老师:………..
第一题
选做的是第(1)小问。
1.1
编出不动点迭代法求根的程序;把 写成至少四种 的形式,取初值 ,进行不动点迭代求根,并比较收敛性及收敛速度。
1.2
1.3
1第一种迭代公式: ;matlab计算结果如下:
(以下为命令行窗口的内容)
2第二种迭代公式: ;matlab计算结果如下:
(以下为命令窗口内容)
3第三种迭代公式: ;matlab计算结果如下:
(以下为命令窗口内容)
4第四种迭代公式: ;matlab计算结果如下:
(以下为命令窗口内容)
上述4种迭代公式,1、4两种由于在x真实值附近|g`(x)|>1,不满足迭代局部收敛条件,所以迭代序列不收敛。对于2、3两种式子,由于在x真实值附近|g`(x)|<=L<1,满足迭代局部收敛条件,所以迭代序列收敛。对于2、3两迭代公式,由于L3<L2,所以第3个迭代公式比第2个迭代公式收敛更快。
3.3
matlab画出的图像如下:
从上图可以清晰的看到,三次样条插值曲线与原始曲线最为接近,作为f(x)的插值函数比较理想。而三次多项式拟合的话,与原始结果偏差很大。
第四题
选择的是第一小问
4
编写Gauss-Legendre求积公式程序,并计算下列积分
(1)
(2)
(3)
(4)
4
4
(a)
(以下为命令行窗口的内容)
第二题
选做的是第(2)小问
2.1
编写有效程序解线性方程组 。
2.
2.
(命令行窗口显示内容)数据太多截取一部分
第三题
3.1
对函数 在区间[-1,1]上取 ,
(a)对函数进行多项式插值和三次样条插值,并画出插值函数及 的函数;
(b)对函数求其三次拟合曲线并画出拟合曲线的图像,与(a)中结果进行比较。
3.2
(以下为命令行窗口的内容)
请输入步长h:0.025
从上面的结果可以看到,由于步长h取值减小,误差变得很小,可以看出其误差限是呈线性增加的。
(以下为命令行窗口的内容)
请输入步长h:0.01
从上面的结果可以看到,当步长取0.01时,误差减小了10多倍。此外,我也尝试了采用更小的步长进行计算,计算所得的相对误差随步长减小也越来越小,限于篇幅,也就不再一一罗列计算结果。所以减小步长,可以很好地提高该算法的精确度,若我们把计算结果看成关于步长h的序列,该序列的收敛速度还比较快。而在这一点上,我们也可以通过理论证明,当步长h趋于零时,计算结果就趋于真实结果,即收敛性。
(b)
(以下为命令行窗口的内容)
(c)
(以下为命令行百度文库口的内容)
(d)
(以下为命令行窗口的内容)
第五题
5.1
给定初值问题
用经典的四阶Lunge-Kutta方法求解,步长分别取为 ,计算并打印 各点的值,并与准确解 作比较。
5.2
5.3
(以下为命令行窗口的内容)
请输入步长h:0.1
从上面的结果可以看到,当步长为0.1时,求解是很不准确的,可能是步长过大导致的,所以应适当减小步长,再尝试进行计算。下面的运算取步长为0.025,再进行试算。
第六题
6.1
编程计算 ,其中 ,给出并观察计算结果,若有问题,分析之。要求逐项相加编程求解,不允许使用matlab中的现有函数。
6.2
6.3
根据我们所学的数学知识,这个关于n的求和序列实际是不收敛的,但是由于计算机计算时的大数吃掉了小数后,数值无法累加。所以显示为上面的收敛结果。
6.4
上面的算法发生了大数吃小数的现象,为了避免大数吃小数,可以第一步设n个数相加,然后把这些数分为两个一组,每组两个数相加,然后再分为两个一组,循环下去。这样应该能避免大数吃小数。
上机实验报告
姓名:xxx
学号:*****…….
学院:土木工程学院
导师:………..
联系电话:…………..
指导老师:………..
第一题
选做的是第(1)小问。
1.1
编出不动点迭代法求根的程序;把 写成至少四种 的形式,取初值 ,进行不动点迭代求根,并比较收敛性及收敛速度。
1.2
1.3
1第一种迭代公式: ;matlab计算结果如下:
(以下为命令行窗口的内容)
2第二种迭代公式: ;matlab计算结果如下:
(以下为命令窗口内容)
3第三种迭代公式: ;matlab计算结果如下:
(以下为命令窗口内容)
4第四种迭代公式: ;matlab计算结果如下:
(以下为命令窗口内容)
上述4种迭代公式,1、4两种由于在x真实值附近|g`(x)|>1,不满足迭代局部收敛条件,所以迭代序列不收敛。对于2、3两种式子,由于在x真实值附近|g`(x)|<=L<1,满足迭代局部收敛条件,所以迭代序列收敛。对于2、3两迭代公式,由于L3<L2,所以第3个迭代公式比第2个迭代公式收敛更快。
3.3
matlab画出的图像如下:
从上图可以清晰的看到,三次样条插值曲线与原始曲线最为接近,作为f(x)的插值函数比较理想。而三次多项式拟合的话,与原始结果偏差很大。
第四题
选择的是第一小问
4
编写Gauss-Legendre求积公式程序,并计算下列积分
(1)
(2)
(3)
(4)
4
4
(a)
(以下为命令行窗口的内容)
第二题
选做的是第(2)小问
2.1
编写有效程序解线性方程组 。
2.
2.
(命令行窗口显示内容)数据太多截取一部分
第三题
3.1
对函数 在区间[-1,1]上取 ,
(a)对函数进行多项式插值和三次样条插值,并画出插值函数及 的函数;
(b)对函数求其三次拟合曲线并画出拟合曲线的图像,与(a)中结果进行比较。
3.2
(以下为命令行窗口的内容)
请输入步长h:0.025
从上面的结果可以看到,由于步长h取值减小,误差变得很小,可以看出其误差限是呈线性增加的。
(以下为命令行窗口的内容)
请输入步长h:0.01
从上面的结果可以看到,当步长取0.01时,误差减小了10多倍。此外,我也尝试了采用更小的步长进行计算,计算所得的相对误差随步长减小也越来越小,限于篇幅,也就不再一一罗列计算结果。所以减小步长,可以很好地提高该算法的精确度,若我们把计算结果看成关于步长h的序列,该序列的收敛速度还比较快。而在这一点上,我们也可以通过理论证明,当步长h趋于零时,计算结果就趋于真实结果,即收敛性。
(b)
(以下为命令行窗口的内容)
(c)
(以下为命令行百度文库口的内容)
(d)
(以下为命令行窗口的内容)
第五题
5.1
给定初值问题
用经典的四阶Lunge-Kutta方法求解,步长分别取为 ,计算并打印 各点的值,并与准确解 作比较。
5.2
5.3
(以下为命令行窗口的内容)
请输入步长h:0.1
从上面的结果可以看到,当步长为0.1时,求解是很不准确的,可能是步长过大导致的,所以应适当减小步长,再尝试进行计算。下面的运算取步长为0.025,再进行试算。
第六题
6.1
编程计算 ,其中 ,给出并观察计算结果,若有问题,分析之。要求逐项相加编程求解,不允许使用matlab中的现有函数。
6.2
6.3
根据我们所学的数学知识,这个关于n的求和序列实际是不收敛的,但是由于计算机计算时的大数吃掉了小数后,数值无法累加。所以显示为上面的收敛结果。
6.4
上面的算法发生了大数吃小数的现象,为了避免大数吃小数,可以第一步设n个数相加,然后把这些数分为两个一组,每组两个数相加,然后再分为两个一组,循环下去。这样应该能避免大数吃小数。