没有合适的资源?快使用搜索试试~ 我知道了~
数值分析Matlab作业.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 201 浏览量
2023-02-20
18:40:02
上传
评论
收藏 600KB DOCX 举报
温馨提示
试读
18页
.
资源推荐
资源详情
资源评论
数值分析编程作业
数值分析
2012 年 12 月
第二章
14.考虑梯形电阻电路的设计,电路如下:
电路中的各个电流{i1,i2,…,i8}须满足下列线性方程组:
2i 2i
V / R
0
1
2
2i 5i 2i
1
2
3
2i 5i 2i
0
2
3
4
2i 5i 2i
0
3
4
5
2i 5i 2i
0
4
5
6
2i 5i 2i
0
5
6
7
2i 5i 2i 0
6
7
8
2i 5i 0
7
8
这是一个三对角方程组。设 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
输入如下:
2(共 18 页)
数值分析
>> chase
请输入下主对角线向量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 迭代法解线性方程组
10 1 2 3 4
12
x
1
27
1 9 1 2 3
x
2
2 1 7 3 5 14
x
3 2 3 12 1
x
3
17
4
x
5
4 3 5 1 15
12
x
(0)
(0,0,0,0,0)
T
迭代初始向量
。
(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;
3(共 18 页)
数值分析
else
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<j
u(i,j)=-a(i,j);
else
4(共 18 页)
剩余17页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6520
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功