jacobi迭代法线性方程组求解汇编.docx
- 文档编号:28652831
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:16
- 大小:369.78KB
jacobi迭代法线性方程组求解汇编.docx
《jacobi迭代法线性方程组求解汇编.docx》由会员分享,可在线阅读,更多相关《jacobi迭代法线性方程组求解汇编.docx(16页珍藏版)》请在冰豆网上搜索。
jacobi迭代法线性方程组求解汇编
《MATLAB课程设计实践》课程考核
1、编程实现以下科学计算算法,并举一例应用之。
(参考书籍《精通MATLAB科学计算》,王正林等著,电子工业出版社,2009年)
“jacobi迭代法线性方程组求解”
算法说明:
如果系数矩阵的主对角元全不为0,在上节A的分解中取
Q=D
C=D-A
其中D是由A的主对角元素组成的对角阵,则有
,迭代公式为:
这种迭代方法称为Jacobi迭代法。
在MATLAB中编程实现的Jacobi迭代法函数为:
jacobi。
功能:
用Jacobi迭代法求线性方程组Ax=b的解
调用格式:
〔x,n〕=jacobi(A,b,x0,eps,varargin)
其中,A为线性方程组的系数矩阵;
b为线性方程组中常数向量;
x0为迭代初始向量;
eps为解的精度控制(此参数可选);
varargin为迭代步数控制(此参数可选);
x为线性方程组的解;
n为求出所需精度的解实际的迭代步数。
流程图:
Jacobi迭代法的MATLAB程序代码:
function[x,n]=jacobi(A,b,x0,eps,varargin)
%采用Jacobi迭代法求线性方程组Ax=b的解
%线性方程组的系数矩阵:
A
%线性方程组的常数向量:
b
%迭代初始向量:
x0
%解的精度控制:
eps
%迭代步数控制:
varargin
%线性方程组的解:
x
%求出所需精度的解实际的迭代步数:
n
ifnargin==3
eps=1.0e-6;
M=200;
elseifnargin<3
return
elseifnargin==5
M=varargin{1};
end
D=diag(diag(A)):
%求A的对角矩阵
L=-tril(A,-1);%求A的下三角阵
U=-triu(A,1);%求A的上三角阵
B=D\(L+U);
f=D\b;
x=B*x0+f;
n=1;%迭代次数
%迭代过程
whilenorm(x-x0)>=eps
x0=x;
x=B*x0+f;
n=n+1;
if(n>=M)
disp(‘warning:
迭代次数太多,可能不收敛!
’);
return;
end
end
例题:
Jacobi迭代法求解线性方程组实例。
用Jacobi迭代法求解以下线性方程组,
解:
用jacobi迭代法求解,在MATLAB命令窗口中输入求解程序:
>>A=[0.9889-0.0005-0.0002;
-0.00460.99460.0077;
-0.00020.00920.9941];
>>b=[101]’;
>>x0=ones(3,1);
>>[x,n]=jacobi(A,b,x0)
输出的计算结果为:
x=
1.0114
-0,0031
1.0062
输出的迭代次数为:
n=
4
可见,经过4步迭代,Jacobi法求出了方程组的解为:
[
]=[1.0114,-0.0031,1.0062]
2、编程解决以下科学计算问题。
1)如图所示电路,已知
。
流程图:
源代码:
w=[eps,1,2];%按输入信号的频率将信号分类
us=[10,10,0];
Is=[5,0,5];
z1=1./(0.5*w*j);%电容在不同频率的输入信号下产生的对应抗阻
z2=[2,2,2];%电阻2在不同频率的输入信号下产生的对应抗阻
z3=[2,2,2];%电阻3在不同频率的输入信号下产生的对应抗阻
z4=1*w*j;%电感在不同频率的输入信号下产生的对应抗阻
uoc=(z2./(z1+z2)-z4./(z3+z4)).*us;%电压源在bd点产生的等效电压
Zeq=z3.*z4./(z3+z4)+z1.*z2./(z1+z2);%求等效电阻
u=Is.*Zeq+uoc;%bd两点间的电压值
disp('wumphi')%显示各分量的值
disp([w',abs(u'),angle(u')*180/pi])
结果如图所示
则
2)已知
3.5,
K
0
0.0
0.000
1
1.0
0.75
2
2.0
2.25
3
3.0
3.0
4
4.0
2.25
求:
(1)计算函数差商表。
(2)写出牛顿多项式
的值。
(3)在给定值x处求牛顿多项式
的值。
(4)比较(3)中的结果与实际函数值。
(1)函数差商表:
流程图:
源文件:
function[P,A]=chashang(X,Y)
n=length(X);
A=zeros(n,n);
A(:
1)=Y';
forj=2:
n
fori=j:
n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1));
end
end
P=A(1:
n,1:
n)
在命令窗口中输入
>>X=[01234];
>>Y=[00.752.253.02.25];
>>chashang(X,Y)
测试结果为:
(2)(3)牛顿多项式与给定处的牛顿多项式
流程图:
源文件:
function[C,A]=newtonpoly(X,Y)
n=length(X);
A=zeros(n,n);
A(:
1)=Y';
forj=2:
n
fori=j:
n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1));
end
end
C=A(n,n);
fork=(n-1):
-1:
1
C=conv(C,poly(X(k)));
d=length(C);
C(d)=C(d)+A(k,k);
end
输入与输出结果如下
(4)比较(3)中的结果与实际函数值。
输入:
>>x=0:
0.05:
4;
>>y=3.*sin(pi.*x./6).*sin(pi.*x./6);
>>plot(x,y,'r')
>>holdon
>>x=1.5;
>>f1=1.125;
>>f2=1.4063;
>>f3=1.500;
>>f4=1.5176;
>>plot(x,f1,'o',x,f2,'o',x,f3,'o',x,f4,'o')
>>x=3.5;
>>p1=2.6250;
>>p2=5.9063;
>>p3=2.6250;
>>p4=2.8301;
>>plot(x,p1,'o',x,p2,'o',x,p3,'o',x,p4,'o')
得出结果为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jacobi 迭代法 线性方程组 求解 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)