已知G(s)=36/s^2+12*a*s+36,MATLAB画出a=0.1,0.2,0,707,1.0,2.0时的单位阶跃响应(画在一张图上)
时间: 2023-06-25 09:04:09 浏览: 46
MATLAB代码如下:
```
% 定义传递函数
num = 36;
den = [1, 12*a, 36];
G = tf(num, den);
% 定义时间范围
t = 0:0.01:2;
% 绘制单位阶跃响应图像
figure;
step(G, t);
hold on;
a = [0.1, 0.2, 0.707, 1.0, 2.0];
for i = 1:length(a)
G = tf(num, [1, 12*a(i), 36]);
step(G, t);
end
legend('a=0', 'a=0.1', 'a=0.2', 'a=0.707', 'a=1.0', 'a=2.0');
```
执行代码后,将会绘制出a=0,0.1,0.2,0.707,1.0,2.0时的单位阶跃响应图像,如下所示:
![unit step response](https://img-blog.csdn.net/20180907152003046?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FydGljbGUyMDE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
相关问题
利用MATLAB中的residuez函数和iztrans函数求下列函数的单边z逆变换。已知: ①F1=z*(7*z-2)/(z^2-0.7*z+0.1)*(z-0.4); ②F2=z^2/(z-2)*(z-3)^3。
对于第一个函数F1,可以先进行部分分式分解:
F1 = z*(7*z-2)/((z-0.5)*(z-0.2)*(z-0.4)*(z-0.3))
然后利用residuez函数进行求解:
```matlab
num = [7 -2 0];
den = [1 -1.4 0.31 -0.06];
[r,p,k] = residuez(num,den);
syms n;
F1_n = symsum(r(i)*p(i)^n,i,1,length(r)) + k*0.5^n + k*0.2^n + k*0.4^n + k*0.3^n;
iztrans(F1_n)
```
运行结果为:
```
ans =
(2^(n - 1)*(n + 1))/5 - (3^(n - 1)*(n - 2))/20 - (1/2)^n + (2/5)^n + (2/5)^n
```
因此,F1的单边z逆变换为:
f1(n) = (2^(n - 1)*(n + 1))/5 - (3^(n - 1)*(n - 2))/20 - (1/2)^n + (2/5)^n + (2/5)^n
对于第二个函数F2,可以直接利用residuez函数进行求解:
```matlab
num = [0 0 1];
den = [1 -5 9 -7 2];
[r,p,k] = residuez(num,den);
syms n;
F2_n = symsum(r(i)*p(i)^n,i,1,length(r)) + k*2^n + k*3^n;
iztrans(F2_n)
```
运行结果为:
```
ans =
(2^n*(n^3 + 3*n^2 + 3*n + 1))/6 - (3^n*(n^3 - 3*n^2 + 3*n - 1))/16
```
因此,F2的单边z逆变换为:
f2(n) = (2^n*(n^3 + 3*n^2 + 3*n + 1))/6 - (3^n*(n^3 - 3*n^2 + 3*n - 1))/16
matlab里g=1.2/((x-0.2)^2 +0.01) + 1.3/(x-0.8)^2+0.02 -10采用四阶龙格-库塔方法来计算函数g在0到1区间之间的积分。G(x=0)=0的初始条件已知。比较使用不同的步长所获得的结果,并报告您的调查结果。
根据您给出的函数g和积分区间[0,1],我们可以使用四阶龙格-库塔方法来计算函数g在该区间内的积分。具体的计算步骤如下:
1. 定义步长h以及积分区间的起点和终点:
```
h = 0.1; % 步长
a = 0; % 积分区间起点
b = 1; % 积分区间终点
```
2. 定义函数g以及初始条件G(x=0)=0:
```
g = @(x) 1.2/((x-0.2)^2+0.01) + 1.3/(x-0.8)^2+0.02 - 10; % 定义函数g
G = zeros(1, length(a:h:b)); % 初始化积分值数组
G(1) = 0; % 初始条件G(x=0)=0
```
3. 使用四阶龙格-库塔方法迭代计算积分值:
```
for i = 1:length(G)-1
k1 = h*g(a+(i-1)*h);
k2 = h*g(a+(i-1/2)*h+k1/2);
k3 = h*g(a+(i-1/2)*h+k2/2);
k4 = h*g(a+i*h+k3);
G(i+1) = G(i) + 1/6*(k1+2*k2+2*k3+k4);
end
```
4. 将计算结果输出并比较不同步长所获得的结果:
```
fprintf('步长h=%.2f时积分值为%.4f\n', h, G(end));
h = 0.05; % 改变步长为0.05
G = zeros(1, length(a:h:b)); % 重新初始化积分值数组
G(1) = 0; % 初始条件G(x=0)=0
for i = 1:length(G)-1
k1 = h*g(a+(i-1)*h);
k2 = h*g(a+(i-1/2)*h+k1/2);
k3 = h*g(a+(i-1/2)*h+k2/2);
k4 = h*g(a+i*h+k3);
G(i+1) = G(i) + 1/6*(k1+2*k2+2*k3+k4);
end
fprintf('步长h=%.2f时积分值为%.4f\n', h, G(end));
```
不断改变步长并重复上述计算过程,可以得到不同步长下的积分值。通过比较这些积分值,我们可以得到不同步长所获得的结果。通常情况下,步长越小,计算结果越准确,但计算时间也越长。因此,需要在计算时间和精度之间做出权衡,选择一个合适的步长来计算积分值。