数值分析Matlab作业

  • 格式:doc
  • 大小:377.50 KB
  • 文档页数:18

下载文档原格式

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

数值分析编程作业

2012年12月

第二章

14.考虑梯形电阻电路的设计,电路如下:

电路中的各个电流{i1,i2,…,i8}须满足下列线性方程组:

12

123

234

345

456

567

678

78

22/

2520

2520

2520

2520

2520

2520

250

i i V R

i i i

i i i

i i i

i i i

i i i

i i i

i i

-=

-+-=

-+-=

-+-=

-+-=

-+-=

-+-=

-+=

这是一个三对角方程组。设V=220V,R=27Ω,运用追赶法,求各段电路的电流量。Matlab程序如下:

function chase () %追赶法求梯形电路中各段的电流量

a=input('请输入下主对角线向量a=');

b=input('请输入主对角线向量b=');

c=input('请输入上主对角线向量c=');

d=input('请输入右端向量d=');

n=input('请输入系数矩阵维数n=');

u(1)=b(1);

for i=2:n

l(i)=a(i)/u(i-1);

u(i)=b(i)-c(i-1)*l(i);

end

y(1)=d(1);

for i=2:n

y(i)=d(i)-l(i)*y(i-1);

end

x(n)=y(n)/u(n);

i=n-1;

while i>0

x(i)=(y(i)-c(i)*x(i+1))/u(i);

i=i-1;

end

x

输入如下:

请输入下主对角线向量a=[0,-2,-2,-2,-2,-2,-2,-2]; 请输入主对角线向量b=[2,5,5,5,5,5,5,5];

请输入上主对角线向量c=[-2,-2,-2,-2,-2,-2,-2,0]; 请输入方程组右端向量d=[220/27,0,0,0,0,0,0,0]; 请输入系数矩阵阶数n=8 运行结果如下:

x = 8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477

第三章

14.试分别用(1)Jacobi 迭代法;(2)Gauss-Seidel 迭代法解线性方程组

1234510123412191232721735143231211743511512x x x x x ⎡⎤⎡⎤⎡⎤

⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=--⎢⎥⎢⎥⎢⎥

--⎢⎥⎢⎥⎢⎥

⎢⎥⎢⎥⎢⎥---⎣⎦⎣⎦⎣⎦ 迭代初始向量

(0)(0,0,0,0,0)T x =。

(1)雅可比迭代法程序如下:

function jacobi() %Jacobi 迭代法 a=input('请输入系数矩阵a='); b=input('请输入右端向量b='); x0=input('请输入初始向量x0='); n=input('请输入系数矩阵阶数n='); er=input('请输入允许误差er='); N=input('请输入最大迭代次数N='); for i=1:n for j=1:n if i==j

d(i,j)=a(i,j); else

d(i,j)=0; end end end

m=eye(5)-d\a; %迭代矩阵 g=d\b;

x=m*x0+g; k=1;

while k<=N %进行迭代 for i=1:5

if max(abs(x(i)-x0(i))) >er x=m*x+g; k=k+1;

x

return

end

end

continue

end

x

程序执行如下:

>>jacobi

请输入系数矩阵a=[10 1 2 3 4;1 9 -1 2 -3;2 -1 7 3 -5;3 2 3 12 -1;4 -3 -5 -1 15] 请输入右端向量b=[12 -27 14 -17 12]'

请输入初始向量x0=[0 0 0 0 0]'

请输入系数矩阵阶数n=5

请输入允许误差er=1.0e-6

请输入最大容许迭代次数N=60

x =

1.0000

-2.0000

3.0000

-2.0000

1.0000

(2)高斯-赛德尔迭代法程序如下:

function gs_sdl() %gauss-seiddel迭代法

a=input('请输入系数矩阵a=');

b=input('请输入右端向量b=');

x0=input('请输入初始向量x0=');

n=input('请输入系数矩阵阶数n=');

er=input('请输入允许误差er=');

N=input('请输入最大迭代次数N=');

for i=1:n

for j=1:n

if i<=j

l(i,j)=0;

else

l(i,j)=-a(i,j);

end

end

end

for i=1:n

for j=1:n

if i

u(i,j)=-a(i,j);

else