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

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

矩阵与数值分析上机作业

学校:大连理工大学

学院:

班级:

姓名:

学号:

授课老师:

注:编程语言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)');

运行结果:

x=2的邻域:

x =

1.6000 1.8000

2.0000 2.2000 2.4000

相应多项式p值:

p =

1.0e-003 *

-0.2621 -0.0005 0 0.0005 0.2621 p(x)在 x[1.95,20.5]上的图像

程序:

LU分解,LUDecom.m

function [L,U]=LUDecom(A)

%不带列主元的LU分解

N = size(A);

n = N(1);

L=eye(n);U=zeros(n);

for i=1:n

U(1,i)=A(1,i);L(i,1)=A(i,1)/U(1,1); end

for i=2:n

for j=i:n

z=0;

for k=1:i-1

z=z+L(i,k)*U(k,j);

end

U(i,j)=A(i,j)-z;

end

for j=i+1:n

z=0;

for k=1:i-1

z=z+L(j,k)*U(k,i);

end

L(j,i)=(A(j,i)-z)/U(i,i);

end

end

PLU分解,PLUDecom.m

function [P,L,U] =PLUDecom(A)

%带列主元的LU分解

[m,m]=size(A);

U=A;

P=eye(m);

L=eye(m);

for i=1:m

for j=i:m

t(j)=U(j,i);

for k=1:i-1

t(j)=t(j)-U(j,k)*U(k,i);

end

end

a=i;b=abs(t(i));

for j=i+1:m

if b

b=abs(t(j));

a=j;

end

end

if a~=i

for j=1:m

c=U(i,j);

U(i,j)=U(a,j);

U(a,j)=c;

end

for j=1:m

c=P(i,j);

P(i,j)=P(a,j);

P(a,j)=c;

end

c=t(a);

t(a)=t(i);

t(i)=c;

end

U(i,i)=t(i);

for j=i+1:m

U(j,i)=t(j)/t(i);

end

for j=i+1:m

for k=1:i-1

U(i,j)=U(i,j)-U(i,k)*U(k,j); end

end

end

L=tril(U,-1)+eye(m);

U=triu(U,0);

(1)(2)程序:

Test4.m

clear all;

clc;

for n=5:30

x=zeros(n,1);

A=-ones(n);

A(:,n)=ones(n,1);

for i=1:n

A(i,i)=1;

for j=(i+1):(n-1)

A(i,j)=0;

end

x(i)=1/i;

end

disp('当n=');disp(n);

disp('方程精确解:');

x

b=A*x; %系数b

disp('利用LU分解方程组的解:');

[L,U]=LUDecom(A); %LU分解

xLU=U\(L\b)

disp('利用PLU分解方程组的解:');

[P,L,U] =PLUDecom(A); %PLU分解

xPLU=U\(L\(P\b))

%求解A的逆矩阵

disp('A的准确逆矩阵:');

InvA=inv(A)

InvAL=zeros(n); %利用LU分解求A的逆矩阵 I=eye(n);

for i=1:n

InvAL(:,i)=U\(L\I(:,i));

end

disp('利用LU分解的A的逆矩阵:');

InvAL

End

运行结果:

(1)只列出n=5,6,7的结果

当n= 5

方程精确解:

x =1.0000

0.5000

0.3333

0.2500

0.2000

利用LU分解方程组的解:

xLU =

1.0000

0.5000

0.3333

0.2500

0.2000

利用PLU分解方程组的解:

xPLU =

0.5000

0.3333

0.2500

0.2000

当n=6

方程精确解:

x =

1.0000

0.5000

0.3333

0.2500

0.2000

0.1667

利用LU分解方程组的解: xLU =

1.0000

0.5000

0.3333

0.2500

0.2000

0.1667

利用PLU分解方程组的解: xPLU =

1.0000

0.5000

0.3333

0.2500

0.2000

0.1667

当n= 7

方程精确解:

x =

1.0000

0.5000

0.3333

0.2500

0.2000

0.1667

0.1429

利用LU分解方程组的解: xLU =

1.0000

0.5000

0.2500

0.2000

0.1667

0.1429

利用PLU分解方程组的解:

xPLU =

1.0000

0.5000

0.3333

0.2500

0.2000

0.1667

0.1429

(2)只列出n=5,6,7时A的逆矩阵的结果

当n= 5

A的准确逆矩阵:

InvA =

0.5000 -0.2500 -0.1250 -0.0625 -0.0625

0 0.5000 -0.2500 -0.1250 -0.1250

0 0 0.5000 -0.2500 -0.2500

0 0 0 0.5000 -0.5000

0.5000 0.2500 0.1250 0.0625 0.0625

利用LU分解的A的逆矩阵:

InvAL =

0.5000 -0.2500 -0.1250 -0.0625 -0.0625

0 0.5000 -0.2500 -0.1250 -0.1250

0 0 0.5000 -0.2500 -0.2500

0 0 0 0.5000 -0.5000

0.5000 0.2500 0.1250 0.0625 0.0625

当n= 6

A的准确逆矩阵:

InvA =

0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0313 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0625 0 0 0.5000 -0.2500 -0.1250 -0.1250 0 0 0 0.5000 -0.2500 -0.2500 0 0 0 0 0.5000 -0.5000 0.5000 0.2500 0.1250 0.0625 0.0313 0.0313 利用LU分解的A的逆矩阵:

InvAL =

0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0313

0 0.5000 -0.2500 -0.1250 -0.0625 -0.0625

0 0 0.5000 -0.2500 -0.1250 -0.1250

0 0 0 0.5000 -0.2500 -0.2500

0 0 0 0 0.5000 -0.5000

0.5000 0.2500 0.1250 0.0625 0.0313 0.0313

当n= 7

A的准确逆矩阵:

InvA =

0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0156 -0.0156 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0313 0 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0625 0 0 0 0.5000 -0.2500 -0.1250 -0.1250 0 0 0 0 0.5000 -0.2500 -0.2500 0 0 0 0 0 0.5000 -0.5000 0.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.0156

利用LU分解的A的逆矩阵:

InvAL =

0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0156 -0.0156 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0313 0 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0625 0 0 0 0.5000 -0.2500 -0.1250 -0.1250 0 0 0 0 0.5000 -0.2500 -0.2500 0 0 0 0 0 0.5000 -0.5000

0.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.0156

程序:

Cholesky分解:Cholesky.m

function L=Cholesky(A)

N = size(A);

n = N(1);

L=zeros(n);

L(1,1)=sqrt(A(1,1));

for i=2:n

L(i,1)=A(i,1)/L(1,1);

end

for j=2:n

s1=0;

for k=1:j-1

s1=s1+L(j,k)^2;

end

L(j,j)=sqrt(A(j,j)-s1);

for i=j+1:n

s2=0;

for k=1:j-1

s2=s2+L(i,k)*L(j,k);

end

L(i,j)=(A(i,j)-s2)/L(j,j);

end

end

计算Ax=b;Test5.m

clear all;clc;

for n=10:20

A=zeros(n,n);

b=zeros(n,1);

for i=1:n

for j=1:n

A(i,j)=1/(i+j-1);

end

b(i,1)=i;

end

disp('n=');disp(n);

disp('方程组原始解');x0=A\b

disp('利用Cholesky分解的方程组的解'); L=Cholesky(A)

x=L'\(L\b)

end

运行结果:

只列出了n=10,11的结果

n=10

方程组原始解

x0 =

1.0e+008 *

-0.0000

0.0010

-0.0233

0.2330

-1.2108

3.5947

-6.3233

6.5114

-3.6233

0.8407

利用Cholesky分解的方程组的解x =

1.0e+008 *

-0.0000

0.0010

-0.0233

0.2330

-1.2105

3.5939

-6.3219

6.5100

-3.6225

0.8405

n=

11

方程组原始解

x0 =

1.0e+009 *

0.0000

-0.0002

0.0046

-0.0567

0.3687

-1.4039

3.2863

-4.7869

4.2260

-2.0685

0.4305

利用Cholesky分解的方程组的解x =

1.0e+009 *

0.0000

-0.0002

0.0046

-0.0563

0.3668

-1.3972

3.2716

-4.7669

4.2094

-2.0608

0.4290

程序:

(1)House.m

function u=House(x)

n=length(x);

e1=eye(n,1);

w=x-norm(x,2)*e1;

u=w/norm(w,2);

(2)Hou_A.m

function HA=Hou_A(A)

a1=A(:,1);

n=length(a1);

e1=eye(n,1);

w=a1-norm(a1,2)*e1;

u=w/norm(w,2);

H=eye(n)-2*u*u'

HA=H*A;

(3)test6.m

clear all;

clc;

A=[1 2 3 4;

-1 2 sqrt(2) sqrt(3);

-2 2 exp(1) pi;

-sqrt(10) 2 -3 7;

0 2 7 5/2];

HA=Hou_A(A)

运行结果:

H =

0.2500 -0.2500 -0.5000 -0.7906 0 -0.2500 0.9167 -0.1667 -0.2635 0 -0.5000 -0.1667 0.6667 -0.5270 0 -0.7906 -0.2635 -0.5270 0.1667 0

0 0 0 0 1.0000 HA =

4.0000 -2.5811 1.4090 -6.5378

0.0000 0.4730 0.8839 -1.7805

0.0000 -1.0541 1.6576 -3.8836

0.0000 -2.8289 -4.6770 -4.1078

0 2.0000 7.0000 2.5000

程序:

Jacobi迭代:Jaccobi.m

function [x,n]=Jaccobi(A,b,x0)

%--·方程组系数阵A

%--·方程组右端顶b

%-- 初始值x0

%--求解要求精确度eps

%--迭代步数控制M

%--·返回求得的解x

%--·返回迭代步数n

M=1000;

eps=1.0e-5;

D=diag(diag(A)); %求A的对角矩阵

L=-tril(A,-1); %求A的下三角阵

U=-triu(A,1); %求A的上三角阵

J=D\(L+U);

f=D\b;

x=J*x0+f

n=1; %迭代次数

err=norm(x-x0,inf)

while(err>=eps)

x0=x;

x=J*x0+f

n=n+1;

err=norm(x-x0,inf)

if(n>=M)

disp('Warning: 迭代次数太多,可能不收敛?'); return;

end

end

Gauss_Seidel迭代:Gauss_Seidel.m

function [x,n]=Gauss_Seidel(A,b,x0)

%--Gauss-Seidel迭代法解线性方程组

%--方程组系数阵 A

%--方程组右端项 b

%--初始值 x0

%--求解要求的精确度 eps

%--迭代步数控制 M

%--返回求得的解 x

%--返回迭代步数 n

eps=1.0e-5;

M=10000;

D=diag(diag(A)); %求A的对角矩阵

L=-tril(A,-1); %求A的下三角阵

U=-triu(A,1); %求A的上三角阵

G=(D-L)\U;

f=(D-L)\b;

x=G*x0+f

n=1; %迭代次数

err=norm(x-x0,inf)

while(err>=eps)

x0=x;

x=G*x0+f

n=n+1;

err=norm(x-x0,inf)

if(n>=M)

disp('Warning: 迭代次数太多,可能不收敛!'); return;

end

end

解方程组,test7.m

clear all;

clc;

A=[5 -1 -3;

-1 2 4;

-3 4 15];

b=[-2;1;10];

disp('精确解');

x=A\b

disp('迭代初始值');

x0=[0;0;0]

disp('Jacobi迭代过程:');

[xj,nj]=Jaccobi(A,b,x0);

disp('Jacobi最终迭代结果:');

xj

disp('迭代次数');

nj

disp('Gauss-Seidel迭代过程:'); [xg,ng]=Gauss_Seidel(A,b,x0);

disp('Gauss-Seidel最终迭代结果:'); xg

disp('迭代次数');

ng

运行结果:

精确解

x =

-0.0820

-1.8033

1.1311

迭代初始值

x0 =

Jacobi迭代过程:

x =

-0.4000

0.5000

0.6667

err =

0.6667

x =

0.1000

-1.0333

0.4533

err =

1.5333

...

x =

-0.0820

-1.8033

1.1311

err =

9.6603e-006

Jacobi最终迭代结果:

xj =

-0.0820

-1.8033

1.1311

迭代次数

nj =

281

Gauss-Seidel迭代过程:

x =

-0.4000

0.3000

0.5067

err =

0.5067

x =

-0.0360

-0.5313

0.8012

err =

0.8313

x =

-0.0256

-1.1151

0.9589

err =

0.5838

...

x =

-0.0820

-1.8033

1.1311

err =

9.4021e-006

Gauss-Seidel最终迭代结果:xg =

-0.0820

-1.8033

1.1311

迭代次数

ng =

20

程序:

Newton迭代法:Newtoniter.m

function [x,iter,fvalue]=Newtoniter(f,df,x0,eps,maxiter) %牛顿法 x得到的近似解

%iter迭代次数

%fvalue函数在x处的值

%f,df被求的非线性方程及导函数

%x0初始值

%eps 允许误差限

%maxiter 最大迭代次数

fvalue=subs(f,x0);dfvalue=subs(df,x0);

for iter=1:maxiter

x=x0-fvalue/dfvalue

err=abs(x-x0)

x0=x;

fvalue=subs(f,x0)

dfvalue=subs(df,x0);

if(err

end

弦截法:secant.m

function [x,iter,fvalue]=secant(f,x0,x1,eps,maxiter)

%弦截法 x得到的近似解

%iter迭代次数

%fvalue函数在x处的值

%f被求的非线性方程

%x0,x1初始值

%eps 允许误差限

%maxiter 最大迭代次数

fvalue0=subs(f,x0);fvalue=subs(f,x1);

for iter=1:maxiter

x=x1-fvalue*(x1-x0)/(fvalue-fvalue0)

err=abs(x-x1)

x0=x1;x1=x;

fvalue0=subs(f,x0);fvalue=subs(f,x1)

if(err

end

求方程的实根:test8.m

clear all;

clc;

syms x

数值分析上机作业

数值分析上机实验报告 选题:曲线拟合的最小二乘法 指导老师: 专业: 学号: 姓名:

课题八曲线拟合的最小二乘法 一、问题提出 从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y 与时间t 的拟合曲线。 二、要求 1、用最小二乘法进行曲线拟合; 2、近似解析表达式为()33221t a t a t a t ++=?; 3、打印出拟合函数()t ?,并打印出()j t ?与()j t y 的误差,12,,2,1 =j ; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、*绘制出曲线拟合图*。 三、目的和意义 1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系。 四、计算公式 对于给定的测量数据(x i ,f i )(i=1,2,…,n ),设函数分布为 ∑==m j j j x a x y 0)()(? 特别的,取)(x j ?为多项式 j j x x =)(? (j=0, 1,…,m )

则根据最小二乘法原理,可以构造泛函 ∑∑==-=n i m j i j j i m x a f a a a H 1 10))((),,,(? 令 0=??k a H (k=0, 1,…,m ) 则可以得到法方程 ???? ??????? ?=????????????????????????),(),(),(),(),(),(),(),(),(),(),(),(1010101111000100m m m m m m m m f f f a a a ????????????????????? 求该解方程组,则可以得到解m a a a ,,,10 ,因此可得到数据的最小二乘解 ∑=≈m j j j x a x f 0)()(? 曲线拟合:实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。 五、结构程序设计 在程序结构方面主要是按照顺序结构进行设计,在进行曲线的拟合时,为了进行比较,在程序设计中,直接调用了最小二乘法的拟合函数polyfit ,并且依次调用了plot 、figure 、hold on 函数进行图象的绘制,最后调用了一个绝对值函数abs 用于计算拟合函数与原有数据的误差,进行拟合效果的比较。

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

数值分析上机作业

昆明理工大学工科研究生《数值分析》上机实验 学院:材料科学与工程学院 专业:材料物理与化学 学号:2011230024 姓名: 郑录 任课教师:胡杰

P277-E1 1.已知矩阵A= 10787 7565 86109 75910 ?? ?? ?? ?? ?? ??,B= 23456 44567 03678 00289 00010 ?? ?? ?? ?? ?? ?? ?? ?? ,错误!未找到引用源。 = 11/21/31/41/51/6 1/21/31/41/51/61/7 1/31/41/51/61/71/8 1/41/51/61/71/81/9 1/51/61/71/81/91/10 1/61/71/81/91/101/11?????????????????? (1)用MA TLAB函数“eig”求矩阵全部特征值。 (2)用基本QR算法求全部特征值(可用MA TLAB函数“qr”实现矩阵的QR分解)。解:MA TLAB程序如下: 求矩阵A的特征值: clear; A=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10]; E=eig(A) 输出结果: 求矩阵B的特征值: clear; B=[2 3 4 5 6;4 4 5 6 7;0 3 6 7 8;0 0 2 8 9;0 0 0 1 0]; E=eig(B) 输出结果:

求矩阵错误!未找到引用源。的特征值: clear; 错误!未找到引用源。=[1 1/2 1/3 1/4 1/5 1/6; 1/2 1/3 1/4 1/5 1/6 1/7; 1/3 1/4 1/5 1/6 1/7 1/8; 1/4 1/5 1/6 1/7 1/8 1/9;1/5 1/6 1/7 1/8 1/9 1/10; 1/6 1/7 1/8 1/9 1/10 1/11]; E=eig(错误!未找到引用源。) 输出结果: (2)A= 10 7877565861097 5 9 10 第一步:A0=hess(A);[Q0,R0]=qr(A0);A1=R0*Q0 返回得到: 第二部:[Q1,R1]=qr(A1);A2=R1*Q1

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);

数值分析上机题课后作业全部-东南大学

2015.1.9 上机作业题报告 USER

1.Chapter1 1.1题目 设S N = 1 j 2?1 N j =2 ,其精确值为 )1 1123(21+--N N 。 (1)编制按从大到小的顺序1 1 1311212 22-+??+-+-=N S N ,计算S N 的通用程序。 (2)编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-= N N S N ,计算S N 的通用程序。 (3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) (4)通过本次上机题,你明白了什么? 1.2程序 1.3运行结果

1.4结果分析 按从大到小的顺序,有效位数分别为:6,4,3。 按从小到大的顺序,有效位数分别为:5,6,6。 可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。当采用从大到小的顺序累加的算法时,误差限随着N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。因此,采取从小到大的顺序累加得到的结果更加精确。 2.Chapter2 2.1题目 (1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。 (2)给定方程03 )(3 =-=x x x f ,易知其有三个根3,0,3321= *=*-=*x x x ○1由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收敛于根x2*。试确定尽可能大的δ。 ○2试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。 (3)通过本上机题,你明白了什么? 2.2程序

东南大学数值分析上机作业汇总

东南大学数值分析上机作业 汇总 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

数值分析上机报告 院系: 学号: 姓名:

目录 作业1、舍入误差与有效数 (1) 1、函数文件cxdd.m (1) 2、函数文件cddx.m (1) 3、两种方法有效位数对比 (1) 4、心得 (2) 作业2、Newton迭代法 (2) 1、通用程序函数文件 (3) 2、局部收敛性 (4) (1)最大δ值文件 (4) (2)验证局部收敛性 (4) 3、心得 (6) 作业3、列主元素Gauss消去法 (7) 1、列主元Gauss消去法的通用程序 (7) 2、解题中线性方程组 (7) 3、心得 (9) 作业4、三次样条插值函数 (10) 1、第一型三次样条插值函数通用程序: (10) 2、数据输入及计算结果 (12)

作业1、舍入误差与有效数 设∑ =-=N j N j S 2 2 11 ,其精确值为?? ? ??---1112321N N . (1)编制按从小到大的顺序1 1 131121222-? ??+-+-=N S N ,计算N S 的通用程序; (2)编制按从大到小的顺序()1 21 11111222-???+--+-=N N S N ,计算N S 的通用程序; (3)按两种顺序分别计算642101010,,S S S ,并指出有效位数; (4)通过本上机你明白了什么? 程序: 1、函数文件cxdd.m function S=cxdd(N) S=0; i=2.0; while (i<=N) S=S+1.0/(i*i-1); i=i+1; end script 运行结果(省略>>): S=cxdd(80) S= 0.737577 2、函数文件cddx.m function S=cddx (N) S=0; for i=N:-1:2 S=S+1/(i*i-1); end script 运行结果(省略>>): S=cddx(80) S= 0.737577 3、两种方法有效位数对比

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

函数定义: % 目标函数 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;

数值分析作业思考题汇总

¥ 数值分析思考题1 1、讨论绝对误差(限)、相对误差(限)与有效数字之间的关系。 2、相对误差在什么情况下可以用下式代替 3、查阅何谓问题的“病态性”,并区分与“数值稳定性”的不同点。 4、取 ,计算 ,下列方法中哪种最好为什么(1)(3 3-,(2)(2 7-,(3) ()3 1 3+ ,(4) ()6 1 1 ,(5)99- , 数值实验 数值实验综述:线性代数方程组的解法是一切科学计算的基础与核心问题。求解方法大致可分为直接法和迭代法两大类。直接法——指在没有舍入误差的情况下经过有限次运算可求得方程组的精确解的方法,因此也称为精确法。当系数矩阵是方的、稠密的、无任何特殊结构的中小规模线性方程组时,Gauss消去法是目前最基本和常用的方法。如若系数矩阵具有某种特殊形式,则为了尽可能地减少计算量与存储量,需采用其他专门的方法来求解。 Gauss消去等同于矩阵的三角分解,但它存在潜在的不稳定性,故需要选主元素。对正定对称矩阵,采用平方根方法无需选主元。方程组的性态与方程组的条件数有关,对于病态的方程组必须采用特殊的方法进行求解。 数值计算方法上机题目1 1、实验1. 病态问题 实验目的: 算法有“优”与“劣”之分,问题也有“好”和“坏”之别。所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。希望读者通过本实验对此有一个初步的体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 $ r e x x e x x ** * ** - == 141 . ≈)61

大连理工大学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 的特征值 ( )

Matlab作业3(数值分析)答案

Matlab作业3(数值分析) 机电工程学院(院、系)专业班组 学号姓名实验日期教师评定 1.计算多项式乘法(x2+2x+2)(x2+5x+4)。 答: 2. (1)将(x-6)(x-3)(x-8)展开为系数多项式的形式。(2)求解在x=8时多项 式(x-1)(x-2) (x-3)(x-4)的值。 答:(1) (2)

3. y=sin(x),x从0到2π,?x=0.02π,求y的最大值、最小值、均值和标准差。 4.设x=[0.00.30.8 1.1 1.6 2.3]',y=[0.500.82 1.14 1.25 1.35 1.40]',试求二次多项式拟合系数,并据此计算x1=[0.9 1.2]时对应的y1。解:x=[0.0 0.3 0.8 1.1 1.6 2.3]'; %输入变量数据x y=[0.50 0.82 1.14 1.25 1.35 1.40]'; %输入变量数据y p=polyfit(x,y,2) %对x,y用二次多项式拟合,得到系数p x1=[0.9 1.2]; %输入点x1 y1=polyval(p,x1) %估计x1处对应的y1 p = -0.2387 0.9191 0.5318 y1 = a) 1.2909

5.实验数据处理:已知某压力传感器的测试数据如下表 p为压力值,u为电压值,试用多项式 d cp bp ap p u+ + + =2 3 ) ( 来拟 合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。解: >> p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9]; u=[10,11,13,14,17,18,22,24,29,34,39]; x=polyfit(p,u,3) %得多项式系数 t=linspace(0,10,100); y=polyval(x,t); %求多项式得值 plot(p,u,'*',t,y,'r') %画拟和曲线 x = 0.0195 -0.0412 1.4469 9.8267

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

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 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-=Λ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

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

第一次上机作业 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

大连理工大学矩阵与数值分析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分)

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

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-1

数值计算方法上机题目1 1、实验1. 病态问题 实验目的: 算法有“优”与“劣”之分,问题也有“好”和“坏”之别。所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。希望读者通过本实验对此有一个初步的体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出: 考虑一个高次的代数多项式 ∏=-= ---=20 1)()20)...(2)(1()(k k x x x x x p (E1-1) 显然该多项式的全部根为l ,2,…,20,共计20个,且每个根都是单重的(也称为简 单的)。现考虑该多项式方程的一个扰动 0)(19 =+x x p ε (E1-2) 其中ε是一个非常小的数。这相当于是对(E1-1)中19 x 的系数作一个小的扰动。我们希望比较(E1-1)和(E1-2)根的差别,从而分析方程(E1-1)的解对扰动的敏感性。 实验内容: 为了实现方便,我们先介绍两个 Matlab 函数:“roots ”和“poly ”,输入函数 u =roots (a ) 其中若变量a 存储1+n 维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,...,,+n a a a ,则输出u 的各分量是多项式方程 0...1121=++++-n n n n a x a x a x a 的全部根,而函数 b=poly(v) 的输出b 是一个n +1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“Poly ”是两个互逆的运算函数. ve=zeros(1,21); ve(2)=ess; roots(poly(1:20))+ve) 上述简单的Matlab 程序便得到(E1-2)的全部根,程序中的“ess ”即是(E1-2)中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数ε很小,我们自然感觉(E1-1)和(E1-2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何? (2)将方程(E1-2)中的扰动项改成18 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日

数值分析作业

第二章 1. 题目:运用MATLAB编程实现牛顿迭代 2. 实验操作 1、打开MATLAB程序软件。 2、在MATLAB中编辑如下的M程序。 function [p1,err,k,y]=newton(f,df,p0,delta,max) %f 是要求根的方程(f(x)=0); %df 是f(x)的导数; %p0是所给初值,位于x*附近; %delta是给定允许误差; %max是迭代的最大次数; %p1是newton法求得的方程的近似解; %err是p0的误差估计; %k是迭代次数; p0 for k=1:max p1=p0-feval('f',p0)/feval('df',p0); err=abs(p1-p0); p0=p1; k p1 err y=feval('f',p1) if (err> newton('f','df',1.2,10^(-6),20) 3.实验结果

p0 = 1.2000 k =1 p1=1.1030 err=0.0970 y=0.0329 k= 2 p1=1.0524 err=0.0507 y=0.0084 k =3 p1=1.0264 err=0.0260 y=0.0021 k =4 p1=1.0133 err=0.0131 y=5.2963e-004 k =5 p1=1.0066 err=0.0066 y=1.3270e-004 k =6 p1=1.0033 err=0.0033 y=3.3211e-005 k =7 p1=1.0017 err=0.0017 y=8.3074e-006 k =8 p1=1.0008 err=8.3157e-004 y = 2.0774e-006 k =9 p1=1.0004 err=4.1596e-004 y =5.1943e-007 k=10 p1=1.0002 err=2.0802e-004 y= 1.2987e-007 k=11 p1=1.0001 err=1.0402e-004 y =3.2468e-008 k=12 p1=1.0001 err=5.2014e-005 y=8.1170e-009 k=13 p1=1.0000 err=2.6008e-005 y= 2.0293e-009 k=14 p1=1.0000 err=1.3004e-005 y=5.0732e-010 k=15 p1 =1.0000 err=6.5020e-006 y=1.2683e-010 k=16 p1 =1.0000 err=3.2510e-006 y=3.1708e-011 k=17 p1 =1.0000 err=1.6255e-006 y =7.9272e-012 k=18 p1 =1.0000 err =8.1279e-007 y= 1.9820e-012 ans = 1.0000 结果说明:经过18次迭代得到精确解为1,误差为8.1279e-007。

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

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

注:编程语言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); %第一种原函数

相关文档
最新文档