上海大学课程实验报告-数值代数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程实验报告

COURSE PAPER

课程名称:数值代数与计算方法

课程号:08305114

授课教师:

学号:

姓名:

所属:计算机科学与工程

打印时间:2015

评语:

题目一:

算法:

1、对于问题一:

2、对于问题二:

直接编写递归函数程序,算出三个差分方程的10个近似值程序:

1)

%main.m

clc;

clear all;

a=1;

b=-2;

c=-3;

[x1,x2]=roots(a,b,c)

%roots.m

function [x1,x2]=roots(a,b,c)

d=sqrt(b*b-4*a*c);

if d>0

x1=(-2*c)/(b+d);

x2=(-b-d)/(2*a);

elseif d<0

x1=(-b+d)/(2*a);

x2=(-2*c)/(b-d);

end

2)

%solu.m

function [X,R,P,Q]=solu(X0,R0,P0,P1,Q0,Q1) X(1)=X0;

R(1)=R0;

P(1)=P0;

P(2)=P1;

Q(1)=Q0;

Q(2)=Q1;

for i=1:9

X(i+1)=X(i)/2;

X(i)=X(i+1);

end

for i=1:9

R(i+1)=R(i)/2;

R(i)=R(i+1);

end

for i=3:10

P(i)=3/2*P(i-1)-1/2*P(i-2);

P(i-1)=P(i);

P(i-2)=P(i-1);

end

for i=3:10

Q(i)=5/2*Q(i-1)-Q(i-2);

Q(i-1)=Q(i);

Q(i-2)=Q(i-1);

end

%Xn.m

clc;

clear all;

X0=1;

R0=0.994;

P0=1;

P1=0.497;

Q0=1;

Q1=0.497;

[X,R,P,Q]=solu(X0,R0,P0,P1,Q0,Q1);

for i=1:10

x(i)=i;

end

plot(x,X-R,'r*');

hold on

结果:

1)

x1 =

3

x2 =

-1

2)

题目二:

1、

此题我们以第一个式子为例,求出

g(Xn+1)= (2/(2+3*Xn-Xn.^3))^(1/2)

2、利用二分法:

3、利用牛顿迭代法,并根据题目提示的立方根算法:

此题我们以第三个式子为例:,设A=71/3 ,求出x的3次方便是近似值。

1、

%fixpt.m

function [k,p,err,P]=fixpt(p0,tol,max1)

P(1)=p0;

for k=2:max1

P(k)=g(P(k-1));

err=abs(P(k)-P(k-1));

relerr=err/(abs(P(k))+eps);

p=P(k);

if (err

break;

end

end

if k==max1

disp('maximum number of iterations exceeded')

end

P=P';

%g.m

function y=g(x)

y=sqrt(2/(2+3*x-x.^3));

%iteration.m

clc;

clear all;

p0=0.5;

tol=1.0e-9;

max1=20;

[k,p,err,P]=fixpt(p0,tol,max1);

2、

二分法:

%bisect.m

function [c,err,yc,k,an,cn,bn,ycn]=bisect(a,b,delta) ya=f(a);

yb=f(b);

an(1)=a;

bn(1)=b;

if ya*yb>0

disp('No Root in this district!');

end

max1=1+round((log(b-a)-log(delta))/log(2));

for k=1:max1

c=(a+b)/2;

cn(k)=c;

yc=f(c);

ycn(k)=yc;

if yc==0

a=c;

an(k+1)=a;

b=c;

bn(k+1)=b;

elseif yb*yc>0

b=c;

bn(k+1)=b;

yb=yc;

else

a=c;

an(k+1)=a;

ya=yc;

end

if b-a

break;

end

end

c=(a+b)/2;

cn(max1)=c;

err=abs(b-a);

yc=f(c);

ycn(max1)=yc;

for i=1:9

k(i)=i-1;

end

%f.m

function h=f(x)

h=x*sin(x)-1;

%main.m

clc;

clear all;

a=0;

b=2;

delta=0.000001;

[c,err,yc,k,an,cn,bn,ycn]=bisect(a,b,delta);

相关文档
最新文档