计算方法上机题目
(完整版)数值计算方法上机实习题答案

(完整版)数值计算⽅法上机实习题答案1.设?+=105dx xx I nn ,(1)由递推公式nI I n n 151+-=-,从0I 的⼏个近似值出发,计算20I ;解:易得:0I =ln6-ln5=0.1823, 程序为:I=0.182; for n=1:20I=(-5)*I+1/n; end I输出结果为:20I = -3.0666e+010 (2)粗糙估计20I ,⽤nI I n n 515111+-=--,计算0I ;因为 0095.056 0079.01020201020≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2120=+=I 程序为:I=0.0087; for n=1:20I=(-1/5)*I+1/(5*n); end I0I = 0.0083(3)分析结果的可靠性及产⽣此现象的原因(重点分析原因)。
⾸先分析两种递推式的误差;设第⼀递推式中开始时的误差为000I I E '-=,递推过程的舍⼊误差不计。
并记nn n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。
因为=20E 20020)5(I E >>-,所此递推式不可靠。
⽽在第⼆种递推式中n n E E E )51(5110-==-=Λ,误差在缩⼩,所以此递推式是可靠的。
出现以上运⾏结果的主要原因是在构造递推式过程中,考虑误差是否得到控制,即算法是否数值稳定。
2.求⽅程0210=-+x e x的近似根,要求41105-+?<-k k x x ,并⽐较计算量。
(1)在[0,1]上⽤⼆分法;程序:a=0;b=1.0;while abs(b-a)>5*1e-4 c=(b+a)/2;if exp(c)+10*c-2>0 b=c; else a=c; end end c结果:c =0.0903(2)取初值00=x ,并⽤迭代1021x k e x -=+;程序:x=0; a=1;while abs(x-a)>5*1e-4 a=x;x=(2-exp(x))/10; end x结果:x =0.0905(3)加速迭代的结果;程序:x=0; a=0;b=1;while abs(b-a)>5*1e-4 a=x;y=exp(x)+10*x-2; z=exp(y)+10*y-2;x=x-(y-x)^2/(z-2*y+x); b=x; end x结果:x =0.0995(4)取初值00=x ,并⽤⽜顿迭代法;程序:x=0; a=0;b=1;while abs(b-a)>5*1e-4 a=x;x=x-(exp(x)+10*x-2)/(exp(x)+10); b=x; end x结果: x =0.0905(5)分析绝对误差。
哈理工计算中心C++上机试题3

B:a
C:5
D:6
答案:C
〖第16题〗『单项选择』(1分)
若变量a,i已正确定义,且i已正确赋值,非法的语句是().
A:a==1
B:++i;
C:a=(int)i;
D:a=int(i);
答案:A
〖第17题〗『单项选择』(1分)
若有说明 int a[3][4];则a数组元素的非法引用是().
void main()
{ int a(30),b(50);
cout<<add(a,b)<<endl;
}
int add(int x,int y){ return x+y; }
答案:
1). 80
〖第20题〗『填 空』(1分)
若有以下定义和语句:
int a[4]={0,1,2,3},*p;
〖第9题〗『填 空』(1分)
已知a=13,b=6, a&&b的十进制数值为【1】.
答案:
1). 1
〖第10题〗『填 空』(1分)
C++语言表达式!(4>=6)&&(3<=7)的值是【1】.
答案:
1). 1
〖第11题〗『填 空』(1分)
A:数组的长度
B:数组的首地址
C:数组每一个元素的地址
D:数组每个元素中的值
答案:B
〖第8题〗『单项选择』(1分)
选择结构中的条件与循环结构中循环成立的条件,
在写法上可以是任一表达式,但其值只能被判断为"真"或"假".
计算方法上机实验报告——椭圆周长

计算方法上机实习题目(四)——龙贝格算法计算椭圆周长一、 题目用龙贝格算法计算椭圆110040022=+y x 的周长,使误差不超过410-。
二、解题方法由题目中椭圆的标准方程 110040022=+y x 知,该椭圆的参数方程为)2,0[ sin 10cos 20π∈⎩⎨⎧==t ty t x 参考微积分中曲线弧长计算公式dt t y t x s ⎰+=βα)()(2'2' 知该椭圆的周长计算公式为 dt t t s ⎰+=π2022cos 100sin 400 故该问题为利用龙贝格算法计算数值积分。
参考教材式(5.42),若以一个二元数组T[i][j]代表式中的)(j i T ,则式(5.42)可化为⎪⎪⎪⎩⎪⎪⎪⎨⎧=⋯=--=--+-+=+-=-+-=-∑-)3,2,1;,2,1,0(144]2)12([221)]()([2][]1[]1[]1[][][21]1[]0[][]0[]0[]0[1m k T T T a b i a f a b T T b f a f a b T m k m k m m k m i l l l l l 其中t t t f 22cos 100sin 400)(+=,a ,b 为区间端点值,π2,0==b a 。
相应的计算程序段为T[0][0]=(b-a)*(f(a)+f(b))/2;k=1;T[0][1]=T[0][0]/2+(b-a)*Sum(1)/pow(2,1);T[1][0]=(4*T[0][1]-T[0][0])/(4-1);k=2;T[0][2]=T[0][1]/2+(b-a)*Sum(2)/pow(2,2);T[1][1]=(4*T[0][2]-T[0][1])/(4-1);T[2][0]=(pow(4,2)*T[1][1]-T[1][0])/(pow(4,2)-1);k=3;T[0][k]=T[0][k-1]/2+(b-a)*Sum(k)/pow(2,k);T[1][k-1]=(4*T[0][k]-T[0][k-1])/(4-1);T[2][k-2]=(pow(4,2)*T[1][k-1]-T[1][k-2])/(pow(4,2)-1);T[3][k-3]=(pow(4,3)*T[2][k-2]-T[2][k-3])/(pow(4,3)-1);for(k=4;fabs(T[3][k-4]-T[3][k-5])>=pow(10,-4);k++){T[0][k]=T[0][k-1]/2+(b-a)*Sum(k)/pow(2,k);T[1][k-1]=(4*T[0][k]-T[0][k-1])/(4-1);T[2][k-2]=(pow(4,2)*T[1][k-1]-T[1][k-2])/(pow(4,2)-1);T[3][k-3]=(pow(4,3)*T[2][k-2]-T[2][k-3])/(pow(4,3)-1);}其中f(x)和Sum(l)为调用的子函数,子函数程序如下:double Sum(int l){i;intdoublesum,a,b;double f(double x);a=0.0;b=2*PI;sum=0;for(i=1;i<=pow(2,l-1);i++)sum=sum+f(a+(2.0*i-1.0)*(b-a)/pow(2,l));sum;return}double f(double x){y;doubley=sqrt(pow(20*sin(x),2)+pow(10*cos(x),2));y;return}因为并不是一开始T[3][j]就同步出现,所以需将k=3之前的各值先单独算出,又因为要10-,所以控制循环结束的条件是fabs(T[3][k-4]-T[3][k-5])>=pow(10,-4),求最后误差不超过4其中fabs(x)为求绝对值的函数,这里需要注意的是,每次判断时已经执行了k++这条指令,所以在判断是应该是T[3][k-4]-T[3][k-5],而不是T[3][k-3]-T[3][k-4],我在最初编写程序时就忽略了这个问题,导致花费很久调试程序。
计算方法大作业1 克服Runge现象

x3
x2
x
1
S1 ( x)
-0.34685
0.2086
0.073964
0.038462
S2 (x)
S (xi 0 ) S x(i 0 )
S
'
(xi
0) S
xi' (
0 )i
S
'
'
x(i
0)S
xi' ' (
0)
1 ,n2, . . . , 1
(1)
这里共有了 3n-3 个条件,再加上条件(2)中的 n+1 个插值条件,共有 4n-2 个条件,
因此还需要 2 个方程才能确定 S (x) .通常可在区间[a, b]的端点 a x0,b xn 上各加一个边
dn1
1
2
Mn
dn
(6)
2 1
2
2
2
1 M1 d1
M2
d2
n 1
2
n
1
M
n
1
dn1
n
n 2 M n dn
由式(1)内点拼接条件,可得
i M i1 2M i i M i1 d j i 1, 2,..., n 1
(3) (4)
其中
i
hi 1 hi1
, hi
i
hi hi 1
最新Excel-上机题(答案)

上机操作模拟试题:第一套三、Excel 2007上机题建立lx_1.xlsx工作簿文件,并在Sheet1工作表A1开始的单元格区域中录入如下数据。
按照下列要求完成相关的编辑操作:(1)在Sheet1工作表中的A2:A11单元格区域中依次输入员工卡号“01001、01002、01003、---、01010”,构造公式计算“培训部-管理、培训部-技术、培训部-技能”人数,并将计算结果依次放在C13、C14、C15单元格中。
步骤:公式→插入函数—或选择类别(统计)—COUNTIF→确定→函数参数Range: 选定单元格(A2:?)Criteia: 选定要计算的锁定(A2:?)按F4(2)填充Sheet1工作表中“书报费”列的数据。
职称为“高级讲师”的员工书报费200元;职称为“讲师”的员工书报费为150元;职称为“初级讲师”的员工书报费为100元;计算每位员工的“补助合计”(补助合计=课时费+书报费)。
(3)将Sheet1工作表A1:I11单元格区域中的数据,复制到Sheet2工作表A1单元格开始的区域中;在Sheet2工作表中,使用高级筛选,查找年龄在50岁及以下的高级讲师的人员信息(条件区域放置在E13开始的单元格区域),并把筛选结果放在A16开始的单元格区域中。
条件:步骤:数据→高级年龄职称<=50 高级讲师4)将Sheet1工作表A1:I11单元格区域中的数据,复制到Sheet3工作表A2单元格开始的区域中;对Sheet3工作表中的数据,按“部门”的升序、“补助合计”的降序进行排序。
步骤:数据→选定单元格→排序(5)对Sheet3工作表中的数据,按“部门”进行分类汇总,分别计算课时费、书报费及补助合计的汇总值,汇总结果显示在数据的下方。
步骤:数据→选定单元格→分类汇总→分类字段(部门)—选定汇总项—汇总结果显示在数据下方(勾选)(6)在Sheet3工作表之后插入一张新的工作表,并将对Sheet3工作表数据(A2:I16)复制至对Sheet4工作表A2开始的单元格区域,将Sheet4工作表中的数据设置为华文楷体,16磅,依次合并A8:F8、A11:F11、A15:F15、A16:F16,合并后的单元格数据居中对齐;将工作表的行与列调整到最适合的行高与列宽;并按样张样式为表格设置框线及底纹效果。
西安交大计算方法上机报告

从而得到计算的公式:
j 1, 2,..., n 1 j 1 j l i1 i 2,3,..., n i1 11 i 1 lik ukj j i , i 1,..., n, i 2,3,.., n ij ij k 1 i 1 1 l ( lkt ti ) k i 1,..., n, i 2,3,.., n ki ki t 1 ii
计算方法 上机实习题目报告
班级:材料 s3076 班 姓名:丁明帅 学号:3113305029
1:计算 S
100000
k 1
1 ,要求误差小于 106 ,给出实现算法。 k2
【实现思路】
设当 k 值为 i 时 S-Si<10-6,则只需要
S Si
100000 1
k i
1
2
1 l32 ln 2 1 ln 3 1
4 / 46
12 22
1n 2 n
nn
因此有
1 j 2 j 0 jj 0 0
ij li1
li 2
li ,i -1
根据定义知道 L 矩阵的斜对角线上的值都为 1,且 L 矩阵的第一行与原矩阵 A 的第一行 相同,因此可以根据公式先计算 U 的第一行,然后计算 L 的第一列;以后的第 i 步先计算 U 的第 i 行, 然后计算 L 的第 i 列 (U 的第 n 行不作计算) 。 然后把最后的 U 的第 n 行计算出来。
【算法依据】
列主元高斯消元法的过程可以将方程组系数简化为系数矩阵与 b 矩阵, 从而利用方程组 对系数扩展矩阵进行消元。 在消元的过程中矩阵的行向量之间可以变换, 但列向量不能变化。 在进行压缩矩阵的求解中还需要人为的将因调整行向量所导致的列向量的变化调整回来。 Matlab 对于矩阵的处理非常容易,结合 for 循环语句可以实验本题大规模方程组的求解。
西安交大 计算方法B上机作业
计算方法(B )上机作业一、三次样条拟合某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。
在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。
已探测到一组等分点位置的深度数据(单位:米)如下表所示:(1)(2)估算所需光缆长度的近似值,并作出铺设河底光缆的曲线图; 解:1、算法实现的思想及依据题目(1)为曲线拟合问题多项式插值、分段插值和最小二乘法。
多项式插值,随着插值数据点的数目增多,误差也会随之增大,因此不选用。
最小二乘法适于数据点较多的场合,在此也不适用。
故选用分段插值。
分段插值又分为分段线性插值、分段二次插值、三次样条插值及更高阶的多项式插值。
由本题的物理背景知,光缆正常工作时各点应该是平滑过渡,因此至少选用三次样条插值法。
对于更高阶的多项式插值,由于“龙格现象”而不选用。
题目(2)求光缆长度,即求拟合曲线在0到20的长度,对弧长进行积分即可。
光缆长度的第一型线积分表达式为190k kk l +==∑⎰。
2、算法实现的结构参考教材给出的SPLINEM 算法和TTS 算法,在选定边界条件和选定插值点等距分布后,可以先将数据点的二阶差商求出来并赋值给右端向量d ,再根据TSS 解法求解M 。
光缆长度的第一型线积分表达式为190k kk l +==∑⎰。
3、程序运行结果及分析图1.1三种边界条件下三次样条插值图1.2光缆长度4、MATLAB代码:1)自己编程实现代码clear;clc;I=input('你想使用第几种边界条件?请输入1、2、3之一: ');x=0:20;y=[9.01 8.96 7.96 7.97 8.02 9.05 10.13 11.18 12.26 13.28 13.32 12.61 11.29 10.22 9.15 7.90 7.95 8.86 9.81 10.8 10.93];plot(x,-y,'k.','markersize',15)%y为深度,取负号hold on%% 计算一阶差商y1=ones(1,21);for i=2:1:21y1(i)=(y(i)-y(i-1))/(x(i)-x(i-1));end%% 计算二阶差商y2=ones(1,21);for i=3:1:21y2(i)=(y1(i)-y1(i-1))/(x(i)-x(i-2));end%% 计算三阶差商y3=ones(1,21);for i=4:1:21y3(i)=(y2(i)-y2(i-1))/(x(i)-x(i-3));end%% 选择边界条件(I)if I==1d(1)=0;d(21)=0;a(21)=0;c(1)=0;% 第一个点和最后一个点的二阶差商为0 endif I==2d(1)=6*y1(1);d(21)=-6*y1(21);a(1)=1;c(1)=1;endif I==3d(1)=-12*y3(1);d(21)=-12*y3(21);a(21)=-2;c(1)=-2;%endfor i=2:20d(i)=6*y2(i+1);end%% 构造带状矩阵求解(追赶法)b=2*ones(1,21);a=0.5*ones(1,21);%a(21)=-2;c=0.5*ones(1,21);%c(1)=-2;u(1)=b(1);r(1)=c(1);%% 追yz(1)=d(1);for i=2:21l(i)=a(i)/u(i-1);u(i)=b(i)-l(i)*r(i-1);r(i)=c(i);yz(i)=d(i)-l(i)*yz(i-1);end%% 赶xg(21)=yz(21)/u(21);for i=20:-1:1xg(i)=(yz(i)-r(i)*xg(i+1))/u(i);endM=xg;%%所有点的二阶导数值%% 求函数表达式并积分t=1;h=1;N=1000x1=0:20/(N-1):20;length=0;for i=1:Nfor j=2:20if x1(i)<=x(j)t=j;break;elset=j+1;endendf1=x(t)-x1(i);f2=x1(i)-x(t-1);S(i)=(M(t-1)*f1^3/6/h+M(t)*f2^3/6/h+(y(t-1)-M(t-1)*h^2/6)*f1+(y(t)-M(t)*h^2/6)* f2)/h;Sp(i)=-M(t-1)*f1^2/2/h+M(t)*f2^2/2/h+(y(t)-y(t-1))/h-(M(t)-M(t-1))*h/6;length(i+1)=sqrt(1+Sp(i)^2)*(20/(N-1))+length(i);%第一类线积分endfigure(1);plot(x1,-S,'r-')%深度曲线griddisp(['第',num2str(I),'种边界条件下长度',num2str(length(N+1)),'米'])axis fill;xlabel('测点/米');ylabel('深度/米');title('三次样条曲线拟合');legend('数据点','拟合曲线',3);二、最小二乘近似假定某天的气温变化记录如下表所示,试用数据拟合的方法找出这一天的气温变化的规律;试计算这一天的平均气温,并试估计误差。
全国计算机等级考试一级上机Excel题库
全国计算机等级考试一级上机Excel题库第1题、请在“考试项目”菜单下选择“电子表格软件使用”菜单项,然后按照题目要求打开相应的子菜单,完成下面的内容,具体要求如下:注意:下面出现的所有文件都必须保存在考生文件夹[%USER%]下所有中英文状态的括号、小数位数必须与题面相符合。
,(1)打开工作簿文件table13.xls,将下列已知数据建立一抗洪救灾捐献统计表(存放在A1:D5的区域内),将当前工作表Sheet1更名为“救灾统计表”。
,单位捐款(万元) 实物(件) 折合人民币(万元)第一部门1.95 89 2.45第二部门1.2 87 1.67第三部门0.95 52 1.30总计,(2)计算各项捐献的总计,分别填入“总计”行的各相应列中。
(结果的数字格式为常规样式) ,(3)选“单位”和“折合人民币”两列数据(不包含总计),绘制部门捐款的三维饼图,要求有图例并显示各部门捐款总数的百分比,图表标题为“各部门捐款总数百分比图”。
嵌入在数据表格下方(存放在A8:E18 的区域内)。
,第2题、请在“考试项目”菜单下选择“电子表格软件使用”菜单项,然后按照题目要求打开相应的子菜单,完成下面的内容,具体要求如下:注意:下面出现的所有文件都必须保存在考生文件夹[%USER%]下所有中英文状态的括号、小数位数必须与题面相符合。
,(1)打开工作簿文件table.xls,请将下列两种类型的股票价格随时间变化的数据建成一个数据表存放在(A1:E7的区域内),其数据表保存在sheet1工作表中。
股票种类时间盘高盘低收盘价A 10:30 114.2 113.2 113.5A 12:20 215.2 210.3 212.1A 14:30 116.5 112.2 112.3B 12:20 120.5 119.2 119.5B 14:30 222.0 221.0 221.5B 16:40 125.5 125.0 125.0 ,(2)对建立的数据表选择“盘高”、“盘低”、“收盘价”、“时间”数据建立盘高-盘低-收盘价簇状柱形图图表,图表标题为“股票价格走势图”,并将其嵌入到工作表的A9:F19区域中。
东南大学《数值分析》上机题
数值分析上机题1设2211NN j S j ==-∑,其精确值为1311221N N ⎛⎫-- ⎪+⎝⎭。
(1)编制按从大到小的顺序22211121311N S N =+++---,计算N S 的通用程序。
(2)编制按从小到大的顺序2221111(1)121N S N N =+++----,计算NS 的通用程序。
(3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数。
(编制程序时用单精度) (4)通过本上机题,你明白了什么?程序代码(matlab 编程):clc cleara=single(1./([2:10^7].^2-1)); S1(1)=single(0); S1(2)=1/(2^2-1); for N=3:10^2 S1(N)=a(1); for i=2:N-1S1(N)=S1(N)+a(i); end endS2(1)=single(0); S2(2)=1/(2^2-1); for N=3:10^2 S2(N)=a(N-1);for i=linspace(N-2,1,N-2) S2(N)=S2(N)+a(i); end endS1表示按从大到小的顺序的S N S2表示按从小到大的顺序的S N通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。
从大到小的顺序计算得到的结果的有效位数少。
计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。
数值分析上机题220.(上机题)Newton 迭代法(1)给定初值0x 及容许误差ε,编制Newton 法解方程()0f x =根的通用程序。
(2)给定方程3()/30f x x x =-=,易知其有三个根1x *=,20x *=,3x *=。
重庆理工大学c语言上机考试复习题 (1)
1、根据公式e=1+1/(1!)+1/(2!)+1/(3!)+……。
求e 的近似值,精度要求为10-6。
2、读入10个数,计算它们的和、积、平方和及和的平方。
3、计算并输出1!,2!,3!,4!,……,35!。
4、输入20个数,统计其中正、负和零的个数。
5、利用公式:)12)(12()2(......756653443*12222+-⨯⨯⨯⨯⨯⨯⨯⨯⨯=n n n π计算π的值(取前100项)。
6、利用公式:)12(1)1(......9171513114+⨯-++-+-=n n π计算π的值(省略的项都<10-5)。
7、编程计算0*1+2*3+4*5+……+100*101+101*102之和。
8、编程计算5/6+6/7+7/8+……+99/100+5!+6!+7!之和。
9、编程计算1!-2!+3!-4!+5!-6!之和。
10、编程计算1/(1+2)+2/(2+3)+3/(3+4)+……100/(100+101)之和。
11、编程计算(0+1)/1+(2+3)/3+(3+4)/4+……(99+100)/100之和。
12、求100 ~ 200中能被3或7整除的自然数。
13、统计77到210中偶数的个数。
14、统计7到91中能被3整除的奇数的个数。
15、7到91中有多少能既能被2又能被3整除的数。
16、显示7到100中所有不能被5整除的数,要求每行显示5个数。
17、找出1000之内的所有完数(完数是指:该数的各因子之和正好等于该数本身,例如:6的因子是1,2,3,而6 = 1+2+3,故6是完数)。
18、求2~1000中的所有亲密数对(亲密数对是指:如果a 的因子和等于b ,b 的因子和等于a ,则(a ,b )就是亲密数对)。
19、100元钱买100只鸡,已知公鸡3元1只,母鸡1元1只,小鸡1元3只,编程输出总的方案数以及每种方案中公鸡、母鸡、小鸡的数量。
20、100匹马驮100担货,大马驮3担,中马驮2担,小马驮0.5担,编程求大、中、小马的数量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1.计算方法A 上机作业 (1)上机练习目的 (1)上机练习任务 (1)计算方法A 上机题目 (1)程序设计要求 (1)上机报告要求 (1)2.QR 分解法求解线性方程组 (2)计算原理 (2)程序框图 (7)计算实习 (8)Matlab代码 (8)3.共轭梯度法求解线性方程组 (10)计算原理 (10)程序框图 (11)计算实习 (12)Matlab代码 (12)4.三次样条插值 (14)计算原理 (14)程序框图 (16)计算实习 (17)Matlab代码 (17)5.四阶龙格-库塔法求解常微分方程的初值问题 (21)计算原理 (21)程序框图 (22)计算实习 (23)Matlab代码 (23)1.计算方法A 上机作业上机练习目的❑ 复习和巩固数值计算方法的基本数学模型,全面掌握运用计算机进行数值计算的具体过程及相关问题。
❑ 利用计算机语言独立编写、调试数值计算方法程序,培养学生利用计算机和所学理论知识分析解决实际问题的能力。
上机练习任务•利用计算机语言编写并调试一系列数值方法计算通用程序,并能正确计算给定题目,掌握调试技能。
•掌握文件使用编程技能,如文件的各类操作,数据格式设计、通用程序运行过程中文件输入输出运行方式设计等。
•写出上机练习报告。
计算方法A 上机题目1. QR 分解方法求解线性方程组。
(第二章)2. 共轭梯度法求解线性方程组。
(第三章)3. 三次样条插值(第四章)4. 四阶龙格-库塔法求解常微分方程的初值问题程序设计要求1. 程序要求是通用的,在程序设计时要充分考虑哪些变量应该可变的。
2. 程序要求调试通过。
上机报告要求报告内容包括:● 每种方法的算法原理及程序框图。
● 程序使用说明。
● 算例计算结果。
2. QR 分解法求解线性方程组计算原理当nx R∈是任意给定的非零向量,nv R∈是任意给定的单位向量,则存在初等反射阵2THI u u=-,使得H xvσ=,其中σ为常数,当取单位向量2x v ux vσσ-=-时,由u 确定的矩阵H 必定满足H xvσ=,所以在计算过程中取u 的值为上述值。
设A 是一个()m n mn ⨯≥阶矩阵且它的列向量线性无关,则利用豪斯霍尔德变换可以把A 逐步化为上梯形矩阵,设()11121212221212,,,n nnm m m n a a a a a a A a a a a a a ⎛⎫⎪⎪== ⎪ ⎪⎝⎭具体变换过程如下:设()1,2,,i e in =是m 维单位坐标向量。
第1步 为把矩阵A 的第一列()01a 化为()1,0,,0Tσ,取()()011,1,0,,0Tmx a v e R===∈ (或取1ve =-),根据上式可得,取()()0111110121112a e u a e σωωσ-==-其中()()001211121111, a e a e ωσωσ=-=-()()()()01111111111120121111122, T TTTu ua a ωωωωωωασσωασσ====--令111111122TTm m H I u u I αωω-=-=-,用1H 左乘()0A 得,()()()()()()()()()()100001111211111123,,, =,,,,n nAH AH a H a H a e a a a σ==程序框图22i i i i i iTa e I u uσ--计算实习用豪斯霍尔德变换求方程组xA b = ,其中54756753941287886537810987756, 579119755368891089587877810105756759101052A b ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦Matlab 代码 %使用说明:%需自己输入矩阵A 及b 的值%变量Q,R 分别为进行QR 分解后的结果 clear clc format long load('A 矩阵.mat') load('b 矩阵.mat')%调用函数qrhs 进行QR 分解 [Q,R]=qrhs(A); [~,n]=size(R);fprintf('您输入的矩阵阶数'); n y=Q'*b;%回代过程x(n,1)=y(n,1)/R(n,n); for i=n-1:-1:1 s=y(i,1);for j=i+1:ns=s-R(i,j)*x(j,1);endx(i,1)=s/R(i,i);endx被调用函数qrhsfunction[Q,R]=qrhs(A)format long[~,n]=size(A);Q=eye(n);for j=1:n-1B=norm(A(j:n,j));Y=zeros(n-j+1,1);Y(1,1)=-sign(A(1,j))*B;X=A(j:n,j);I=eye(n-j+1);N=I-(2/(norm(X-Y))^2)*(X-Y)*(X-Y)';H=[eye(j-1) zeros(j-1,n-j+1);zeros(n-j+1,j-1) N];A=H*A;Q=Q*H;endR=A;Q;R;end3. 共轭梯度法求解线性方程组计算原理当A 是n 阶对称正定矩阵,若*x 是二次函数()12T Tf x x A x b x=-的极小值点,则*x 是方程组A xb =的解,即()()n**x Rm in A x b fx fx ∈=⇔=共轭梯度法在形式上具有迭代法的特征,即给定初始向量(0)x ,由迭代格式()()()1k k k k xxdα+=+产生的迭代序列在无舍入误差的假定下,最多经过n 次迭代就能求得()f x 的最小点,也就是方程组A xb =的解。
共轭梯度法中关键的两点是,确定迭代格式中的搜索方向和最佳步长。
搜索方向()kd ,与前一次的搜索方向关于()1k d -关于矩阵A 共轭,即()()()1,0k k d A d+=,然后从点()k x出发,沿()k d方向求得()fx 的极小值点()1k x+,即()()()()()()0m in k k kk fx df x dααα≥+=+ 。
由此解得最佳步长k α和参数k β的表达式为()()()()()()()()1, k Tk k T k kkk Tk k Tk rdrA d d A ddA dαβ+==-共轭梯度法的计算公式为:()()()()()()()()()()()()()()()()()00011(1)11(1)r rr k k T k k k T k k k k k k k T k k k T k k k k k d b A x r d d A dx x d b A x rA d d A d dd ααββ++++++⎧==-⎪⎪=⎪⎪⎪=+⎪⎨=-⎪⎪⎪=-⎪⎪=+⎪⎩程序框图计算实习用共轭梯度法求解线性方程组xA b=,其中211121, 1210121A b --⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥--⎣⎦⎣⎦矩阵A 的阶数n 分别取为100,200,400,指出计算结果是否可靠。
Matlab 代码%使用说明:共轭梯度法求解Ax=b %命令行中输入矩阵A 及b %然后调用函数getd 进行计算%变量含义:n —方程阶数,x0—初始向量 %e —计算精度,r —残向量 clear clc format longn=input('请输入方程阶数n='); %输入矩阵阶数 A=zeros(n); b=zeros(n,1);A(1,1)=-2;A(1,2)=1;A(n,n-1)=1;A(n,n)=-2; b(1,1)=-1;b(n,1)=-1; for i=2:n-1;A(i,i)=-2;A(i,i-1)=1;A(i,i+1)=1; end; A;b; %生成对应阶数的矩阵A 和b x0=zeros(n,1); %生成初始向量 e=input('请输入计算精度e='); %输入计算精度 x=getd(A,b,x0,e); %调用函数getd 进行计算if n==100 %对x元素进行重新排列x=reshape(x,10,10)elseif n==200x=reshape(x,10,20)elsex=reshape(x,20,20)end被调用函数getdfunction x=getd(A,b,x0,e)% 矩阵A,b,初始向量x0,精度e n=size(A,1);% 获取矩阵A的阶数x=x0;%初始向量r=b-A*x;%残向量d=r;%搜索向量for k=0:(n-1)p=(r'*r)/(d'*A*d);x=x+p*d;r2=b-A*x;if ((norm(r2)<=e)||(k==n-1))x;break;endq=norm(r2)^2/norm(r)^2;d=r2+q*d;r=r2;end4.三次样条插值计算原理程序框图计算实习 给定函数21(x )(1x 1)115f x=-≤≤+ .取等距节点,构造三次样条插值10(x )S 。
Matlab 代码%使用说明:该程序解决的是三次样条插值中,第1,2类边界条件的问题 %各变量含义:a,b —插值区间左右端点 % n —插值节点数目 % p,q —左右端点导数值% A ,M ,d —用于求解AM=d 中,矩阵M 的值 % C —存放各区间内插值函数的系数矩阵% zglu —利用追赶法进行LU 分解,求解AM=d 的函数 clear clc format long%输入区间,计算插值节点 a=input('请输入区间左端点a='); b=input('请输入区间右端点b=');n=input('请输入插值节点数目(包括左右端点)n='); d=zeros(n,1);x=zeros(n,1);y=zeros(n,1);A=zeros(n); h=(b-a)/(n-1); fprintf('步长h=%d',h) for i=1:n x(i,:)= a+h*(i-1);y(i,:)=1/(1+25*(x(i,:))^2);%计算插值节点处的函数值 end%选择边界条件进行计算,并输入区间左右端点的导数值p ,q xz=input('请选择边界条件类型(1或2或3)xz='); fprintf('以第%d 类边界条件进行计算',xz);p=input('请输入区间左端边界条件p=');q=input('请输入区间右端边界条件q=');%计算矩阵A及矩阵dif xz==1A(1,1)=2;A(1,2)=1/2;A(n,n)=2;A(n,n-1)=1/2;for j=1:n-1d(j,:)=(3/h)*((y(j+1,:)-y(j,:))/h-(y(j,:)-y(j-1,:))/h);A(j,j)=2;A(j,j-1)=0.5;A(j,j+1)=0.5;endd(1,:)=d(1,:)-1/2*p;d(n,:)=d(n,:)-1/2*qelseif xz==2d(1,:)=(6/h)*((y(2,:)-y(1,:))/h-p);d(n,:)=(6/h)*(q-(y(n,:)-y(n-1,:))/h);A(1,1)=2;A(1,2)=1;A(n,n)=2;A(n,n-1)=1;for j=2:n-1d(j,:)=(3/h)*((y(j+1,:)-y(j,:))/h-(y(j,:)-y(j-1,:))/h);A(j,j)=2;A(j,j-1)=0.5;A(j,j+1)=0.5;endend%调用函数zglu用追赶法计算AM=dM=zglu(A,d);%各插值区间内函数表达式,系数矩阵为n*4阶矩阵Cfor k=2:nC(k-1,1)=(M(k,:)-M(k-1,:))/(6*h);C(k-1,2)=(x(k,:)*M(k-1,:)-x(k-1,:)*M(k,:))/(2*h);C(k-1,3)=1/(2*h)*(x(k-1,:)^2*M(k,:)-x(k,:)^2*M(k-1,:))+1/h*(y(k,:)-1/6*h^2*M(k,:)-y(k-1,:)-1/6*h^2*M(k-1,:));C(k-1,4)=1/(6*h)*(x(k,:)^3*M(k-1,:)-x(k-1,:)^3*M(k,:))+1/h*(x(k,:)*(y(k-1,:)-h^2/6* M(k-1,:))-x(k-1,:)*(y(k,:)-h^2/6*M(k,:)));end%显示输入数据disp('您输入的数据如下:')disp('插值节点x:')x(:,:)disp('插值节点y:')y(:,:)disp('计算得到矩阵M:')M(:,:)%输出插值函数S(x)的表达式disp('S(x)的表达式为:')for l=1:n-1disp([num2str(C(l,1)),'x^3+',num2str(C(l,2)),'x^2+',num2str(C(l,3)),'x+',num2str(C(l,4 )),' ',num2str(x(l,:)),'≤x≤',num2str(x(l+1,:))]);end被调用函数zglu% 追赶法求解三对角方程组function x=zglu(A,b)[~,n]=size(A);L=eye(n);U=zeros(n);y=zeros(n,1);x=zeros(n,1);U(1,1)=A(1,1);y(1,1)=b(1,1);for i=2:nl=A(i,i-1)/U(i-1,i-1);L(i,i-1)=l;U(i,i)=A(i,i)-l*A(i-1,i);y(i,1)=b(i,1)-l*y(i-1,1);U(i-1,i)=A(i-1,i);endx(n,1)=y(n,1)/U(n,n);for i=n-1:-1:1s=y(i,1);for j=i+1:ns=s-U(i,j)*x(j,1);endx(i,1)=s/U(i,i);endend5.四阶龙格-库塔法求解常微分方程的初值问题计算原理程序框图计算实习用标准4级4阶R-K 法求解23,(0)1,y (0)3,y (0)2y y y y x y ''''''=+-+-⎧⎨'''=-==⎩取步长h=0.05,计算(1)y 的近似值,并与解析解(x )x e 21xy x =+-作比较。