计算方法课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数理学院
2014
课程
实验要求
1.应用自己熟悉的算法语言编写程序,使之尽可能具有通用性。2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序。(注:在练习本上写,不上交)
3.完成计算后写出实验报告,内容包括:算法步骤叙述,变量说明,程序清单,输出计算结果,结构分析和小结等。(注:具体题目
具体分析,并不是所有的题目的实验报告都包含上述内容!)4.独立完成,如有雷同,一律判为零分!
5.上机期间不允许做其他任何与课程设计无关的事情,否则被发现一次扣10分,被发现三次判为不及格!非特殊情况,不能请
假。旷课3个半天及以上者,直接判为不及格。
目录
一、基本技能训练 (4)
1、误差分析 (4)
2、求解非线性方程 (6)
3、插值 (12)
4、数值积分 (12)
二、提高技能训练 (16)
1、 (16)
2、 (18)
三、本课程设计的心得体会(500字左右) (21)
一、基本技能训练
1、误差分析
实验1.3 求一元二次方程的根
实验目的:
研究误差传播的原因与解决对策。
问题提出:求解一元二次方程2
0ax bx c ++=
实验内容:
一元二次方程的求根公式为
x ;
1x 再
实验步骤:
方程(1):
根据求根公式,写出程序:
format long
a=1;b=3;c=-2;
x1=((-1)*b+sqrt(b^2-4*a*c))/2*a
x2=((-1)*b-sqrt(b^2-4*a*c))/2*a
运行结果:
x1 = 0.561552812808830
x2 = -3.561552812808830
然后
由符号解求的该方程的真值程序为:
syms x;
y=x^2+3*x-2;
s=solve(y,x);
vpa(s)
运行结果为:
X1= 0.56155281280883027491070492798704
X2= -3.561552812808830274910704927987
方程(2):
format long
a=1;b=-10^10;c=1;
x1=((-1)*b+sqrt(b^2-4*a*c))/2*a
x2=((-1)*b-sqrt(b^2-4*a*c))/2*a
运行结果为:
x1 = 1.000000000000000e+010
x2 = 0
然后
由符号解求的该方程的真值程序为:
syms x;
y=x^2-10^10*x+1;
s=solve(y,x);
vpa(s)
运行结果:
X1= 10000000000.0
X2= 0.000000000116415321827
由此可知,对于方程(1),使用求根公式求得的结果等于精确值,故求根公式法可靠。而对于方程(2),计算值与真值相差很大,故算法不可靠。
改进算法,对于方程(2):先用迭代法求x1,再用11a
,求x2
x x
c
程序为:
syms k
a=[ ];
for i=1:100
a(1)=4;
a(i+1)=(10^10*a(i)-1)^(1/2);
end
x1=a(100)
x2=1/(x1)
运行结果为:
x1 = 1.000000000000000e+010
x2 = 1.000000000000000e-010
实验结论:
对于方程(1)
都是精确的。
对于方程(2),求根公式的算法是不精确的。
原因:方程(2)用求根公式计算时,b -大数吃掉小数的误差,也出现了两个相近的数相减的误差,所以出现x2=0这样大的误差。改进的结果会比较准确。
2、求解非线性方程
实验2.1 Gauss 消去法的数值稳定性实验
实验目的:观察和理解高斯消元过程中出现小主元即()k kk a 很小时,引起方程组
解的数值不稳定性.
实验内容:求解线性方程组(1,2)i i A x b i == 其中
(1)15
10.31059.14315.291 6.1301211.29521211A -⎛⎫⨯ ⎪-- ⎪= ⎪ ⎪ ⎪⎝⎭,159.1746.7812b ⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭
(2)
210701 3 2.09999999999962 5151 0102
A
-
⎛⎫
⎪
- ⎪
=
⎪
--
⎪
⎝⎭
1
8
5.9000000000001
5
1
b
⎛⎫
⎪
⎪
=
⎪
⎪
⎝⎭
实验要求:
(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的
(2)用高斯列主元消去法求得L和U及解向量
(3)用不选主元的高斯消去法求得L和U及解向量
(4)观察小主元并分析对计算结果的影响
实验步骤:
(1)计算矩阵的条件数程序:
矩阵A1:
A1=[0.3*10^(-15) 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1];
cond(A1,1)
cond(A1,2)
cond(A1,inf)
运行结果:
ans = 136.294470872045e+000
ans = 68.4295577125341e+000
ans = 84.3114602051800e+000
由矩阵条件数判断出矩阵A1是病态矩阵。
矩阵A2:
A2=[10 -7 0 1;-3 2.0999******* 6 2;5 -1 5 -1;0 1 0 2];
cond(A1,1)
cond(A1,2)
cond(A1,inf)
运行结果:
ans = 19.2831683168042e+000
ans = 8.99393809015365e+000
ans = 18.3564356435280e+000
由矩阵条件数判断出矩阵A2是病态矩阵。
(2)高斯列主元消去法程序:
方程组(1):
A1=[0.3*10^(-15) 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1];