两步迭代法线性方程组求解.docx
- 文档编号:23720824
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:13
- 大小:207.42KB
两步迭代法线性方程组求解.docx
《两步迭代法线性方程组求解.docx》由会员分享,可在线阅读,更多相关《两步迭代法线性方程组求解.docx(13页珍藏版)》请在冰豆网上搜索。
两步迭代法线性方程组求解
《MATLAB程序设计实践》课程考核
一.编程实现以下科学计算算法,并举一例应用之(参考书籍《精通MATLAB科学计算》,王正林等著,电子工业出版社,2009年)
“两步迭代法线性方程组求解”
(1)算法说明
两步迭代法的一般公式为:
yn=g(xn)
xn+1=h(yn)
它比较常用两种形式:
(1)yn=xn-
;xn+1=yn-
(2)yn=xn-
;xn+1=yn-
在MATLAB中编程实现的两步迭代法TwoStep。
功能:
用两步迭代法求函数在某个区间上的一个零点。
调用格式:
root=TwoStep(f,a,b,type,eps)。
其中,f为函数名;
a为区间左端点;
b为区间右端点;
type为两步迭代法的形式;
eps为根的精度;
root为求出的函数零点。
(2)程序代码
functionroot=TwoStep(f,a,b,type,eps)
%两步迭代法求函数f在区间[a,b]上的一个零点
%函数名:
f
%区间左端点:
a
%区间右端点:
b
%两步迭代法的形式:
type(可取1,2)
%根的精度:
eps
%求出的函数零点:
root
if(nargin==4)
eps=1.0e-4;
end
f1=subs(sym(f),findsym(sym(f)),a);
f2=subs(sym(f),findsym(sym(f)),b);
if(f1==0)
root=a;
end
if(f2==0)
root=b;
end
if(f1*f2>0)
disp('两端点函数值乘积大于0!
');
return;
else
tol=1;
fun=diff(sym(f));
fa=subs(sym(f),findsym(sym(f)),a);
fb=subs(sym(f),findsym(sym(f)),b);
dfa=subs(sym(fun),findsym(sym(fun)),a);
dfb=subs(sym(fun),findsym(sym(fun)),b);
if(dfa>dfb)
root=a;
else
root=b;
end
while(tol>eps)%第一种形式的两步迭代法
if(type==1)
r1=root;
fx1=subs(sym(f),findsym(sym(f)),r1);
dfx=subs(sym(fun),findsym(sym(fun)),r1);
r2=r1-fx1/dfx;%第一步迭代
fx2=subs(sym(f),findsym(sym(f)),r2);
root=r2-fx2/dfx;%第二步迭代
tol=abs(root-r1);
else%第二种形式的两步迭代法
r1=root;
fx1subs(sym(f),findsym(sym(f)),r1);
dfx=subs(sym(fun),findsym(sym(fun)),r1);
r2=r1-fx1/dfx;%第一步迭代
fx2=subs(sym(f),findsym(sym(f)),r2);
root=r2-fx2*(r2-r1)/(2*fx2-fx1);%第二步迭代
tol=abs(root-r1);
end
end
end
(3)流程图(可放大)
(4)举例说明
两步迭代法求解非线性方程应用实例。
利用两步迭代法求解方程logx-sin(x)+1=0在区间[0.1,3]的一个根。
解:
在MATLAB命令框中输入:
r=TwoStep('(log(x)-sin(x)+1)',0.1,3,1);
r=TwoStep('(log(x)-sin(x)+1)',0.1,3,2);
从上例可以看出两种迭代结果是一样的。
二、编程解决以下科学计算问题。
1、如下图所示为一个双电感并联单调谐网络,求回路的通频带B及满足回路阻抗大于50kΩ的频率范围。
28.2KΩ
RSR12ΩR23Ω
1000PF
0.75mHL10.25mHL2
(1)算法说明
先把回路变换为一个等效单电感谐振回路,把信号源的内阻Ra变为并接在该单电感回路上的等效内阻Rse,如下图所示。
设
则
其它两支路的等效阻抗分别为
总阻抗是这3个支路阻抗的并联
由此求出频率范围。
(2)流程图
(3)程序代码
r1=2;
r2=3;
L1=0.75e-3;
L2=0.25e-3;
C=1000e-12;
rs=28200;
L=L1+L2;
r=r1+r2;
rse=rs*(L/L1)^2;%折算内阻
f0=1/(2*pi*sqrt(C*L))%谐振频率
Q0=sqrt(L/C)/r,r0=L/C/r;%空载(即不接信号源时)的回路Q0值
re=r0*rse/(r0+rse),%折算内阻与回路电阻的并联
Q=Q0*re/r0,B=f0/Q,%实际Q值和通带
s=log10(f0);f=logspace(s-.1,s+.1,501);
w=2*pi*f %设定计算的频率范围及数组
%等效单回路中两个电抗支路的阻抗
z1e=r1+j*w*L;
z2e=r2+1./(j*w*C);
ze=1./(1./z1e+1./z2e+1./rse);%等效单回路中三个支路的并联阻抗
%画对数幅频特性曲线
subplot(2,1,1),loglog(w,abs(ze)),xlabel('频率'),ylabel('幅度'),title('幅频特性曲线'),grid
%画相频特性曲线
axis([min(w),max(w),0.9*min(abs(ze)),1.1*max(abs(ze))])
subplot(2,1,2),semilogx(w,angle(ze)*180/pi)
axis([min(w),max(w),-100,100]),xlabel('频率'),ylabel('相位'),title('相频特性曲线'),grid
fh=w(find(abs(1./(1./z1e+1./z2e))>5e4))/2/pi;%幅频特性大于50kΩ的频带
fhmin=min(fh),fhmax=max(fh),
(4)程序运行结果
f0=
1.5915e+005
Q0=
200
rse=
4.0085e+004
Q=
40.0853
B=
3.9704e+003
w=
1.0e+006
fhmin=
1.5770e+005
fhmax=
1.6063e+005
即电路中的各个参数为:
谐振频率f0=159.15kHz
空载品质因数Q0=200
等效信号源内阻rse=50.133kΩ
考虑内阻后的品质因数Q=40.0853
通频带B=3.97kHz
回路阻抗大于50kΩ的频率范围
fhmin=157.7kHz
fhmax=160.63kHz
谐振频率附近的幅频和相频特征曲线如下图所示:
从以上运行结果可知本题所求的通频带B为3.97kHz,满足回路阻抗大于50kΩ的频率范围为(157.7,160.63)kHz。
2、求压紧三次样条曲线,经过点(-3,2),(-2,0),(1,3),(4,1),而且一阶导数边界条件S'(-3)=-1;S'(4)=1。
(1)流程图
(2)程序代码
x=[-3-214];
y=[2031];
x0=-3:
0.1:
4;
y0=spline(x,[-1y1],x0);
plot(x0,y0);
(3)运行结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迭代法 线性方程组 求解