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

(完整版)数值计算⽅法上机实习题答案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)分析绝对误差。
计算方法上机题答案

2.用下列方法求方程e^x+10x-2=0的近似根,要求误差不超过5*10的负4次方,并比较计算量(1)二分法(局部,大图不太看得清,故后面两小题都用局部截图)(2)迭代法(3)牛顿法顺序消元法#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int N=4,i,j,p,q,k; double m;double a[4][5]; double x1,x2,x3,x4; for (i=0;i<N ;i++ )for (j=0;j<N+1; j++ )scanf("%lf",&a[i][j]);for(p=0;p<N-1;p++) {for(k=p+1;k<N;k++){m=a[k][p]/a[p][p];for(q=p;q<N+1;q++)a[k][q]=a[k][q]-m*a[p][q];}}x4=a[3][4]/a[3][3];x3=(a[2][4]-x4*a[2][3])/a[2][2];x2=(a[1][4]-x4*a[1][3]-x3*a[1][2])/a[1][1];x1=(a[0][4]-x4*a[0][3]-x3*a[0][2]-x2*a[0][1])/a[0][0];printf("%f,%f,%f,%f",x1,x2,x3,x4);scanf("%lf",&a[i][j]); (这一步只是为了看到运行的结果)}运行结果列主元消元法function[x,det,flag]=Gauss(A,b)[n,m]=size(A);nb=length(b);flag='OK';det=1;x=zeros(n,1);for k=1:n-1 max1=0;for i=k:nif abs(A(i,k))>max1max1=abs(A(i,k));r=i;endendif max1<1e-10flag='failure';return;endif r>kfor j=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k)=b(r);b(r)=z;det=-det; endfor i=k+1:nm=A(i,k)/A(k,k);for j=k+1:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);enddet=det*A(k,k);enddet=det*A(n,n)if abs(A(n,n))<1e-10flag='failure';return;endx(n)=b(n)/A(n,n);for k=n-1:-1:1for j=k+1:nb(k)=b(k)-A(k,j)*x(j);endx(k)=b(k)/A(k,k);end运行结果:雅可比迭代法function y=jacobi(a,b,x0) D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1);B=D\(L+U);f=D\b;y=B*x0+f;n=1;while norm(y-x0)>1e-4 x0=y;y=B*x0+f;n=n+1;endyn高斯赛德尔迭代法function y=seidel(a,b,x0) D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1);G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1;while norm(y-x0)>10^(-4) x0=y;y=G*x0+f;n=n+1;endynSOR迭代法function y=sor(a,b,w,x0)D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1);lw=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b*w;y=lw*x0+f;n=1;while norm(y-x0)>10^(-4) x0=y;y=lw*x0+f;n=n+1;endyn1.分段线性插值:function y=fdxx(x0,y0,x)p=length(y0);n=length(x0);m=length(x);for i=1:mz=x(i);for j=1:n-1if z<x0(j+1)break;endendy(i)= y0(j)*(z-x0(j+1))/(x0(j)-x0(j+1))+y0(j+1)*(z-x0(j))/(x0(j+1)-x0(j));fprintf('y(%d)=%f\nx1=%.3fy1=%.3f\nx2=%.3fy2=%.3f\n\n',i,y(i),x0(j),y0(j),x0(j+1),y0(j+1));endend结果0.39404 0.38007 0.356932.分段二次插值:function y=fdec(x0,y0,x)p=length(y0);n=length(x0);m=length(x);for i=1:mz=x(i);for j=1:n-1if z<x0(j+1)break;endendif j<2j=j+1;elseif (j<n-1)if (abs(x0(j)-z)>abs(x0(j+1)-z))j=j+1;elseif ((abs(x0(j)-z)==abs(x0(j+1)-z))&&(abs(x0(j-1)-z)>abs(x0(j+2)-z)))j=j+1;endendans=0.0;for t=j-1:j+1a=1.0;for k=j-1:j+1if t~=ka=a*(z-x0(k))/(x0(t)-x0(k));endendans=ans+a*y0(t);endy(i)=ans;fprintf('y(%d)=%f\n x1=%.3f y1=%.3f\n x2=%.3f y2=%.3f\n x3=%.3f y3=%.3f\n\n',i,y(i),x0(j-1),y0(j-1),x0(j),y0(j),x0(j+1),y0(j+1));endend结果为0.39447 0.38022 0.357253.拉格朗日全区间插值function y=lglr(x0,y0,x)p=length(y0);n=length(x0);m=length(x);for t=1:mans=0.0;z=x(t);for k=1:np=1.0;for q=1:nif q~=kp=p*(z-x0(q))/(x0(k)-x0(q));endendans=ans+p*y0(k);endy(t)=ans;fprintf('y(%d)=%f\n',t,y(t));endend结果为0.39447 0.38022 0.35722function [p,S,mu] = polyfit(x,y,n)if ~isequal(size(x),size(y))errorendx = x(:);y = y(:);if nargout > 2mu = [mean(x); std(x)];x = (x - mu(1))/mu(2);endV(:,n+1) = ones(length(x),1,class(x));for j = n:-1:1V(:,j) = x.*V(:,j+1);end[Q,R] = qr(V,0);ws = warning;p = R\(Q'*y); warning(ws);if size(R,2) > size(R,1)warning;elseif warnIfLargeConditionNumber(R)if nargout > 2warning;elsewarning;endendif nargout > 1r = y - V*p;S.R = R;S.df = max(0,length(y) - (n+1));S.normr = norm(r);endp = p.';function flag = warnIfLargeConditionNumber(R) if isa(R, 'double')flag = (condest(R) > 1e+10);elseflag = (condest(R) > 1e+05);endx=[1,3,4,5,6,7,8,9,10];y=[10,5,4,2,1,1,2,3,4];p=polyfit(x,y,2);y=poly2sym(p);a=-p(1)/p(2)*0.5;xa=-p(2)/(2*p(1));min=(4*p(1)*p(3)-p(2)^2)/(4*p(1)); yxamin运行截图运行结果function [I] = CombineTraprl(f,a,b,eps)if(nargin ==3)eps=1.0e-4;endn=1;h=(b-a)/2;I1=0;I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h; while abs(I2-I1)>epsn=n+1;h=(b-a)/n;I1=I2;I2=0;for i=0:n-1x=a+h*i;x1=x+h;I2=I2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym( f),findsym(sym(f)),x1));endendI=I2;程序:>> [q]=CombineTraprl('(1-exp(-x))^0.5/x'10^-12,1)结果:q =1.8521欧拉方法function [x,y]=euler(fun,x0,xfinal,y0,n);if nargin<5,n=50;endh=(xfinal-x0)/n;x(1)=x0;y(1)=y0;for i=1:nx(i+1)=x(i)+h;y(i+1)=y(i)+h*feval(fun,x(i),y(i));end程序:[x,y]=euler('doty',0,1,1,10)结果:改进欧拉方法function [x,y]=eulerpro(fun,x0,xfinal,y0,n); if nargin<5,n=50;endh=(xfinal-x0)/n;x(1)=x0;y(1)=y0;x(i+1)=x(i)+h;y1=y(i)+h*feval(fun,x(i),y(i));y2=y(i)+h*feval(fun,x(i+1),y1);y(i+1)=(y1+y2)/2;end程序:>> [x,y]=eulerpro('doty',0,1,1,10)结果:经典RK法function [x,y]=RungKutta4(dyfun,xspan,y0,h) x=xspan(1):h:xspan(2);y(1)=y0;for n=1:length(x)-1k1=feval(dyfun,x(n),y(n));k2=feval(dyfun,x(n)+h/2,y(n)+h/2*k1);k3=feval(dyfun,x(n)+h/2,y(n)+h/2*k2);k4=feval(dyfun,x(n+1),y(n)+h*k3);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6; end程序:dyfun=inline('(2*x*y^-2)/3');[x,y]=RungKutta4(dyfun,[0,1],1,0.1)标准函数x(1)=0;h=0.1;for i=1:10y(i)=(1+x(i)^2)^(1/3); endxY结果:。
东南大学计算方法与实习上机实验一

东南大学计算方法与实习实验报告学院:电子科学与工程学院学号:06A*****姓名:***指导老师:***实习题14、设S N=Σ(1)编制按从大到小的顺序计算S N的程序;(2)编制按从小到大的顺序计算S N的程序;(3)按两种顺序分别计算S1000,S10000,S30000,并指出有效位数。
解析:从大到小时,将S N分解成S N-1=S N-,在计算时根据想要得到的值取合适的最大的值作为首项;同理从小到大时,将S N=S N-1+ ,则取S2=1/3。
则所得式子即为该算法的通项公式。
(1)从大到小算法的C++程序如下:/*从大到小的算法*/#include<iostream>#include<iomanip>#include<cmath>using namespace std;const int max=34000; //根据第(3)问的问题,我选择了最大数为34000作为初值void main(){int num;char jus;double cor,sub;A: cout<<"请输入你想计算的值"<<'\t';cin>>num;double smax=1.0/2.0*(3.0/2.0-1.0/max-1.0/(max+1)),temps;double S[max];// cout<<"s["<<max<<"]="<<setprecision(20)<<smax<<'\n';for(int n=max;n>num;){temps=smax;S[n]=temps;n--;smax=smax-1.0/((n+1)*(n+1)-1.0);}cor=1.0/2.0*(3.0/2.0-1.0/num-1.0/(num+1.0)); //利用已知精确值公式计算精确值sub=fabs(cor-smax); //double型取误差的绝对值cout<<"用递推公式算出来的s["<<n<<"]="<<setprecision(20)<<smax<<'\n';cout<<"实际精确值为"<<setprecision(20)<<cor<<'\n';cout<<"则误差为"<<setprecision(20)<<sub<<'\n';cout<<"是否继续计算S[N],是请输入Y,否则输入N!"<<endl;cin>>jus;if ((int)jus==89||(int)jus==121) goto A;}(2)从小到大算法的C++程序如下:/*从小到大的算法*/#include<iostream>#include<iomanip>#include<cmath>using namespace std;void main(){int max;A: cout<<"请输入你想计算的数,注意不要小于2"<<'\t';cin>>max;double s2=1.0/3.0,temps,cor,sub;char jus;double S[100000];for(int j=2;j<max;){temps=s2;S[j]=temps;j++;s2+=1.0/(j*j-1.0);}cor=1.0/2.0*(3.0/2.0-1.0/j-1.0/(j+1.0)); //利用已知精确值公式计算精确值sub=fabs(cor-s2); //double型取误差的绝对值cout<<"用递推公式算出来的s["<<j<<"]="<<setprecision(20)<<s2<<'\n';cout<<"实际精确值为"<<setprecision(20)<<cor<<'\n';cout<<"则误差为"<<setprecision(20)<<sub<<'\n';cout<<"是否继续计算S[N],是请输入Y,否则输入N!"<<endl;cin>>jus;if ((int)jus==89||(int)jus==121) goto A;}(3)(注:因为程序中setprecision(20)表示输出数值小数位数20,则程序运行时所得到的有效数字在17位左右)ii.选择从小到大的顺序计算S1000、S10000、S30000的值需要计算的项S1000S10000S30000计算值0.74900049950049996 0.74966672220370571 0.74996666722220728实际精确值0.74900049950049952 0.74990000499950005 0.74996666722220373误差 4.4408920985006262*10-16 5.6621374255882984*10-15 3.5527136788005009*10-15有效数字17 17 17附上部分程序运行图:iii.实验分析通过C++程序进行计算验证采用从大到小或者从小到大的递推公式算法得到的数值基本稳定且误差不大。
计算方法B上机报告

西安交通大学计算方法B上机报告班级:XXXXXXXX姓名:XXX学号:XXXXXXXX2015/12/13 Sunday目录1题目一 (1)1.数值计算 (1)2.实现思想 (1)3.源程序 (1)4.计算结果 (2)5.分析总结 (2)2题目二 (3)1.数据近似 (3)2.实现思想 (3)3.源程序 (5)4.计算结果 (6)5.分析总结 (7)3题目三 (8)1.数据拟合 (8)2.实现思想 (8)3.源程序 (9)4.计算结果 (12)5.分析总结 (14)4题目四 (15)1.非线性方程求解 (15)2.实现思想 (15)3.源程序 (16)4.计算结果 (17)5.分析总结 (17)5题目五 (18)1.线性方程组求解。
(18)2.文件格式说明 (18)3.实现思想 (19)4.源程序 (20)5.计算结果 (23)6.分析总结 (25)7.实际问题 (25)1 题目一1. 数值计算计算以下和式:0142118184858616nn S n n n n ∞=⎛⎫=--- ⎪++++⎝⎭∑,要求:(1)若保留11个有效数字,给出计算结果,并评价计算的算法;(2)若要保留30个有效数字,则又将如何进行计算。
2. 实现思想对于(1)可用迭代的方法进行处理。
通过do-while 循环使和式从0开始计算直到结果满足有效数字即可。
在循环中通过比较本次和上一次结果之差的绝对值与相应有效数字的大小的1/2,即可构成循环中止条件。
对于(2)可用同样的方法进行计算,然而由于所保留的有效数字较大,此时若不对上述算法进行改善的话,由于每一步所得计算结果都是其真实值,此时可能会存在有效数字丢失的情况,从而影响计算的准确性。
因此我们需要对程序中的计算精度进行控制。
在Maltlab 中可利用digits()函数对运算精度进行规定,为防止出现有效位的损失,在实际程序中需将精度提高几位。
而对迭代中每一步所得到的结果则利用vpa()函数进行限定,这样一来我们对每一个运算都控制了精度,而不只是单纯控制了结果的精度3. 源程序使用Matlab 所编写程序如下所示:(1)clear;clc;sd = 11; %所要保留有效数字 n = 0; %迭代次数S1 = 0; %当前n 时计算结果 S2 = 0; %n-1时计算结果 while 1eq = (4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6))/16^n; S1 = S1 + eq;if abs(S1-S2)<0.5*10^(-(sd-1)) %迭代是否终止判断条件 break endS2 = S1; n = n+1; endS=vpa(S1,sd)(2)clear;clc;sd = 30; %所要保留有效数字digits(sd+2);%控制精度n = 0; %迭代次数S1 = vpa(0); %当前n时计算结果S2 = vpa(0); %n-1时计算结果while 1eq = vpa((4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6))/16^n);S1 = vpa(S1 + eq);if abs(S1-S2)<vpa(0.5*10^(-(sd-1))) %迭代是否终止判断条件breakendS2 = S1;n = n+1;endS=vpa(S1,sd)4.计算结果(1)S =3.1415926536(2)S =3.141592653589793238435711679225.分析总结从计算结果可以看出与准确值3.1415926535897932384357116792180407…相比(1)和(2)所得结果分别是准确值保留11位和30位有效数字的结果,即利用本程序所得结果准确。
计算机上机考试试题及答案

计算机上机考试试题及答案一、选择题1. 以下哪个选项是正确的?A. 计算机的主要作用是存储和处理信息B. 计算机的主要作用是传递和打印信息C. 计算机的主要作用是娱乐和游戏D. 计算机的主要作用是进行通信和通讯2. 在计算机中,CPU是指什么?A. 计算处理单元B. 中央处理单元C. 计算机处理器单元D. 中央处理器单元3. 以下哪个存储设备具有较小的容量但读写速度非常快?A. 硬盘B. 光盘C. 随机存取存储器(RAM)D. 只读存储器(ROM)4. 在计算机领域,RAM是指?A. 随机访问管理B. 随机访问存储器C. 只读存储器D. 只读管理器5. 计算机网络中,LAN是什么的缩写?A. 本地地址网络B. 局域地址网络C. 本地区网络D. 局域网络二、填空题1. 计算机中的最小数据单位是(位)2. 计算机存储容量的最小单位是(字节)3. 局域网中最常用的传输介质是(以太网)4. 计算机操作系统的功能之一是(管理硬件资源)5. WWW的英文全称是(World Wide Web)三、简答题1. 请简要解释什么是操作系统,并列举操作系统的功能。
操作系统是计算机系统中的一种软件,它负责管理和控制计算机的硬件和软件资源,以提供给用户和应用程序一个简单的和友好的界面。
操作系统的主要功能包括:- 管理计算机的硬件资源,如处理器、内存、硬盘等,以保证它们的有效利用和协调工作;- 提供用户与计算机之间的交互界面,包括命令行界面和图形用户界面等;- 负责进程和任务的管理,控制程序的执行顺序和分配资源等;- 提供文件管理功能,包括文件的创建、读取、写入、删除等操作;- 提供网络功能,支持计算机之间的通信和数据交换。
2. 简要解释什么是数据库,并列举数据库管理系统的优点。
数据库是按一定规则组织、存储和管理大量相关数据的集合。
数据库可以通过软件工具来访问和操作,这些软件工具被称为数据库管理系统(DBMS)。
数据库管理系统的优点包括:- 数据共享和数据一致性:多个用户可以同时访问数据库,并且可以保持数据的一致性,避免数据的冗余和不一致。
上机答案

1.假设m是一个三位数,写出将m的个位,十位,百位反序而成的三位数的程序。
(例如:123反序为321)答案 #include<stdio.h>main(){int a,b,c,temp;printf("Enter 3 numbers:\n");scanf("%d%d%d",&a,&b,&c);temp=a;a=c;c=b;b=temp;printf("%d %d %d\n",a,b,c);2. 输入某一年份,判断是否为闰年。
如是输出“Yes”,否则输出“NO”。
答案 #include<stdio.h>Void main(){Int year,leap;Scanf(“%d”,&year);If(year%4==0){if(year%100==0){if(year%400==0)leap=1;elseleap=0;}Elseleap=1;}Elseleap=0;If(leap)Printf(“%d is”,year);ElsePrintf(“%d is not”,year);Printf(“a leap year.\n”);}3. 输入一个不多于5位的正整数,判断其位数并输出。
答案 P1124. 中国古代数学家张丘建提出的“百鸡问题”:一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。
现在有100个钱,要买100只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。
请写出求解该问题的程序。
答案 #include<stdio.h>void main(){int j,i,t;for(i=0;i<20;i++){for(j=0;j<34;j++){for(t=0;t<=300;t++){if(((5*i+3*j+t/3)<=100)&&((i+j+t)==100))printf("%d%d%d\n",i,j,t);}}}}5. 设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
东南大学数值分析上机题答案

东南⼤学数值分析上机题答案数值分析上机题第⼀章17.(上机题)舍⼊误差与有效数设∑=-=Nj N j S 2211,其精确值为)111-23(21+-N N 。
(1)编制按从⼤到⼩的顺序1-1···1-311-21222N S N +++=,计算N S 的通⽤程序;(2)编制按从⼩到⼤的顺序121···1)1(111222-++--+-=N N S N ,计算NS 的通⽤程序;(3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时⽤单精度);(4)通过本上机题,你明⽩了什么?解:程序:(1)从⼤到⼩的顺序计算1-1···1-311-21222N S N +++=:function sn1=fromlarge(n) %从⼤到⼩计算sn1format long ; sn1=single(0); for m=2:1:nsn1=sn1+1/(m^2-1); end end(2)从⼩到⼤计算121···1)1(111222-++--+-=N N S N function sn2=fromsmall(n) %从⼩到⼤计算sn2format long ; sn2=single(0); for m=n:-1:2sn2=sn2+1/(m^2-1); end end(3)总的编程程序为: function p203()clear allformat long;n=input('please enter a number as the n:') sn=1/2*(3/2-1/n-1/(n+1));%精确值为sn fprintf('精确值为%f\n',sn);sn1=fromlarge(n);fprintf('从⼤到⼩计算的值为%f\n',sn1);sn2=fromsmall(n);fprintf('从⼩到⼤计算的值为%f\n',sn2);function sn1=fromlarge(n) %从⼤到⼩计算sn1 format long;sn1=single(0);for m=2:1:nsn1=sn1+1/(m^2-1);endendfunction sn2=fromsmall(n) %从⼩到⼤计算sn2 format long;sn2=single(0);for m=n:-1:2sn2=sn2+1/(m^2-1);endendend运⾏结果:从⽽可以得到N值真值顺序值有效位数2 100.740050 从⼤到⼩0.740049 5从⼩到⼤0.740050 64 100.749900 从⼤到⼩0.749852 3从⼩到⼤0.749900 66 100.749999 从⼤到⼩0.749852 3从⼩到⼤0.749999 6(4)感想:通过本上机题,我明⽩了,从⼩到⼤计算数值的精确位数⽐较⾼⽽且与真值较为接近,⽽从⼤到⼩计算数值的精确位数⽐较低。
excel上机操作试题及答案

excel上机操作试题及答案Excel上机操作试题及答案试题一:基本操作1. 打开Excel,创建一个新的工作簿。
2. 在A1单元格输入文字“姓名”,在B1单元格输入文字“成绩”。
3. 在A2单元格输入文字“张三”,在B2单元格输入数字85。
4. 在A3单元格输入文字“李四”,在B3单元格输入数字90。
5. 将A1:B3的单元格数据合并为一个单元格。
6. 将工作表的列宽设置为20。
7. 将A1:B3的单元格背景颜色设置为黄色。
8. 保存工作簿为“学生成绩表.xlsx”。
答案一:1. 打开Excel应用程序,点击“新建”按钮创建一个新的工作簿。
2. 在A1单元格输入“姓名”,在B1单元格输入“成绩”。
3. 在A2单元格输入“张三”,在B2单元格输入85。
4. 在A3单元格输入“李四”,在B3单元格输入90。
5. 选中A1:B3单元格,点击“合并和居中”按钮。
6. 选中A列和B列,右键点击选择“列宽”,输入20。
7. 选中A1:B3单元格,点击“开始”选项卡下的“填充颜色”按钮,选择黄色。
8. 点击“文件”选项卡,选择“另存为”,输入文件名“学生成绩表.xl sx”,选择保存位置后点击“保存”。
试题二:公式与函数1. 在C1单元格输入文字“平均分”。
2. 在C2单元格使用AVERAGE函数计算B2:B3的平均分。
3. 在C3单元格使用MAX函数找出B2:B3的最大值。
4. 在C4单元格使用MIN函数找出B2:B3的最小值。
5. 在C5单元格使用SUM函数计算B2:B3的总和。
6. 将C1:C5的单元格数据合并为一个单元格。
7. 将C1:C5的单元格背景颜色设置为绿色。
8. 保存工作簿。
答案二:1. 在C1单元格输入“平均分”。
2. 在C2单元格输入公式`=AVERAGE(B2:B3)`。
3. 在C3单元格输入公式`=MAX(B2:B3)`。
4. 在C4单元格输入公式`=MIN(B2:B3)`。
5. 在C5单元格输入公式`=SUM(B2:B3)`。
计算方法答案王能超

计算方法答案王能超【篇一:计算方法习题集及实验指导书】s=txt>计算机科学与技术系檀明2008-02-10课程性质及目的要求(一)课程性质自计算机问世以来,科学计算一直是计算机应用的一个重要领域,数值计算方法是解决各种复杂的科学计算问题的理论与技术的基础。
《计算方法》课程讨论用于科学计算中的一些最基本、最常用的算法,不但具有数学的抽象性与严密的科学性的特点,而且具有应用的高度技术性的特点。
它对于培养从事计算机应用的科技人才有着重要的作用,是计算机应用专业(本科段)的一门重要的技术基础课程。
(二)目的要求通过本课程的学习和上机实验,了解用计算机解决科学计算问题的方法特点,掌握计算方法中的一些基本概念、基本公式和相应的算法流程,提高根据算法描述设计高级语言程序并进行验证的技能。
在学习过程中,应注重理解和应用,在搞清基本原理和基本概念的基础上,通过习题、编程和上机等环节,巩固和加深已学的内容,掌握重要的算法及其应用。
注重理论与算法的学习和应用相结合,强调编程及上机计算的技能培养,是本课程不同于一般数学课程的重要特点。
(三)学习方法指导1.循序渐进逐章学习本课程从第二章开始,每章都讨论一个大类的算法。
虽然各算法是相对独立的,但是也存在相互联系与前后继承的关系。
前面的概念和算法学好了,后面的内容也就容易学,越学越感到容易。
前面的内容没有学好,后面就会感到难学,甚至会出现越来越感到困难、失去学习信心的情况。
2.稳扎稳打融会贯通学习要扎实、要讲求实效。
每一个重要的概念和公式,都会搞清楚,做到融会贯通。
只有这样,才能取得学习的学习效果。
3.多学练勤做习题教材及本习题集中的每一章都附有适量的习题,可以帮助考生巩固和加深理解所学的知识,提高解题能力。
因此,在学习过程中,应当适合习题进行思考,应当尽可能多做习题,遇到某些不会做的题,应三思之后再请老师给予提示。
4.抓住特点前后联系本课程只讲了五大类算法。
每类算法都是针对一类特定的计算问题,都有其自身的特点。
计算机应用基础上机试题及答案

计算机应用基础上机试题及答案一、选择题(每题 2 分,共 40 分)1、世界上第一台电子计算机诞生于()A 1946 年B 1950 年C 1958 年D 1962 年答案:A2、计算机能够直接识别和执行的语言是()A 机器语言B 汇编语言C 高级语言D 数据库语言答案:A3、在计算机内部,数据是以()形式加工、处理和传送的。
A 二进制码B 八进制码C 十进制码D 十六进制码答案:A4、下列设备中,属于输出设备的是()A 扫描仪B 显示器C 鼠标D 键盘答案:B5、 Windows 操作系统是一种()A 单用户单任务操作系统B 单用户多任务操作系统C 多用户单任务操作系统D 多用户多任务操作系统答案:D6、在 Windows 中,要将当前窗口的内容存入剪贴板,应按()键。
A PrintScreenB Alt + PrintScreenC Ctrl + PrintScreenD Ctrl + V答案:B7、在 Word 中,若要将选定的文本设置为加粗、斜体和下划线,应使用“开始”选项卡中的()命令。
A 字体B 段落C 样式D 编辑答案:A8、在 Excel 中,函数 SUM(A1:A4)的功能是()A 计算 A1 和 A4 单元格的和B 计算 A1 至 A4 单元格的平均值C 计算 A1 至 A4 单元格的总和D 计算 A1 至 A4 单元格的个数答案:C9、在 PowerPoint 中,演示文稿的默认扩展名是()Appt Bpptx Cxls Ddoc答案:B10、在 Internet 中,IP 地址由()位二进制数组成。
A 8B 16C 32D 64答案:C11、下列属于计算机病毒特征的是()A 传染性B 免疫性C 安全性D 稳定性答案:A12、计算机网络最突出的优点是()A 资源共享B 运算速度快C 存储容量大D 精度高答案:A13、在数据库管理系统中,关系模型中的“关系”是指()A 二维表B 实体C 属性D 视图答案:A14、算法的基本结构不包括()A 顺序结构B 选择结构C 循环结构D 跳转结构答案:D15、以下关于多媒体技术的描述中,错误的是()A 多媒体技术将各种媒体以数字化的方式集成在一起B 多媒体技术是指将多种媒体进行有机组合而成的一种新的媒体应用系统C 多媒体技术就是能用来观看的数字电影技术D 多媒体技术与计算机技术的融合开辟出一个多学科的崭新领域答案:C16、在计算机中,存储容量为 1GB,等于()A 1024MB B 1024KBC 1000MBD 1000KB答案:A17、以下关于操作系统的描述,错误的是()A 操作系统是管理计算机硬件与软件资源的程序B 操作系统是用户与计算机之间的接口C 操作系统是一种应用软件D 操作系统负责管理计算机系统的进程、内存、设备等资源答案:C18、在Word 中,要查找文档中的特定字符串,应使用()功能。
最新线性代数上机作业题答案详解

线性代数机算与应用作业题学号: 姓名: 成绩: 一、机算题1.利用函数rand 和函数round 构造一个5×5的随机正整数矩阵A 和B 。
(1)计算A +B ,A -B 和6A (2)计算()TAB ,T T B A 和()100AB(3)计算行列式A ,B 和AB (4)若矩阵A 和B 可逆,计算1A -和1B - (5)计算矩阵A 和矩阵B 的秩。
解 输入:A=round(rand(5)*10)B=round(rand(5)*10) 结果为:A =2 4 1 63 2 2 3 74 4 9 4 25 3 106 1 1 9 4 3 3 3B =8 6 5 4 9 0 2 2 4 8 9 5 5 10 1 7 10 6 0 3 5 5 7 9 3(1)输入:A+B 结果为:ans=10 10 6 10 122 4 5 11 1213 14 9 12 610 20 12 1 414 9 10 12 6输入:A-B结果为:ans =-6 -2 -4 2 -62 0 13 -4-5 4 -1 -8 4-4 0 0 1 -24 -1 -4 -6 0输入:6*A结果为:ans =12 24 6 36 1812 12 18 42 2424 54 24 12 3018 60 36 6 654 24 18 18 18 (2)输入:(A*B)'结果为:ans =82 112 107 90 135100 121 107 83 12280 99 105 78 10761 82 137 121 10978 70 133 119 134输入:B'*A'结果为:ans =82 112 107 90 135100 121 107 83 12280 99 105 78 10761 82 137 121 10978 70 133 119 134输入:(A*B)^100结果为:ans =1.0e+270 *1.6293 1.6526 1.4494 1.5620 1.63991.9374 1.9651 1.7234 1.8573 1.94992.4156 2.4501 2.1488 2.3158 2.43132.0137 2.0425 1.7913 1.9305 2.02682.4655 2.5008 2.1932 2.3636 2.4815 (3)输入:D=det(A)结果为:D =5121输入:D=det(B)结果为:D =-9688输入:D=det(A*B)结果为:D =-49612248(4)输入:inv(A)结果为:ans =0.0217 -0.0662 -0.0445 -0.0135 0.14530.1845 -0.1582 0.0264 0.0475 -0.0334-0.3199 0.2742 -0.0457 0.1178 -0.00880.1707 0.0283 -0.1343 0.0471 -0.0002-0.1619 0.1070 0.2785 -0.1877 -0.0490 输入:inv(B)结果为:ans =0.1726 -0.1560 0.0357 -0.0667 -0.0471-0.2642 0.2693 0.1786 0.2157 -0.20070.1982 -0.2957 -0.3214 -0.0993 0.4005-0.1305 0.1478 0.1429 0.0050 -0.05530.0818 0.0577 -0.0357 -0.0316 -0.0223 (5)输入:rank(A)结果为:ans =5输入:rank(B)结果为:ans =5 2.求解下列方程组(1)求非齐次线性方程组12341234123412342245 14171278776652921710x x x xx x x xx x x xx x x x+++=⎧⎪-+-+=⎪⎨+++=⎪⎪--+-=⎩的唯一解。
excel上机考试题和答案

excel上机考试题和答案**Excel上机考试题和答案**一、单项选择题(每题2分,共20分)1. 在Excel中,以下哪个函数用于计算一组数据的方差?A. SUMB. AVERAGEC. VARIANCED. COUNT答案:C2. Excel中,哪个功能可以快速对数据进行排序?A. 筛选B. 查找和替换C. 数据透视表D. 排序答案:D3. 在Excel中,如何插入一个图表?A. 点击“插入”选项卡,然后选择“图表”B. 点击“插入”选项卡,然后选择“图片”C. 点击“插入”选项卡,然后选择“形状”D. 点击“插入”选项卡,然后选择“文本框”答案:A4. Excel中,哪个功能可以合并多个单元格?A. 格式刷B. 查找和选择C. 合并并居中D. 清除答案:C5. 在Excel中,如何快速复制一个单元格的格式到另一个单元格?A. 使用格式刷B. 使用查找和替换C. 使用粘贴特殊D. 使用剪切和粘贴答案:A6. Excel中,哪个函数用于计算一组数据的标准差?A. SUMB. AVERAGEC. STDEVD. COUNT答案:C7. 在Excel中,如何快速填充一个序列?A. 使用自动填充手柄B. 使用查找和替换C. 使用数据透视表D. 使用排序答案:A8. Excel中,哪个功能可以进行数据的分类汇总?A. 数据透视表B. 数据透视图C. 筛选D. 排序答案:A9. 在Excel中,如何设置单元格的边框?A. 使用“开始”选项卡中的“边框”按钮B. 使用“插入”选项卡中的“形状”工具C. 使用“页面布局”选项卡中的“打印区域”工具D. 使用“公式”选项卡中的“名称管理器”答案:A10. Excel中,哪个函数用于计算一组数据的平均值?A. SUMB. AVERAGEC. COUNTD. MAX答案:B二、多项选择题(每题3分,共15分)1. 在Excel中,以下哪些操作可以改变单元格的格式?A. 改变字体大小B. 改变单元格颜色C. 改变单元格边框D. 改变单元格的行高答案:A, B, C2. Excel中,哪些函数可以用来计算一组数据的总和?A. SUMB. AVERAGEC. COUNTD. SUMIF答案:A, D3. 在Excel中,以下哪些操作可以插入一个图片?A. 点击“插入”选项卡,然后选择“图片”B. 点击“插入”选项卡,然后选择“图表”C. 点击“插入”选项卡,然后选择“形状”D. 点击“插入”选项卡,然后选择“文本框”答案:A4. Excel中,哪些功能可以对数据进行筛选?A. 数据透视表B. 筛选C. 查找和替换D. 排序答案:A, B5. 在Excel中,以下哪些操作可以插入一个公式?A. 点击“公式”选项卡,然后选择“插入函数”B. 直接在单元格中输入等号“=”C. 点击“插入”选项卡,然后选择“形状”D. 点击“插入”选项卡,然后选择“文本框”答案:A, B三、判断题(每题1分,共10分)1. 在Excel中,可以通过按“Ctrl+C”复制选中的单元格,然后按“Ctrl+V”粘贴到其他位置。
上机考试题目及答案

题目--1、"查找员工的编号、姓名、部门和出生日期,如果出生日期为空值,--显示日期不详,并按部门排序输出,日期格式为yy-mm-dd。
--2、"查找与喻自强在同一个单位的员工姓名、性别、部门和职称--3、"按部门进行汇总,统计每个部门的总工资--4、"查找商品名称为14寸显示器商品的销售情况,--显示该商品的编号、销售数量、单价和金额--5、"在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额--6、"按客户编号统计每个客户1996年的订单总金额--7、"查找有销售记录的客户编号、名称和订单总额--8、"查找在1997年中有销售记录的客户编号、名称和订单总额--9、"查找一次销售最大的销售记录--10、"查找至少有3次销售的业务员名单和销售日期--11、"用存在量词查找没有订货记录的客户名称--12、"使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额--订货日期不要显示时间,日期格式为yy-mm-dd--按客户编号排序,同一客户再按订单降序排序输出--13、"查找16M DRAM的销售情况,要求显示相应的销售员的姓名、--性别,销售日期、销售数量和金额,其中性别用男、女表示--14、"查找每个人的销售记录,要求显示销售员的编号、姓名、性别、--产品名称、数量、单价、金额和销售日期--15、"查找销售金额最大的客户名称和总货款--16、"查找销售总额少于1000元的销售员编号、姓名和销售额--17、"查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额--18、"查找至少与世界技术开发公司销售相同的客户编号、名称和商品编号、商品名称、数量和金额19、"查找表中所有姓刘的职工的工号,部门,薪水20、"查找所有定单金额高于200的所有客户编号21、"统计表中员工的薪水在400-600之间的人数22、"查询表中的同一部门的职工的平均工资,但只查询"住址"是"上海市"的员工23、"将表中住址为"上海市"的员工住址改为"北京市"24、"查找业务部或会计部的女员工的基本信息。
计算方法上机作业

计算方法上机作业作为一位学生,我经常需要完成各种数学计算。
无论是简单的加减乘除还是复杂的代数方程和数列求和,计算是我非常重要的一项能力。
然而,为了提高我的计算能力,我仍然需要不断的练习和实践。
下面是我在计算方法上机作业中遇到的一些题目,并附上了详细的解答过程。
1.求解方程组:{2x-3y=5{3x+4y=7解答:首先,我们可以通过消元法或代入法求解这个方程组。
这里我们选择代入法。
由第一个方程得:2x=3y+5将上式代入第二个方程中得:3(3y+5)+4y=7化简得:9y+15+4y=7继续化简:13y=-8得到:y=-8/13将y的值代入第一个方程得:2x-3(-8/13)=5化简得:2x=5+24/13继续化简:2x=65/13-24/13得到:2x=41/13最后,得到:x=(41/13)/2=41/26所以,方程组的解为:x=41/26,y=-8/132.求解不等式:2x+3>5x-1解答:首先,我们将不等式移项得:2>5x-2x-1继续化简:2>3x-1再次移项:3>3x继续化简:1>x所以,不等式的解集为:x<13.求函数f(x)=2x^2+3x-1的极值点。
解答:首先,我们利用求导的方法求解极值点。
对函数f(x)求导得:f'(x)=4x+3然后,令f'(x)=0化简得:4x=-3最后,得到:x=-3/4将极值点x=-3/4代入原函数得:f(-3/4)=2(-3/4)^2+3(-3/4)-1化简得:f(-3/4)=9/8-9/4-1最后,得到:f(-3/4)=-11/8所以,函数f(x)=2x^2+3x-1的极值点为x=-3/4,对应的函数值为f(-3/4)=-11/8通过这些题目的解答,我不仅巩固了计算方法的知识,也提高了我的计算能力和解题技巧。
我会继续努力学习和练习,以便更好地掌握计算方法。
数值计算方法上机实习题答案.doc

1.设I n 1 x ndx ,0 5 x( 1)由递推公式 I n 5I n 11,从 I 0的几个近似值出发,计算I 20;n解:易得: I 0 ln6-ln5=0.1823, 程序为:I=0.182;for n=1:20I=(-5)*I+1/n;endI输出结果为: I 20= -3.0666e+010( 2)粗糙估计 I 20,用 I n 1 1I n 1 1 ,计算 I 0;5 5n0.0079 1 x 20 1 x 200.0095因为dx I 20dx 6 5所以取 I 20 1(0.0079 0.0095) 0.0087 2程序为: I=0.0087;for n=1:20I=(-1/5)*I+1/(5*n);endII 0= 0.0083( 3)分析结果的可靠性及产生此现象的原因(重点分析原因 )。
首先分析两种递推式的误差;设第一递推式中开始时的误差为E0 I 0 I 0,递推过程的舍入误差不计。
并记 E n I n I n,则有 E n 5E n 1 ( 5) n E0。
因为 E20( 5) 20 E0 I 20,所此递推式不可靠。
而在第二种递推式中E0 1E1 (1)n E n,误差在缩小,5 5所以此递推式是可靠的。
出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制,即算法是否数值稳定。
2.求方程e x10x 2 0 的近似根,要求x k 1x k 5 10 4,并比较计算量。
(1)在 [0, 1]上用二分法;程序: a=0;b=1.0;while abs(b-a)>5*1e-4c=(b+a)/2;if exp(c)+10*c-2>0b=c;else a=c;endendc结果: c =0.0903( 2)取初值x0 0,并用迭代 x k 1 2 e x ;10程序: x=0;a=1;while abs(x-a)>5*1e-4a=x;x=(2-exp(x))/10;endx结果: x =0.0905(3)加速迭代的结果;程序: x=0;a=0;b=1;while abs(b-a)>5*1e-4a=x;y=exp(x)+10*x-2;z=exp(y)+10*y-2;x=x-(y-x)^2/(z-2*y+x);b=x;endx结果: x =0.0995( 4)取初值x00 ,并用牛顿迭代法;程序: x=0;a=0;b=1;while abs(b-a)>5*1e-4a=x;x=x-(exp(x)+10*x-2)/(exp(x)+10); b=x;end x 结果: x =0.0905( 5) 分析绝对误差。
excel上机操作题及答案

excel上机操作题及答案左键拖动选择C3至F6单元格——单击编辑菜单、填充、序列——“序列产生在”选“行”、类型选“等比序列”、步长值里输入2——确定。
2)在G2单元格中输入公式“=SUM(C2:F2)”——按下回车键——选中G2单元格——将鼠标指针移动到单元格右下角的黑色十字架上,直到光标变成黑色十字箭头——按住鼠标左键拖动选择G3至G6单元格——松开鼠标左键——按下回车键,即可得到80年到94年间每个人的总收入。
3)选择文件菜单、页面设置命令——在页面设置对话框中选择“页面”选项卡——在“方向”中选择“横向”——在“打印区域”中输入4)右击当前工作表标签——选择“移动或复制”命令——在“移动或复制”对话框中,将“复制”复选框打勾,选择“工资备份表”——确定。
5)按住鼠标左键拖动选择A1至F6单元格——选择“边框”工具——在“边框”工具栏中选择红色粗边框、蓝色细内框线。
首先,我们需要对这篇文章进行格式化和修剪,以使其更易于阅读。
下面是修改后的文章:1.在工作表中,按住鼠标左键拖动选择C3至F3单元格。
2.单击“编辑”菜单,选择“填充”,然后选择“序列”选项。
3.在“序列产生在”选项中,选择“行”,在“类型”中选择“等比序列”,并在“步长值”中输入2.最后,单击“确定”按钮。
4.按住鼠标左键拖动选择C4至F4单元格,然后重复步骤3.5.按住鼠标左键拖动选择C5至F5单元格,然后重复步骤3.6.按住鼠标左键拖动选择C6至F6单元格,然后重复步骤3.7.单击G2单元格,然后单击“编辑公式”按钮。
8.在编辑栏中输入公式:C2*12*5+D2*12*5+E2*12*58.9.按住鼠标左键拖动选中G2至G6区域。
10.选择“文件”菜单,然后选择“页面设置”。
11.在“页面设置”对话框中,选择“横向”方向,并单击“工作表”选项卡。
12.单击“打印区域”项右侧的折叠按钮,然后按住鼠标左键拖动选择13.单击“确定”按钮。
计算方法 程序 上机

function yh = LagInterp(x, y, xh)% LagInterp 计算拉格朗日插值%% Synopsis: yh = LagInterp(x, y, xh%% Input: x = 一维向量,将要做插值x的值% y = 一维向量,将要做插值y的值% xh = 数值或一维向量,计算插值的位置,支持计算一列xh的值%% Output: yh = 数值或一维向量,通过计算插值的位置算出的插值if min(size(x)) > 1 | min(size(y)) > 1 %判断x,y是否为一维向量error('x,y must be vectors!');elseif length(x) ~= length(y) %判断x,y是否有同样多的元素 error('x and y must agree!');endyh = zeros(size(xh));L = zeros(length(x) - 1);for j = 1:length(xh)for i = 1:length(x)xCal = x;xCal(i) = [];%prod(xh(j) - xCal)/prod(x(i) - xCal)为拉格朗日基函数L(i) = prod(xh(j) - xCal)/prod(x(i) - xCal);yh(j) = yh(j) + L(i) * y(i); %yh = sum(L(i) * y(i))endendfunction TestLag(fx, a, b, n, xi)% TestLag 实验题目1 1,2%% Synopsis: TestLag(fun, a, b, n, xi)%% Input: fx = 用来验证插值计算准确率的函数% a,b = 节点选取上下限% n = 多项式次数,固定区间[-a,b]分段数% xi = 要计算插值的点x = linspace(a, b, n);y = feval(fx, x);yi = LagInterp(x, y, xi);yFact = feval(fx, xi);err = yFact - yi;fprintf('将区间[%d,%d]分为了%d段\n', a, b, n); fprintf('计算插值的点 xi =\n');disp(xi);fprintf('计算出的插值 yi =\n');disp(yi);fprintf('插值点处函数值 yFact =\n');disp(yFact);fprintf('计算误差 err =\n');disp(err);function r = NewtSolveOne(fun, x0, ftol, dftol, maxit)% NewtSolveOne 用Newton法解方程f(x)=0在x0附近的一个根%% Synopsis: r = NewtSolveOne(fun, x0)% r = NewtSolveOne(fun, x0, ftol, dftol)%% Input: fun = (string) 需要求根的函数及其导数% x0 = 猜测根,Newton法迭代初始值% ftol = (optional)误差,默认为5e-9% dftol = (optional)导数容忍最小值,小于它表明Newton法失败,默认为5e-9% maxit = (optional)迭代次数,默认为25%% Output: r = 在寻根区间内的根或奇点if nargin < 3ftol = 5e-9;endif nargin < 4dftol = 5e-9;endif nargin < 5maxit = 25;endx = x0; %设置初始迭代位置为x0k = 0; %初始化迭代次数为0while k <= maxitk = k + 1;[f,dfdx] = feval(fun,x); %fun返回f(x)和f'(x)的值if abs(dfdx) < dftol %如果导数小于dftol,Newton法失败,返回空值r = [];warning('dfdx is too small!');return;enddx = f/dfdx; %x(n+1) = x(n) - f( x(n) )/f'( x(n) ),这里设dx = f( x(n) )/f'( x(n) ) x = x - dx;if abs(f) < ftol %如果误差小于ftol,返回当前x为根r = x;return;endendr = []; %如果牛顿法未收敛,返回空值function p = LegendreIter(n)% LegendreIter 用递推的方法计算n次勒让德多项式的系数向量 Pn+2(x) = (2*i+3)/(i+2) * x*Pn+1(x) - (i+1)/(i+2) * Pn(x)%% Synopsis: p = LegendreIter(n)%% Input: n = 勒让德多项式的次数%% Output: p = n次勒让德多项式的系数向量if round(n) ~= n | n < 0error('n必须是一个非负整数');endif n == 0 %P0(x) = 1p = 1;return;elseif n == 1 %P1(x) = xp = [1 0];return;endpBk = 1; %初始化三项递推公式后项为P0pMid = [1 0]; %初始化三项递推公式中项为P1for i = 0:n-2pMidCal = zeros(1,i+3); %构造用于计算的x*Pn+1pMidCal(1:i+2) = pMid;pBkCal = zeros(1,i+3); %构造用于计算的PnpBkCal(3:i+3) = pBkpFwd = (2*i+3)/(i+2) * pMidCal - (i+1)/(i+2) * pBkCal; %勒让德多项式三项递推公式Pn+2(x) = (2*i+3)/(i+2) * x*Pn+1(x) - (i+1)/(i+2) * Pn(x)pBk = pMid; %把中项变为后项进行下次迭代pMid = pFwd; %把前项变为中项进行下次迭代endp = pFwd/pFwd(1); %把勒让德多项式最高次项系数归一化% GaussSysSolve 用Gauss消去法解线性方程组 Ax = b%% Synopsis: x = GaussSysSolve(A, b)%% Input: A = 系数矩阵% b = 方程组右端%% Output: x = 线性系统的解向量[m,n] = size(A);b = b(:); %将b变为列向量if m ~= n %A必须为方阵error('Argument matrix A must be square!');elseif m ~= length(b) %b的长度应与A维度相同error('The dimentions of A and b do not agree!');endAb = [A b]; %构造增广矩阵for i = 1:n[amax, imax] = max(Ab(i:n, i)); %选择主元if amax == 0 %主元为0,矩阵奇异error('Tne Linear System is singular!');elseif i ~= imax+i-1 %主元行数与i不同时,交换这两行 Ab([i imax+i-1],:) = Ab([imax+i-1 i], :);endfor j = i+1:n %向下消元Ab(j,:) = Ab(j,:) - Ab(i,:) * Ab(j,i)/amax;endendx = zeros(n,1);x(n) = Ab(n,n+1)/Ab(n,n);for k = n-1:-1:1 %计算xx(k) = ( Ab(k,n+1) - Ab(k,k+1:n)*x(k+1:n) ) / Ab(k,k);end% GaussExpSysSolve 用显式Gauss列主元消去法解线性方程组 Ax = b% Synopsis: x = GaussExpSysSolve(A, b)% Input: A = 系数矩阵% b = 方程组右端% Output: x = 线性系统的解向量[m,n] = size(A);b = b(:); %将b变为列向量if m ~= n %A必须为方阵error('Argument matrix A must be square!');elseif m ~= length(b) %b的长度应与A维度相同error('The dimentions of A and b do not agree!');endAb = [A b]; %构造增广矩阵for i = 1:n %显式平衡技术s = max(Ab(i,1:n));Ab(i,:) = Ab(i,:)/s;endfor i = 1:n[amax, imax] = max(Ab(i:n, i)); %选择主元if amax == 0 %主元为0,矩阵奇异error('Tne Linear System is singular!');elseif i ~= imax+i-1 %主元行数与i不同时,交换这两行 Ab([i imax+i-1],:) = Ab([imax+i-1 i], :);endfor j = i+1:n %向下消元Ab(j,:) = Ab(j,:) - Ab(i,:) * Ab(j,i)/amax;endendx = zeros(n,1);x(n) = Ab(n,n+1)/Ab(n,n);for k = n-1:-1:1 %计算xx(k) = ( Ab(k,n+1) - Ab(k,k+1:n)*x(k+1:n) ) / Ab(k,k);end。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.用下列方法求方程e^x+10x-2=0的近似根,要求误差不超过5*10的负4次方,并比较计算量(1)二分法(局部,大图不太看得清,故后面两小题都用局部截图)(2)迭代法(3)牛顿法顺序消元法#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int N=4,i,j,p,q,k; double m;double a[4][5]; double x1,x2,x3,x4; for (i=0;i<N ;i++ )for (j=0;j<N+1; j++ )scanf("%lf",&a[i][j]);for(p=0;p<N-1;p++) {for(k=p+1;k<N;k++){m=a[k][p]/a[p][p];for(q=p;q<N+1;q++)a[k][q]=a[k][q]-m*a[p][q];}}x4=a[3][4]/a[3][3];x3=(a[2][4]-x4*a[2][3])/a[2][2];x2=(a[1][4]-x4*a[1][3]-x3*a[1][2])/a[1][1];x1=(a[0][4]-x4*a[0][3]-x3*a[0][2]-x2*a[0][1])/a[0][0];printf("%f,%f,%f,%f",x1,x2,x3,x4);scanf("%lf",&a[i][j]); (这一步只是为了看到运行的结果)}运行结果列主元消元法function[x,det,flag]=Gauss(A,b)[n,m]=size(A);nb=length(b);flag='OK';det=1;x=zeros(n,1);for k=1:n-1 max1=0;for i=k:nif abs(A(i,k))>max1max1=abs(A(i,k));r=i;endendif max1<1e-10flag='failure';return;endif r>kfor j=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k)=b(r);b(r)=z;det=-det; endfor i=k+1:nm=A(i,k)/A(k,k);for j=k+1:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);enddet=det*A(k,k);enddet=det*A(n,n)if abs(A(n,n))<1e-10flag='failure';return;endx(n)=b(n)/A(n,n);for k=n-1:-1:1for j=k+1:nb(k)=b(k)-A(k,j)*x(j);endx(k)=b(k)/A(k,k);end运行结果:雅可比迭代法function y=jacobi(a,b,x0) D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1);B=D\(L+U);f=D\b;y=B*x0+f;n=1;while norm(y-x0)>1e-4 x0=y;y=B*x0+f;n=n+1;endyn高斯赛德尔迭代法function y=seidel(a,b,x0) D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1);G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1;while norm(y-x0)>10^(-4) x0=y;y=G*x0+f;n=n+1;endynSOR迭代法function y=sor(a,b,w,x0)D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1);lw=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b*w;y=lw*x0+f;n=1;while norm(y-x0)>10^(-4) x0=y;y=lw*x0+f;n=n+1;endyn1.分段线性插值:function y=fdxx(x0,y0,x)p=length(y0);n=length(x0);m=length(x);for i=1:mz=x(i);for j=1:n-1if z<x0(j+1)break;endendy(i)= y0(j)*(z-x0(j+1))/(x0(j)-x0(j+1))+y0(j+1)*(z-x0(j))/(x0(j+1)-x0(j));fprintf('y(%d)=%f\nx1=%.3fy1=%.3f\nx2=%.3fy2=%.3f\n\n',i,y(i),x0(j),y0(j),x0(j+1),y0(j+1));endend结果0.39404 0.38007 0.356932.分段二次插值:function y=fdec(x0,y0,x)p=length(y0);n=length(x0);m=length(x);for i=1:mz=x(i);for j=1:n-1if z<x0(j+1)break;endendif j<2j=j+1;elseif (j<n-1)if (abs(x0(j)-z)>abs(x0(j+1)-z))j=j+1;elseif ((abs(x0(j)-z)==abs(x0(j+1)-z))&&(abs(x0(j-1)-z)>abs(x0(j+2)-z)))j=j+1;endendans=0.0;for t=j-1:j+1a=1.0;for k=j-1:j+1if t~=ka=a*(z-x0(k))/(x0(t)-x0(k));endendans=ans+a*y0(t);endy(i)=ans;fprintf('y(%d)=%f\n x1=%.3f y1=%.3f\n x2=%.3f y2=%.3f\n x3=%.3f y3=%.3f\n\n',i,y(i),x0(j-1),y0(j-1),x0(j),y0(j),x0(j+1),y0(j+1));endend结果为0.39447 0.38022 0.357253.拉格朗日全区间插值function y=lglr(x0,y0,x)p=length(y0);n=length(x0);m=length(x);for t=1:mans=0.0;z=x(t);for k=1:np=1.0;for q=1:nif q~=kp=p*(z-x0(q))/(x0(k)-x0(q));endendans=ans+p*y0(k);endy(t)=ans;fprintf('y(%d)=%f\n',t,y(t));endend结果为0.39447 0.38022 0.35722function [p,S,mu] = polyfit(x,y,n)if ~isequal(size(x),size(y))errorendx = x(:);y = y(:);if nargout > 2mu = [mean(x); std(x)];x = (x - mu(1))/mu(2);endV(:,n+1) = ones(length(x),1,class(x));for j = n:-1:1V(:,j) = x.*V(:,j+1);end[Q,R] = qr(V,0);ws = warning;p = R\(Q'*y); warning(ws);if size(R,2) > size(R,1)warning;elseif warnIfLargeConditionNumber(R)if nargout > 2warning;elsewarning;endendif nargout > 1r = y - V*p;S.R = R;S.df = max(0,length(y) - (n+1));S.normr = norm(r);endp = p.';function flag = warnIfLargeConditionNumber(R) if isa(R, 'double')flag = (condest(R) > 1e+10);elseflag = (condest(R) > 1e+05);endx=[1,3,4,5,6,7,8,9,10];y=[10,5,4,2,1,1,2,3,4];p=polyfit(x,y,2);y=poly2sym(p);a=-p(1)/p(2)*0.5;xa=-p(2)/(2*p(1));min=(4*p(1)*p(3)-p(2)^2)/(4*p(1)); yxamin运行截图运行结果function [I] = CombineTraprl(f,a,b,eps)if(nargin ==3)eps=1.0e-4;endn=1;h=(b-a)/2;I1=0;I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h; while abs(I2-I1)>epsn=n+1;h=(b-a)/n;I1=I2;I2=0;for i=0:n-1x=a+h*i;x1=x+h;I2=I2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym( f),findsym(sym(f)),x1));endendI=I2;程序:>> [q]=CombineTraprl('(1-exp(-x))^0.5/x'10^-12,1)结果:q =1.8521欧拉方法function [x,y]=euler(fun,x0,xfinal,y0,n);if nargin<5,n=50;endh=(xfinal-x0)/n;x(1)=x0;y(1)=y0;for i=1:nx(i+1)=x(i)+h;y(i+1)=y(i)+h*feval(fun,x(i),y(i));end程序:[x,y]=euler('doty',0,1,1,10)结果:改进欧拉方法function [x,y]=eulerpro(fun,x0,xfinal,y0,n); if nargin<5,n=50;endh=(xfinal-x0)/n;x(1)=x0;y(1)=y0;x(i+1)=x(i)+h;y1=y(i)+h*feval(fun,x(i),y(i));y2=y(i)+h*feval(fun,x(i+1),y1);y(i+1)=(y1+y2)/2;end程序:>> [x,y]=eulerpro('doty',0,1,1,10)结果:经典RK法function [x,y]=RungKutta4(dyfun,xspan,y0,h) x=xspan(1):h:xspan(2);y(1)=y0;for n=1:length(x)-1k1=feval(dyfun,x(n),y(n));k2=feval(dyfun,x(n)+h/2,y(n)+h/2*k1);k3=feval(dyfun,x(n)+h/2,y(n)+h/2*k2);k4=feval(dyfun,x(n+1),y(n)+h*k3);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6; end程序:dyfun=inline('(2*x*y^-2)/3');[x,y]=RungKutta4(dyfun,[0,1],1,0.1)标准函数x(1)=0;h=0.1;for i=1:10y(i)=(1+x(i)^2)^(1/3); endxY结果:。