当前位置:文档之家› 大连理工大学矩阵与数值研究分析上机作业

大连理工大学矩阵与数值研究分析上机作业

大连理工大学矩阵与数值研究分析上机作业
大连理工大学矩阵与数值研究分析上机作业

大连理工大学矩阵与数值分析上机作业

————————————————————————————————作者:————————————————————————————————日期:

矩阵与数值分析上机作业

学校:大连理工大学

学院:

班级:

姓名:

学号:

授课老师:注:编程语言Matlab

程序:

Norm.m函数

function s=Norm(x,m)

%求向量x的范数

%m取1,2,inf分别表示1,2,无穷范数n=length(x);

s=0;

switch m

case 1 %1-范数

for i=1:n

s=s+abs(x(i));

end

case 2 %2-范数

for i=1:n

s=s+x(i)^2;

end

s=sqrt(s);

case inf %无穷-范数

s=max(abs(x));

end

计算向量x,y的范数

Test1.m

clear all;

clc;

n1=10;n2=100;n3=1000;

x1=1./[1:n1]';x2=1./[1:n2]';x3=1./[1:n3]'; y1=[1:n1]';y2=[1:n2]';y3=[1:n3]';

disp('n=10时');

disp('x的1-范数:');disp(Norm(x1,1));

disp('x的2-范数:');disp(Norm(x1,2));

disp('x的无穷-范数:');disp(Norm(x1,inf));

disp('y的1-范数:');disp(Norm(y1,1));

disp('y的2-范数:');disp(Norm(y1,2));

disp('y的无穷-范数:');disp(Norm(y1,inf));

disp('n=100时');

disp('x的1-范数:');disp(Norm(x2,1));

disp('x的2-范数:');disp(Norm(x2,2));

disp('x的无穷-范数:');disp(Norm(x2,inf));

disp('y的1-范数:');disp(Norm(y2,1));

disp('y的2-范数:');disp(Norm(y2,2));

disp('y的无穷-范数:');disp(Norm(y2,inf));

disp('n=1000时');

disp('x的1-范数:');disp(Norm(x3,1));

disp('x的2-范数:');disp(Norm(x3,2));

disp('x的无穷-范数:');disp(Norm(x3,inf));

disp('y的1-范数:');disp(Norm(y3,1));

disp('y的2-范数:');disp(Norm(y3,2));

disp('y的无穷-范数:');disp(Norm(y3,inf));

运行结果:

n=10时

x的1-范数:2.9290;x的2-范数:1.2449; x的无穷-范数:1

y的1-范数:55; y的2-范数:19.6214; y的无穷-范数:10

n=100时

x的1-范数:5.1874;x的2-范数: 1.2787; x的无穷-范数:1

y的1-范数:5050; y的2-范数:581.6786; y的无穷-范数:100

n=1000时

x的1-范数:7.4855; x的2-范数:1.2822; x的无穷-范数:1

y的1-范数: 500500; y的2-范数:1.8271e+004;y的无穷-范数:1000

程序

Test2.m

clear all;

clc;

n=100;%区间

h=2*10^(-15)/n;%步长

x=-10^(-15):h:10^(-15);

%第一种原函数

f1=zeros(1,n+1);

for k=1:n+1

if x(k)~=0

f1(k)=log(1+x(k))/x(k);

else

f1(k)=1;

end

end

subplot(2,1,1);

plot(x,f1,'-r');

axis([-10^(-15),10^(-15),-1,2]); legend('原图');

%第二种算法

f2=zeros(1,n+1);

for k=1:n+1

d=1+x(k);

if(d~=1)

f2(k)=log(d)/(d-1);

else

f2(k)=1;

end

end

subplot(2,1,2);

plot(x,f2,'-r');

axis([-10^(-15),10^(-15),-1,2]); legend('第二种算法');

运行结果:

显然第二种算法结果不准确,是因为计算机中的舍入误差造成的,当]10,10[1515--∈x 时,

x d +=1,计算机进行舍入造成d 恒等于1,结果函数值恒为1。

程序:

秦九韶算法:QinJS.m

function y=QinJS(a,x) %y 输出函数值

%a 多项式系数,由高次到零次 %x 给定点 n=length(a); s=a(1); for i=2:n

s=s*x+a(i);

end

y=s;

计算p(x):test3.m

clear all;

clc;

x=1.6:0.2:2.4;%x=2的邻域

disp('x=2的邻域:');x

a=[1 -18 144 -672 2016 -4032 5376 -4608 2304 -512]; p=zeros(1,5);

for i=1:5

p(i)=QinJS(a,x(i));

end

disp('相应多项式p值:');p

xk=1.95:0.01:20.5;

nk=length(xk);

pk=zeros(1,nk);

k=1;

for k=1:nk

pk(k)=QinJS(a,xk(k));

end

plot(xk,pk,'-r');

xlabel('x');ylabel('p(x)');

东南大学数值分析上机题答案

数值分析上机题 第一章 17.(上机题)舍入误差与有效数 设∑=-= N j N j S 2 2 11 ,其精确值为)111-23(21+-N N 。 (1)编制按从大到小的顺序1 -1 ···1-311-21222N S N +++=,计算N S 的通用 程序; (2)编制按从小到大的顺序1 21 ···1)1(111 222-++--+ -=N N S N ,计算N S 的通用程序; (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时用单精度); (4)通过本上机题,你明白了什么? 解: 程序: (1)从大到小的顺序计算1 -1 ···1-311-21222N S N +++= : function sn1=fromlarge(n) %从大到小计算sn1 format long ; sn1=single(0); for m=2:1:n sn1=sn1+1/(m^2-1); end end (2)从小到大计算1 21 ···1)1(111 2 22 -++--+-= N N S N function sn2=fromsmall(n) %从小到大计算sn2 format long ; sn2=single(0); for m=n:-1:2 sn2=sn2+1/(m^2-1); end end (3) 总的编程程序为: function p203()

clear all format 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:n sn1=sn1+1/(m^2-1); end end function sn2=fromsmall(n) %从小到大计算sn2 format long; sn2=single(0); for m=n:-1:2 sn2=sn2+1/(m^2-1); end end end 运行结果:

Removed_大连理工大学工科数学分析上机作业

工科数学分析上机作业 说明:以下两道题均是使用Matlab 语言,且在Matlab 7.0中运行通过。 1.(两个重要极限)计算下列函数的函数值并画出图形,观察两个重要极限值。 (1)y=f(x)=; (2)y=f(x)=. sin x x (1+x)1x 解:(1)求解过程如下: >> syms x >> y=limit(sin(x)/x) y = 1 >> ezplot(sin(x)/x,[-10*pi,10*pi]) >> ezplot(sin(x)/x,[-1*pi,1*pi]) 其图形如下:

(2)求解过程如下:>> syms x >> y=(1+x)^(1/x)

y = (1+x)^(1/x) >> y=limit((1+x)^(1/x)) y = exp(1) >> ezplot((1+x)^(1/x),[-1000,1000]) >> ezplot((1+x)^(1/x),[-10,10]) >> ezplot((1+x)^(1/x),[-1,1]) 其图像如下:

分析如下:(1)当x 取值为[-30,30]时,由该题的第一个图像可以看到,函数值在不断震荡,一会为正数,一会为负数。

而当x 取值为[-3,3]时,函数值始终大于0。当x 趋近于0时,由该题的第二个图像可以得到函数值为1。 另外,该结论也可以由夹逼法则证明,结果不变,当x 趋近于0时,函数值仍为1。 (2)由该题的三个图像可以知道,该函数在定义域内为单调递减函数。且由该题的第一和二个图像知道,当x 在 [0,10]区间内,函数递减趋势非常迅速。由该题的第三个图像知道,当x 趋于0 时,函数值为自然对数的底数 e ,即约为2.71828. 3.计算f(x)=, 12+1√2π ∫x 0e ?t 2/2dt 1?x ?3的函数值{f (0.1k );k=1,2,…,30}.计算结果取7位有效数字。 解:计算过程为: >> f1= @(t) exp(-(t).^2/2) f1 = @(t) exp(-(t).^2/2) >> for i=1:30

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

2016年大连理工大学优化方法上机大作业

2016年理工大学优化方法上机大作业学院: 专业: 班级: 学号: : 上机大作业1: 1.最速下降法:

function f = fun(x) f = (1-x(1))^2 + 100*(x(2)-x(1)^2)^2; end function g = grad(x) g = zeros(2,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)^2-x(2)); g(2) = 200*(x(2)-x(1)^2); end

function x_star = steepest(x0,eps) gk = grad(x0); res = norm(gk); k = 0; while res > eps && k<=1000 dk = -gk; ak =1; f0 = fun(x0); f1 = fun(x0+ak*dk); slope = dot(gk,dk); while f1 > f0 + 0.1*ak*slope ak = ak/4; xk = x0 + ak*dk; f1 = fun(xk); end k = k+1; x0 = xk; gk = grad(xk); res = norm(gk); fprintf('--The %d-th iter, the residual is %f\n',k,res); end x_star = xk; end >> clear

>> x0=[0,0]'; >> eps=1e-4; >> x=steepest(x0,eps)

2.牛顿法: function f = fun(x) f = (1-x(1))^2 + 100*(x(2)-x(1)^2)^2; end function g = grad2(x) g = zeros(2,2);

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

大连理工大学优化方法上机大作业程序

函数定义: % 目标函数 function f = fun(x) fm=0; for i=1:499 fmi = (1-x(i))^2 + 100*(x(i+1)-x(i)^2)^2; fm=fm+fmi; end f =fm; end % 梯度 function g = grad(x) g = zeros(500,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)^2-x(2)); for i=2:499 g(i)=2*(x(i)-1)+400*x(i)*(x(i)^2-x(i+1))+200*(x(i)-x(i-1)^2); end g(500) = 200*(x(500)-x(499)^2); end % 二阶梯度

function g = grad2(x) g = zeros(500,500); g(1,1)=2+400*(3*x(1)^2-x(2)); g(1,2)=-400*x(1); for i=3:500 g(1,i)=0; end for i=1:498 g(500,i)=0; end g(500,499)=-400*x(499); g(500,500)=200; for i=2:499 for j=1:500 if j==i-1 g(i,j)= -400*x(i-1); elseif j==i g(i,j)= 2+400*(3*x(i)^2-x(i+1))+200; elseif j==i+1 g(i,j)= -400*x(i); else g(i,j)=0; end end end end 1.最速下降法 function x_star = steepest(x0,eps) gk = grad(x0); res = norm(gk); k = 0; while res > eps && k<=50000 dk = -gk;

大连理工大学09级矩阵与数值分析试题

大 连 理 工 大 学 课 程 名 称: 矩阵与数值分析 试 卷: 统一 考试类型 闭卷 授课院 (系): 数 学 系 考试日期:2010年1月12日 试卷共 8页 一、 填空与判断题(?或√),每空 2 分,共50分 (1) 已知2009.12a =,2010.01b =分别是按四舍五入原则得到的1x 和2x 近似值,那么,1x a -≤ ; 2x b b -≤ ;12x x ab -≤ 。 (2)[]0,1上权函 数()x x ρ=的正交多项式族中()1x φ= ; ()()1 5 350 x x x φ+=? 。 (3) 已知存在实数R 使曲线2y x =和()2 228y x R +-=相切。求切点横坐标近似值的Newton 迭代公式为 。 (4) 设1221?? ?-??A =,则它的奇异值为 。 (5)若取1101??=????A ,则1 d t e t =?A 。 (6) 若1

(8) 已知0.2510.25??= ?? ?A ,则0k k ∞ ==∑A 。 (9) 设,n ≠∈C s 0则 () 2 T =ss s,s 。 (10) 求解微分方程(0)2u t u u '=-??=?,的Euler 法公式为 ; 绝对稳定区间为 ;改进的Euler 公式为 。 (11) 用A (-2,-3.1)、B (-1,0.9)、C (0,1.0) 、D (1,3.1)、E (2,4.9)拟合一 直线s (x )=a +bx 的法方程组为: 。 (12) 已知多项式()3234321p x x x x =+++,那么求此多项式值的秦九韶算法公为:_ ______。 (13) 给定如下数据表 则均差[1,0,1f -= ,由数据构造出最简插值多项式 ()p x = 。 (14)设???? ? ? ?? +=231311a A ,当a 满足条件 时, A 必有唯一的T LL 分解(其中L 是对角元为正的下三角矩阵)。 (15) 求01)(=--=x e x f x 根的Newton 迭代法至少局部平方收敛 ( ) (16) 若A 为可逆矩阵,则求解A T Ax=b 的Gauss-Seidel 迭代法收敛 ( ) (17) 分段二点三次Hermite 插值多项式∈C 2函数类 ( ) (18) 如果A 为Hermite 矩阵,则A 的奇异值是A 的特征值 ( )

矩阵与数值分析上机实验题及程序

1.给定n 阶方程组Ax b =,其中 6186186186A ?? ? ? ?= ? ? ??? ,7151514b ?? ? ? ?= ? ? ??? 则方程组有解(1,1,,1)T x = 。对10n =和84n =,分别用Gauss 消去法和列主元消去法解方程组,并比较计算结果。 Gauss 消去法: Matlab 编程(建立GS.m 文件): function x=GS(n) A=[];b=[]; for i=1:n-1 A(i,i)=6; A(i,i+1)=1; A(i+1,i)=8; b(i)=15; end A(n,n)=6;b(1)=7;b(n)=14;b=b'; for k=1:n-1 for i=k+1:n m(i,k)=A(i,k)/A(k,k); A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n); b(i)=b(i)-m(i,k)*b(k); end end b(n)=b(n)/A(n,n); for i=n-1:-1:1 b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i); end clear x; x=b; disp( 'AX=b 的解x 是') end 计算结果: 在matlab 命令框里输出GS (10)得: >> GS(10) AX=b 的解x 是 ans = 1.0000 1.0000

1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 在matlab命令框里输出GS(84)得:>> GS(84) AX=b的解x是 ans = 1.0e+008 * 0.0000 … … … 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0001 0.0002 -0.0003 0.0007 -0.0013 0.0026 -0.0052 0.0105 -0.0209 0.0419 -0.0836 0.1665 -0.3303

大连理工大学数据结构(一)上机作业答案——张老师

1.将顺序表逆置,要求用最少的附加空间。 参考答案 #include #include #include #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int ElemType; typedef int Status; #define LIST_INIT_SIZE 100 #define LISTTINCREMENT 10 typedef struct{ ElemType *elem; int length; int listsize; }SqList; //创建空顺序表 Status InitList_Sq(SqList &L){ L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem)exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; } //创建顺序表,插入元素 void ListInput_Sq(SqList &L){ int n,i; printf("input the length of Sqlist:"); scanf("%d",&n); L.length=n; for(i=0;i

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

大连理工大学概率上机作业

第一次上机作业 1.利用Matlab自带命令产生1000个均匀随机变量服从U(0,1)。 >>unifrnd(0,1,20,50) ans= Columns1through10 0.81470.65570.43870.75130.35170.16220.10670.85300.78030.5470 0.90580.03570.38160.25510.83080.79430.96190.62210.38970.2963 0.12700.84910.76550.50600.58530.31120.00460.35100.24170.7447 0.91340.93400.79520.69910.54970.52850.77490.51320.40390.1890 0.63240.67870.18690.89090.91720.16560.81730.40180.09650.6868 0.09750.75770.48980.95930.28580.60200.86870.07600.13200.1835 0.27850.74310.44560.54720.75720.26300.08440.23990.94210.3685 0.54690.39220.64630.13860.75370.65410.39980.12330.95610.6256 0.95750.65550.70940.14930.38040.68920.25990.18390.57520.7802 0.96490.17120.75470.25750.56780.74820.80010.24000.05980.0811 0.15760.70600.27600.84070.07590.45050.43140.41730.23480.9294 0.97060.03180.67970.25430.05400.08380.91060.04970.35320.7757 0.95720.27690.65510.81430.53080.22900.18180.90270.82120.4868 0.48540.04620.16260.24350.77920.91330.26380.94480.01540.4359 0.80030.09710.11900.92930.93400.15240.14550.49090.04300.4468 0.14190.82350.49840.35000.12990.82580.13610.48930.16900.3063 0.42180.69480.95970.19660.56880.53830.86930.33770.64910.5085 0.91570.31710.34040.25110.46940.99610.57970.90010.73170.5108 0.79220.95020.58530.61600.01190.07820.54990.36920.64770.8176 0.95950.03440.22380.47330.33710.44270.14500.11120.45090.7948 Columns11through20 0.64430.31110.08550.03770.03050.05960.17340.95160.03260.2518 0.37860.92340.26250.88520.74410.68200.39090.92030.56120.2904 0.81160.43020.80100.91330.50000.04240.83140.05270.88190.6171 0.53280.18480.02920.79620.47990.07140.80340.73790.66920.2653 0.35070.90490.92890.09870.90470.52160.06050.26910.19040.8244 0.93900.97970.73030.26190.60990.09670.39930.42280.36890.9827 0.87590.43890.48860.33540.61770.81810.52690.54790.46070.7302

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

大连理工大学矩阵与数值分析2017年考题

大连理工大学2017年研究生矩阵与数值分析考试 考试日期:2017年6月5日 一、填空题(50分,每空2分) 1.a=0.3000经过四舍五入具有4位有效数字,则 x a a -≤,ln ln x a -≤ 2.已知X=(1,5,12)T ,Y=(1,0,a)T ,则由X 映射到Y 的Householder 矩阵为:,计算||H||2=,cond 2(H)= 3.根据3次样条函数的性质(后面-前面=a (x-x0)3),一个求其中的参数b== 4.2 '3u u t =,写出隐式Euler 格式: 梯形法格式: 5.已知A=XX T ,其中X 为n 维列向量,则||A||2=,||A||F =,矩阵序列的极限:2lim k k A A →∞?? ? ? ?? = 6.A=LU ,其解为x ,写出一步迭代后的改善格式: 7. 531A -?? ? = ? ?-?? ,请问通过幂法与反幂法计算出的特征值分别是, 8.1111A ?? ?= ? ??? ,sin A =,823A A A +-=,At e =,d d At e t =,2 1At e dt ?= 9. ()()()()2 1 2 012f x dx A f A f A f =++?是Newton-cotes 公式,则1 A =,具有代数精度= 10. f(x)=7x 7+6x 6+…+x ,f[20,21,22….,28]= 11. 0.40.200.5A ??= ???,1 k k A ∞=∑= 12.f(0)=1,f(1)=-1,f(2)=1,f(3)=19,请问对该节点进行插值后最高次的系数= 还有2空没有回忆出来,但是比上面题目还简单,因此不用担心。 二、121232352A -?? ?=-- ? ?--??,121b ?? ? = ? ?-?? (1)计算LU 分解 (2)利用LU 求逆矩阵 (3)写出G-S 格式(12分)

数值分析上机题参考答案.docx

如有帮助欢迎下载支持 数值分析上机题 姓名:陈作添 学号: 040816 习题 1 20.(上机题)舍入误差与有效数 N 1 1 3 1 1 设 S N ,其精确值为 。 2 2 2 N N 1 j 2 j 1 (1)编制按从大到小的顺序 1 1 1 ,计算 S 的通用程序。 S N 1 32 1 N 2 1 N 2 2 (2)编制按从小到大的顺序 1 1 1 ,计算 S 的通用程序。 S N 1 (N 1)2 1 22 1 N N 2 (3)按两种顺序分别计算 S 102 , S 104 , S 106 ,并指出有效位数。 (编制程序时用单精度) (4)通过本上机题,你明白了什么? 按从大到小的顺序计算 S N 的通用程序为: 按从小到大的顺序计算 S N 的通用程序为: #include #include float sum(float N) float sum(float N) { { float j,s,sum=0; float j,s,sum=0; for(j=2;j<=N;j++) for(j=N;j>=2;j--) { { s=1/(j*j-1); s=1/(j*j-1); sum+=s; sum+=s; } } return sum; return sum; } } 从大到小的顺序的值 从小到大的顺序的值 精确值 有效位数 从大到小 从小到大 0.740049 0.74005 0.740049 6 5 S 102 0.749852 0.7499 0.7499 4 4 S 104 0.749852 0.749999 0.749999 3 6 S 106 通过本上机题, 看出按两种不同的顺序计算的结果是不相同的, 按从大到小的顺序计算 的值与精确值有较大的误差, 而按从小到大的顺序计算的值与精确值吻合。 从大到小的顺序 计算得到的结果的有效位数少。 计算机在进行数值计算时会出现“大数吃小数”的现象,导 致计算结果的精度有所降低, 我们在计算机中进行同号数的加法时, 采用绝对值较小者先加 的算法,其结果的相对误差较小。

大连理工大学优化方法上机大作业

2016年大连理工大学优化 方法上机大作业 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

2016年大连理工大学优化方法上机大作业学院: 专业: 班级: 学号: 姓名: 上机大作业1: 1.最速下降法:

function f = fun(x) f = (1-x(1))^2 + 100*(x(2)-x(1)^2)^2; end function g = grad(x) g = zeros(2,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)^2-x(2)); g(2) = 200*(x(2)-x(1)^2); end function x_star = steepest(x0,eps) gk = grad(x0); res = norm(gk); k = 0; while res > eps && k<=1000 dk = -gk;

ak =1; f0 = fun(x0); f1 = fun(x0+ak*dk); slope = dot(gk,dk); while f1 > f0 + 0.1*ak*slope ak = ak/4; xk = x0 + ak*dk; f1 = fun(xk); end k = k+1; x0 = xk; gk = grad(xk); res = norm(gk); fprintf('--The %d-th iter, the residual is %f\n',k,res); end x_star = xk; end >> clear >> x0=[0,0]'; >> eps=1e-4; >> x=steepest(x0,eps)

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

矩阵与数值分析_大连理工大学2011试卷

2011级工科硕士研究生 《矩阵与数值分析》课程数值实验题目 一、 对于数列1111 1,,, ,,392781 ,有如下两种生成方式 1、首项为01a =,递推公式为11 ,1,2,3 n n a a n -== ; 2、前两项为011 1,3 a a ==,递推公式为1210,2,3,3n n n a a a n --=-= ; 给出利用上述两种递推公式生成的序列的第50项。 二、 利用迭代格式 1 0,1,2,k x k += = 及Aitken 加速后的新迭代格式求方程324100x x +-=在[1, 1.5]内的根 三、解线性方程组 1.分别Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组 12346212425027,208511 3270x x x x -?????? ? ? ? - ? ? ? = ? ? ? -- ? ? ? ???? ?? 迭代法计算停止的条件为:6)() 1(3 110max -+≤≤<-k j k j j x x . 2. 用Gauss 列主元消去法、QR 方法求解如下方程组: 1234221 2141312. 4201123 230x x x x ?????? ? ? ?- ? ? ? = ? ? ? -- ? ? ????? ?? 四、已知一组数据点,编写一程序求解三 次样条插值函数满足

并针对下面一组具体实验数据 求解,其中边界条件为. 五、编写程序构造区间上的以等分结点为插值结点的Newton插值公式,假设结点数为(包括两个端点),给定相应的函数值,插 值区间和等分的份数,该程序能快速计算出相应的插值公式。以 ,为例计算其对应的插值公式,分别取 不同的值并画出原函数的图像以及插值函数的图像,观察当增大 时的逼近效果. 实验须知: (1)所有的数值实验的题目要求用C语言或Matlab编程; (2)实验报告内容应包括问题、程序、计算结果及分析等; (3)12月26日前在本课程网站上提交实验报告; (4)本次实验成绩将占总成绩的10%。 (5)报告上要注明:所在教学班号、任课老师的姓名;报告人所在院系、学号。电子版提交到课程网站ftp://202.118.75.63/中各自老师目录下的homework文件夹内,文件名用学号命名。 《矩阵与数值分析》课程教学组 2011年11月30日

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

大连理工大学矩阵与数值分析上机作业

矩阵与数值分析上机作业 学校:大连理工大学 学院: 班级: 姓名: 学号: 授课老师:

注:编程语言Matlab 程序: Norm.m函数 function s=Norm(x,m) %求向量x的范数 %m取1,2,inf分别表示1,2,无穷范数 n=length(x); s=0; switch m case 1 %1-范数 for i=1:n s=s+abs(x(i)); end case 2 %2-范数 for i=1:n s=s+x(i)^2; end s=sqrt(s); case inf %无穷-范数 s=max(abs(x)); end 计算向量x,y的范数 Test1.m clear all; clc; n1=10;n2=100;n3=1000; x1=1./[1:n1]';x2=1./[1:n2]';x3=1./[1:n3]'; y1=[1:n1]';y2=[1:n2]';y3=[1:n3]'; disp('n=10时'); disp('x的1-范数:');disp(Norm(x1,1)); disp('x的2-范数:');disp(Norm(x1,2)); disp('x的无穷-范数:');disp(Norm(x1,inf)); disp('y的1-范数:');disp(Norm(y1,1)); disp('y的2-范数:');disp(Norm(y1,2)); disp('y的无穷-范数:');disp(Norm(y1,inf)); disp('n=100时'); disp('x的1-范数:');disp(Norm(x2,1));

disp('x的2-范数:');disp(Norm(x2,2)); disp('x的无穷-范数:');disp(Norm(x2,inf)); disp('y的1-范数:');disp(Norm(y2,1)); disp('y的2-范数:');disp(Norm(y2,2)); disp('y的无穷-范数:');disp(Norm(y2,inf)); disp('n=1000时'); disp('x的1-范数:');disp(Norm(x3,1)); disp('x的2-范数:');disp(Norm(x3,2)); disp('x的无穷-范数:');disp(Norm(x3,inf)); disp('y的1-范数:');disp(Norm(y3,1)); disp('y的2-范数:');disp(Norm(y3,2)); disp('y的无穷-范数:');disp(Norm(y3,inf)); 运行结果: n=10时 x的1-范数:2.9290;x的2-范数:1.2449; x的无穷-范数:1 y的1-范数:55; y的2-范数:19.6214; y的无穷-范数:10 n=100时 x的1-范数:5.1874;x的2-范数: 1.2787; x的无穷-范数:1 y的1-范数:5050; y的2-范数:581.6786; y的无穷-范数:100 n=1000时 x的1-范数:7.4855; x的2-范数:1.2822; x的无穷-范数:1 y的1-范数: 500500; y的2-范数:1.8271e+004;y的无穷-范数:1000 程序 Test2.m clear all; clc; n=100;%区间 h=2*10^(-15)/n;%步长 x=-10^(-15):h:10^(-15); %第一种原函数

相关主题
文本预览
相关文档 最新文档