数值分析上机题答案
【篇一:数值分析上机试题对应参考答案】
么是近似值x* 有效数字?
若近似值x*的误差限是某一位的半个单位,该位到x*的第一位非零数字共有n位,就说x*有n位有效数字。它可表示为
2、数值计算应该避免采用不稳定的算法,防止有效数字的损失. 因此,在进行 数值运算算法设计过程中主要注意什么?
(1)简化计算过程,减少运算次数;
(2)避免两个相近的数相减;
(3)避免除数的绝对值远小于被除数的绝对值;
(4)防止大数“吃掉”小数的现象;
(5)使用数值稳定的算法,设法控制误差的传播。
3、写出“n 阶阵a 具有n 个不相等的特征值”的等价条件(至少写3 个)
(1)|a|不为零
(2)n阶矩阵a的列或行向量组线性无关
(3)矩阵a为满秩矩阵
(4)n阶矩阵a与n阶可逆矩阵b等价
4、迭代法的基本思想是什么?
就是用某种极限过程去逐步逼近线性方程组精确解得方法。其基本思想为:先任取一组近似解初值x0,然后按照某种迭代原则,由x0计算新的近似解x1,以此类推,可计算出x2,x3,…xk,。。。,如果{x}收敛,则取为原方程组的解。
5、病态线性方程组的主要判断方法有哪些?
(1)系数矩阵的某两行(列)几乎近似相关
(2)系数矩阵的行列式的值很小
(3)用主元消去法解线性方程组时出现小主元
(4)近似解x*已使残差向量r=b-ax*的范数很小,但该近似解仍不符合问题要求。
6、lagrange 插值的前提条件是什么?并写出二次lagrange 插值的基函数。
1,j?i?(x)? 前提条件是:l i ,j?0,1,2?,n.?ij0,j?i?
二次lagrange 插值的基函数: (x?x)(x?x)12??lx0(xx)(xx) 0?10?2
(x?x)(x?x)02?? lx1(xx)(xx)1?01?2
(x?x)(x?x)01?? lx2(x?x)(x?x)2021
7、什么是数值积分的代数精度?
如果某一个求积公式对于次数不超过m的多项式均能准确地成立,但对于m+1次多项式就不准确成立,则称该求积公式具有m次代数精度(或代数精确度)。
一般来说列主元法能保证算法的稳定,所谓算法的稳定是指在运算过程中计算误差(对消去法这种直接法来说主要指由于计算机字长有限带来的舍入误差)能得到控制;全主元是较列主元更稳定的算法,但是它的计算量要比列主元算法大得多,列主元算法每做一次消元仅与同列的元素做比较,比较的次数与线性方程组的阶n是同阶的量,而全主元每做一次要与系数矩阵所有元素进行比较,计算量是与n2同阶的量。
9、求矩阵特征值的 qr 方法的算法步骤是什么?
对于给定的n阶实对称矩阵a与迭代次数m;
(1)令a1=a,对于k=1,2,?,m;
(2)迭代计算下一个矩阵:ak=qkrk(对ak作qr分解),
(3)ak=rq(交换乘法次序),令k=k+1,ak+1=qktakqk
(4)返回到2,直到k=m,输出a的主对角元素。
10、什么是高斯型求积公式与高斯点?
一般可设求积公式=in(?),为具有 n个节点的插值求积公式,且具有2n+1次
最高代数精度,则称其求积点x0,x1,…,xn称为高斯点具有,相应的公式称为高斯
型求积公式。
11、什么是插值计算的龙格现象?
增加插值节点,提高插值多项式的次数,可以使插值函数在更多的点与所逼近的函数取相同的值,但会使插值函数在两端发生激烈的振荡,这就是插值计算的龙格现象。
12、龙格—库塔方法的基本思想是什么?
基本思想是,在每一步内多预报几个点的斜率值,将其加权平均作为平均斜率,从而构造出更高的计算格式。具体做法是,用函数f(x,y)在若干点上的函数值的线性组合来构造近似公式,构造时让近似公式在(xi,yi)处的泰勒展开式
与解y(x)在xi处的泰勒展开式的前面几项重合,从而使近似公式达到所需要的
阶数,这样既避免求偏导数,又提高了计算方法的精度。
二、计算题
1、随机生成4*4的矩阵,做列主元的三角分解,并验证等式pa=lu 。 解: a=rand(4) %随机生成的四位矩阵
a =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419 [l,u,p]=lu(a)
l =
1.0000000
printf直接输出数字 0.9917 1.000000
0.8920-0.3250 1.00000 0.1390-0.4552 0.2567 1.0000
u =
0.9134 0.5469 0.9706 0.1419
0-0.4448 0.0024 0.3447
00 0.0925 0.9426
000 0.6955
p =
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 0
p*a %验证pa=lu
ans =
0.9134 0.5469 0.9706 0.1419
0.9058 0.0975 0.9649 0.4854
0.8147 0.6324 0.9575 0.9572
0.1270 0.2785 0.1576 0.8003
l*u
ans =
0.9134 0.5469 0.9706 0.1419
0.9058 0.0975 0.9649 0.4854
0.8147 0.6324 0.9575 0.9572
0.1270 0.2785 0.1576 0.8003
2、用lagrange 插值和newton 插值拟合[0, 2*pi]上的sin 函数,并画图比较。
解:
建立拉格朗日函插值函数
function [yt,l] = laginterp1(x,y,xt)
%拉格朗日差值
%x,y:差值条件
%xt:用拉格朗日插值函数要计算的自变量,可以是多个
%yt:用拉格朗日插值函数计算出xt对应的函数值数组
%l:拉格朗日插值多项式表达式
syms t;
n=length(x);
ny=length(y);
if n~=ny
error(差值节点x与函数值y不一致);
end
l = 0.0;
for k = 1:n
lk =1;
for j = 1:n
if j~=k
lk = lk*(t-x(j))/(x(k)-x(j));
end
end;
l = l + y(k)*lk;
end
simplify(l); %简化拉格朗日插值多项式表达式 l=collect(l); % 将拉格朗日插值多项式展开 yt = subs(l,t,xt); %计算插值点处的函数值
建立牛顿函数:
function [yt,n] = newtinterp(x,y,xt)
%已知数据点的牛顿插值
%x,y:差值条件
%xt:要计算的插值点,可以是多个
%yt:用牛顿插值函数算出xt对应的函数值数组
%l:牛顿插值多项式表达式
syms t;
n=length(x);
ny=length(y);
if n~=ny
error(差值节点x与函数值y不一致);
end
a=zeros(1,n);
n = y(1);
w = 1;
for k=1:n-1
yy=zeros(1,n); % 记录差商 for j=k+1:n
yy(j) = (y(j)-y(k))/(x(j)-x(k)); end
a(k) = yy(k+1);
w = w*(t-x(k));
n = n + a(k)*w;
y = yy;
end
yt = subs(n,t,xt);
simplify(n);
n = collect(n); % 将插值多项式展开 n = vpa(n, 6); % 系数转化为6位精度
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论