《应用计算方法教程》matlab作业一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业一1-1实验目的:寻求高效算法
实验内容:设
1
x1
n
n n
⎛⎫
=+
⎪
⎝⎭
,给出两个算法,求
1023
x,写出MATLAB程序,并统计计算法
计算量。若要计算量不超过20flop,应如何设计算法?算法一
算法:
令
1
1
t
n
=+,依次计算2481024
,,,,
t t t t
⋅⋅⋅,最后用1024/
t t。
界面:
计算量:12flop
算法二
算法:
直接计算t的1023次方。
程序:
界面:
计算量:1024flop
若要计算量不超过20flop,采用第一种算法较合适。
作业二3-5 实验目的:应用不同迭代法求解代数方程
实验内容:分别采用二分法、Newton法、Newton下山法、割线法求解方程
432
6005502002010
x x x x
-+--=
在[0.1,1]中的根;精确到4
10-。
二分法
算法:
432()600550200201f x x x x x =-+--为连续函数,且由题意可知[0.1,1]为含根区间,
令a=0.1,b=1,取p=(a+b)/2。若f(p)=0则p 是方程f(x)=0的解;若f(a)f(p)<0则根在(a,p)内,取a 1=a,b 1=p ;否则根在区间(p,b)内,取a 1=p,b 1=b 。重复上述过程直到达到精度要求为止。 程序:
Newton 法 算法:
建立牛顿迭代格式
432132
()600550200201
()600*4*550*3*40020
n n n n n n n n n n n n f p p p p p p p p f p p p p +-+-
-=-=-'-+- 直到1||n n p p +
-
小于精度要求时迭代结束,将1n p +作为结果输出。
Newton 下山法 算法:
建立迭代格式
432132
()600550200201
()600*4*550*3*40020
n n n n n n n n n n n n f p p p p p p p p f p p p p λλ+-+--=-=-'-+- 其中λ是下山因子,在每步迭代中依次取1,1/2,1/4,…直到满足精度要求。
割线法 算法:
建立迭代格式
1
11()()()
n n n n n n n p p p p f p f p f p -+--=-
-
直到1||n n p p +-小于精度要求时迭代结束,将1n p +作为结果输出。
界面:
作业三 4-2 实验目的:熟悉LU 分解法求解方程。
实验内容:用MATLAB 编程做Doolittle 分解,求解方程组。
12345123451234512345
123451.3 2.4 3.4 4.22.4 1.4 3.7 6.3
22 3.6 6.8 5.52.543 6.6 3.6
1.5 5.3
2.8 6.2
x x x x x x x x x x x x x x x x x x x x x x x x x --+-=⎧⎪--++=⎪⎪
+-++=⎨⎪-+++=⎪⎪--++=⎩ 算法:
对 1.311 2.4 3.42.411 1.4 3.72
12 3.6 6.82.5143 6.61.511 5.3 2.8A ---⎛⎫
⎪
-- ⎪
⎪=- ⎪
- ⎪ ⎪--⎝
⎭
进行Doolittle 分解使得A LU =,则线性方程组
Ax b =的求解问题就转化为对三角形方程组Ly b
Ux y =⎧⎨=⎩
的求解。Doolittle 分解过程为: 1,1,2,,j ij u a j n ==⋅⋅⋅
1111/,2,3,,i i l a u i n ==⋅⋅⋅
1
1
,i ij ij ik kj k u a l u i j -==-≤∑
1
1
()/,j ij ij ik kj jj k l a l u u i j -==->∑
然后依次求解Ly b =和Ux y =:
11
1
1,2,3,,i i
i ij j j y b y b l y i n -==⎧⎪⎨
=-=⋅⋅⋅⎪⎩
∑
1/()/,1,2,,1n n nn
n
i
i ij j ii j i x y u x y u x u i n n =+=⎧⎪⎨
=-=--⋅⋅⋅⎪⎩
∑
界面:
作业四 编写高斯顺序消元法求解下面方程组的程序及计算结果。
12312312310 6.2+1028.52+5 3.2
x x x x x x x x x --=⎧⎪
--=⎨⎪--=⎩
算法:
对1,2,,1k n =⋅⋅⋅-
(k 1)(k 1)
(k)
(k 1)(k 1)
(k)(k 1)
(k 1)/,,1,2,,ik ik kk ij ij ik kj i i
ik k m a a a a m a i j k k n b b m b ------⎧=-⎪=+=++⋅⋅⋅⎨⎪=+⎩ 公式中(0)(0)
,,,1,2,,ij ij i
i a a b b i j n ===⋅⋅⋅。
利用回代法求解得方程组的解为
(1)(1)
(1)(1)(1)1/()/,1,2,,1n n n n nn n k k k k
k kj j kk j k x b a x b a x a k n n -----=+⎧=⎪⎨=-=--⋅⋅⋅⎪⎩
∑
界面: