Matlab第 9次课
7,设方程的根为 x=[-3,-5,-8,-9],求它们对应的 x多项式的系数。
clc
clear,close all
ra=[-3,-5,-8,-9]
a=poly(ra)
ra1=roots(a)
a =1 25 223 831 1080
ra1 = -9.0000 -8.0000 -5.0000 -3.0000
13 设 f(x)=x5- 4x4 +3x2- 2x+ 6
a) x=[-2,8]之间函数的值 ( 取 100
个点 ),画出曲线,看它有几个过零点 。
( 提示:用 polyval 函数 )
b)用 roots函数求此多项式的根
clc
clear,close all
x=linspace(-2,8);
y=x.^5-4*x.^4+3*x.^2-2*x+3;
plot(x,y,'r')
a=[1,-4,3,-2,6];
ra=roots(a)
clc
clear,close all
x=linspace(-2,8);
a=[1,-4,3,-2,6];
y=polyval(a,x);
plot(x,y,'r')
a=[1,-4,3,-2,6];
ra=roots(a)
ra = 3.0000
1.6956
-0.3478 + 1.0289i
-0.3478 - 1.0289i
11 设 x=rcost+3t,y=rsint+3,分别令 r=2,3,4,
画出参数 t=0~10区间生成的 x~y曲线 。
clc
clear,close all
t=linspace(1,10);
for r=2:4
x=r*cos(t)+3*t;
y=r*sin(t)+3
figure
plot(x,y)
end
改进
Clc,clear,close all
t=linspace(1,10);
for r=2:4
x=r*cos(t)+3*t; y=r*sin(t)+3
if r==2
figure; plot(x,y,'+r')
title('r=2')
elseif r==3
figure; plot(x,y,':b')
title('r=3')
else
figure; plot(x,y,'-.k')
title('r=4')
end
end
4.3.5 线性微分方程的解 (residue)
Laplace变换的时域微分式中,f(1)(t),f(2)(t),f(n)(t)分别表示 f(t)的一次,二次,n次导数,
f(0-),f(1)(0-),f(i)(0-)分别表示 f(t),f(1)(t),f(i)(t)在 t=0-时的值 。
若 为零状态响应,则 f(n)(0-)=0 (n=1,2,…),此时,
时域微分性质表示为
)()]([ )( sFstfL nn?
n=1,2,… ; Re[ s]> σ0
例求 f1(t) 的单边拉氏变换 。
) ],([)( 21 tedtdtf t
解
(1) 求 f1(t)的单边拉氏变换。由于
)(2)()]([)( 221 tettedtdtf tt
故根据线性得
22
21)]([)(
11 s
s
stfLsF
若应用时域微分性质求解,则有
2)()]([)( 0
22
1
s
stetesLsF
t
tt
对其进行 Laplace变换得:
N
0 0
)()( )()(
i
M
j
j
j
i
i txbtya
对于连续的系统,其数学模型为 常系数线性微分方程,即:
)(
)()(
)(
)()(
sA
sBSX
sa
sbSY =?
对上式进行反变换,即可求出 y(t)
residue函数
求反变换的重要方法之一是部分分式法,即将上式分解成多个 s的一次分式之和。在 matlab里
residue函数可以完成这一任务。
步骤:
1)用 [r,p,k]= residue(b,a)求出 Y(s)的极点数和留数数组 r,因而 Y(s)可表示为
...)4()4()3()3()2()2()1()1()( ps rps rps rps rsY
2)求其反变换,得:
.,,)*)4(e x p (*)4()*)3(e x p (*)3()*)2(e x p (*)2()*)1(e x p (*)1()( tprtprtprtprty
例 4.9
求解线性常数微分方程
xxxyyyy 4'5.0''37'4''5'''
在输入为单位冲激响应及单位阶跃信号时的解析解。
1)()]([ 0 = stettL
SetutuL
st 1)()]([
0 =?
解:用 Laplace变换
)(
)()(
745
45.03)(
23
2
sA
sBsX
sss
ssssY?
在输入单位冲激响应时,A=[1,5,4,7];B=[3,0.5,4];
[r,p,k]=residue(B,A)
clc
clear,close all
A=[1,5,4,7];
B=[3,0.5,4];
[r,p,k]=residue(B,A)
程序:
clc
clear,close all
A=[1,5,4,7];
B=[3,0.5,4];
[r,p,k]=residue(B,A)
t=0:0.2:10;
yi=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);
plot(t,yi)
求时域解,先设定 t=0:0.2:10,然后列出:
yi=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);Plot(t,yi);
A=[1,5,4,7,0];B=[3,0.5,4]; [r,p,k]=residue(B,A)
程序:
clc
clear,close all
A=[1,5,4,7,0];
B=[3,0.5,4];
[r,p,k]=residue(B,A)
t=0:0.2:10;
yi2=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*
t)+r(4);
plot(t,yi2)
当输入为单位阶跃信号时(分母由于乘了个 S,a将提高一阶,右端多加一个 0);
4.4 函数功能和数值积分函数库
4.4.1 函数数功能和数值积分函数库的主要子程序
包括:
1)对任意非线性函数的分析,如求极值、
过零点等。
2)求任意函数的数值积分,如求定积分,
微分方程的数值解
4.4.2 非线性函数分析
1、绘制函数曲线 fplot
格式,fplot(’函数名’,[初值 x0,终值 xf] ) 。
function y=hump(x)
y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
clc
clear,close all;
fplot('hump',[0,2]),grid
title('fplot函数的练习 ')
2)求函数极值
格式,fmin(‘函数名’,[初值 x0,终值 xf] ) 。
例如,求函数 hump函数在 0-1.5区间的极小值,
M=fmin(‘hump’,0,1.5)
clc
clear,close all;
fplot('humps',[0,2.5]),grid
title('fplot函数的练习 ')
m=fmin('humps',0,1.2)
z=fzero('humps',1)
function y = f(x)
y = x.^3-2*x-5;
clc
clear,close all;
fplot('f',[0,2.5]),grid
title('fplot函数的练习 ')
m=fmin('f',0,1.2)
z=fzero('f',2.5)
ezplot的应用
格式:
ezplot 函数
或
Ezplot(‘函数’ )
ezplot sin(x),grid
ezplot('sin(x)'),grid
作业
4.12
习题 4.14
clc
clear,close all
z=0:0.1:10;
x=z.*sin(3*z);
y=z.*cos(3*z);
plot3(x,y,z,':r')
7,设方程的根为 x=[-3,-5,-8,-9],求它们对应的 x多项式的系数。
clc
clear,close all
ra=[-3,-5,-8,-9]
a=poly(ra)
ra1=roots(a)
a =1 25 223 831 1080
ra1 = -9.0000 -8.0000 -5.0000 -3.0000
13 设 f(x)=x5- 4x4 +3x2- 2x+ 6
a) x=[-2,8]之间函数的值 ( 取 100
个点 ),画出曲线,看它有几个过零点 。
( 提示:用 polyval 函数 )
b)用 roots函数求此多项式的根
clc
clear,close all
x=linspace(-2,8);
y=x.^5-4*x.^4+3*x.^2-2*x+3;
plot(x,y,'r')
a=[1,-4,3,-2,6];
ra=roots(a)
clc
clear,close all
x=linspace(-2,8);
a=[1,-4,3,-2,6];
y=polyval(a,x);
plot(x,y,'r')
a=[1,-4,3,-2,6];
ra=roots(a)
ra = 3.0000
1.6956
-0.3478 + 1.0289i
-0.3478 - 1.0289i
11 设 x=rcost+3t,y=rsint+3,分别令 r=2,3,4,
画出参数 t=0~10区间生成的 x~y曲线 。
clc
clear,close all
t=linspace(1,10);
for r=2:4
x=r*cos(t)+3*t;
y=r*sin(t)+3
figure
plot(x,y)
end
改进
Clc,clear,close all
t=linspace(1,10);
for r=2:4
x=r*cos(t)+3*t; y=r*sin(t)+3
if r==2
figure; plot(x,y,'+r')
title('r=2')
elseif r==3
figure; plot(x,y,':b')
title('r=3')
else
figure; plot(x,y,'-.k')
title('r=4')
end
end
4.3.5 线性微分方程的解 (residue)
Laplace变换的时域微分式中,f(1)(t),f(2)(t),f(n)(t)分别表示 f(t)的一次,二次,n次导数,
f(0-),f(1)(0-),f(i)(0-)分别表示 f(t),f(1)(t),f(i)(t)在 t=0-时的值 。
若 为零状态响应,则 f(n)(0-)=0 (n=1,2,…),此时,
时域微分性质表示为
)()]([ )( sFstfL nn?
n=1,2,… ; Re[ s]> σ0
例求 f1(t) 的单边拉氏变换 。
) ],([)( 21 tedtdtf t
解
(1) 求 f1(t)的单边拉氏变换。由于
)(2)()]([)( 221 tettedtdtf tt
故根据线性得
22
21)]([)(
11 s
s
stfLsF
若应用时域微分性质求解,则有
2)()]([)( 0
22
1
s
stetesLsF
t
tt
对其进行 Laplace变换得:
N
0 0
)()( )()(
i
M
j
j
j
i
i txbtya
对于连续的系统,其数学模型为 常系数线性微分方程,即:
)(
)()(
)(
)()(
sA
sBSX
sa
sbSY =?
对上式进行反变换,即可求出 y(t)
residue函数
求反变换的重要方法之一是部分分式法,即将上式分解成多个 s的一次分式之和。在 matlab里
residue函数可以完成这一任务。
步骤:
1)用 [r,p,k]= residue(b,a)求出 Y(s)的极点数和留数数组 r,因而 Y(s)可表示为
...)4()4()3()3()2()2()1()1()( ps rps rps rps rsY
2)求其反变换,得:
.,,)*)4(e x p (*)4()*)3(e x p (*)3()*)2(e x p (*)2()*)1(e x p (*)1()( tprtprtprtprty
例 4.9
求解线性常数微分方程
xxxyyyy 4'5.0''37'4''5'''
在输入为单位冲激响应及单位阶跃信号时的解析解。
1)()]([ 0 = stettL
SetutuL
st 1)()]([
0 =?
解:用 Laplace变换
)(
)()(
745
45.03)(
23
2
sA
sBsX
sss
ssssY?
在输入单位冲激响应时,A=[1,5,4,7];B=[3,0.5,4];
[r,p,k]=residue(B,A)
clc
clear,close all
A=[1,5,4,7];
B=[3,0.5,4];
[r,p,k]=residue(B,A)
程序:
clc
clear,close all
A=[1,5,4,7];
B=[3,0.5,4];
[r,p,k]=residue(B,A)
t=0:0.2:10;
yi=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);
plot(t,yi)
求时域解,先设定 t=0:0.2:10,然后列出:
yi=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);Plot(t,yi);
A=[1,5,4,7,0];B=[3,0.5,4]; [r,p,k]=residue(B,A)
程序:
clc
clear,close all
A=[1,5,4,7,0];
B=[3,0.5,4];
[r,p,k]=residue(B,A)
t=0:0.2:10;
yi2=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*
t)+r(4);
plot(t,yi2)
当输入为单位阶跃信号时(分母由于乘了个 S,a将提高一阶,右端多加一个 0);
4.4 函数功能和数值积分函数库
4.4.1 函数数功能和数值积分函数库的主要子程序
包括:
1)对任意非线性函数的分析,如求极值、
过零点等。
2)求任意函数的数值积分,如求定积分,
微分方程的数值解
4.4.2 非线性函数分析
1、绘制函数曲线 fplot
格式,fplot(’函数名’,[初值 x0,终值 xf] ) 。
function y=hump(x)
y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
clc
clear,close all;
fplot('hump',[0,2]),grid
title('fplot函数的练习 ')
2)求函数极值
格式,fmin(‘函数名’,[初值 x0,终值 xf] ) 。
例如,求函数 hump函数在 0-1.5区间的极小值,
M=fmin(‘hump’,0,1.5)
clc
clear,close all;
fplot('humps',[0,2.5]),grid
title('fplot函数的练习 ')
m=fmin('humps',0,1.2)
z=fzero('humps',1)
function y = f(x)
y = x.^3-2*x-5;
clc
clear,close all;
fplot('f',[0,2.5]),grid
title('fplot函数的练习 ')
m=fmin('f',0,1.2)
z=fzero('f',2.5)
ezplot的应用
格式:
ezplot 函数
或
Ezplot(‘函数’ )
ezplot sin(x),grid
ezplot('sin(x)'),grid
作业
4.12
习题 4.14
clc
clear,close all
z=0:0.1:10;
x=z.*sin(3*z);
y=z.*cos(3*z);
plot3(x,y,z,':r')