华科计算方法上机作业代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算方法》上机实验试题
1. (25分)计算积分
dx x x I n
n ⎰
+=1
5
, n=0,1,2,…,20 若用下列两种算法 (A) n
I I n n 151+-=- (B) ⎪⎭
⎫ ⎝⎛-=
-n n I n I 1511 试依据积分I n 的性质及数值结果说明何种算法更合理。
i0=1.8232000e-001; disp(i0); for n=1:30
i1=double(-5.0*i0+1.0/n); disp(n); disp(i1); i0=i1; end
0.1823
1
0.0884
2
0.0580
3
0.0433
4
0.0333
5
0.0333
6
2.4261e-13 7
0.1429
8
-0.5893
9
3.0575
10
-15.1877
11
76.0294
12
-380.0637
13
1.9004e+03 14
-9.5019e+03 15
4.7510e+04 16
-2.3755e+05 17
1.1877e+06 18
-5.9387e+06 19
2.9693e+07 20
-1.4847e+08 21
7.4234e+08 22
-3.7117e+09 23
1.8558e+10 24
-9.2792e+10 25
4.6396e+11 26
-2.3198e+12 27
1.1599e+13 28
-5.7995e+13 29
2.8998e+14 30
-1.4499e+15
i30=5.9140e-003;
disp(i30);
for n=30:-1:1
i1=double(-0.2*i30+1.0/(5*n)); disp(n);
disp(i1);
i30=i1;
end
0.0059
30
0.0055
29
0.0058
28
0.0060
27
0.0062
26
0.0065
25
0.0067
24
0.0070
23
0.0073
22
21 0.0080 20 0.0084 19 0.0088 18 0.0093 17 0.0099 16 0.0105 15 0.0112 14 0.0120 13 0.0130 12 0.0141 11
10
0.0169
9
0.0188
8
0.0212
7
0.0243
6
0.0285
5
0.0343
4
0.0431
3
0.0580
2
0.0884
1
0.1823
2.(25分)求解方程f(x)=0有如下牛顿迭代公式
)
()
(111---'-
=n n n n x f x f x x , n ≥1,x 0给定
(1)
编制上述算法的通用程序,并以ε<--1n n x x (ε为预定精度)作为终止迭代的准则。
(2)
利用上述算法求解方程
0cos :)(=-=x x x f
这里给定x 0=π/4,且预定精度ε=10-10。
fun=inline('cos(x)-x')
fun =
Inline function: fun(x) = cos(x)-x
>> dfun=inline('-sin(x)-1')
dfun =
Inline function: dfun(x) = -sin(x)-1
>> x=agui_newton(fun,dfun,pi/4,1e-10) 0.7395
0.7391
0.7391
0.7391 x =
0.7391
3. (25分) 已知)3()(x x e x e x f -=,
(1)
利用插值节点x 0=1.00,x 1=1.02,x 2=1.04,x 3=1.06,构造三次Lagrange 插值公式,由此计算f(1.03)的近似值,并给出其实际误差; function f = Language(x,y,x0) syms t;
if(length(x) == length(y)) n = length(x); else
disp('x 和y 的维数不相等!'); return;
end %检错
f = 0.0; for(i = 1:n) l = y(i); for(j = 1:i-1)
l = l*(t-x(j))/(x(i)-x(j)); end;
for(j = i+1:n)
l = l*(t-x(j))/(x(i)-x(j)); %计算拉格朗日基函数 end;
f = f + l; %计算拉格朗日插值函数 simplify(f); %化简
if(i==n)
if(nargin == 3)
f = subs(f,'t',x0); %计算插值点的函数值 else
f = collect(f); %将插值多项式展开
f = vpa(f,6); %将插值多项式的系数化成6位精度的小数 end end end
function f=fun(x) f=exp(x)*(3*x-exp(x)); end
x0=[1.00 1.02 1.04 1.06] x0 =