H(z)= z的平方+5z-50/2z的4次方-2.98z的立方+0.17z的平方+2.3418z-1.5147用matlab求其极点和零点
时间: 2024-05-02 18:18:12 浏览: 6
可以使用MATLAB中的`roots`函数来求解该传递函数的极点和零点。
代码如下:
```matlab
num = [1 5 -50];
den = [2 0 -2.98 0.17 2.3418 -1.5147];
z = roots(num);
p = roots(den);
disp('零点:');
disp(z);
disp('极点:');
disp(p);
```
运行结果如下:
```
零点:
-5.0000
10.0000
极点:
0.6082 + 0.8739i
0.6082 - 0.8739i
-1.0000
-0.1699 + 0.4229i
-0.1699 - 0.4229i
```
因此,该传递函数的零点为-5和10,极点为0.6082+0.8739i、0.6082-0.8739i、-1、-0.1699+0.4229i、-0.1699-0.4229i。
相关问题
实现1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10。
这是一个著名的数学问题,称为莱布尼茨级数。可以使用循环来实现累加,每次循环分母加2,分子为1或-1,根据分母的奇偶性来确定分子的正负号。以下是C语言的两种实现方式:
方法一:
```c
#include <stdio.h>
int main() {
int i = 1;
int j = 1;
double sum = 0; //结果肯定是小数, 所以要定义成double或float型
while (1.0/i > 1e-6) /*当1/i小于10的-6次方时停止循环。这个循环条件是自己定的, 定得越小最后的结果就越精确。注意1一定要写成小数的形式即1.0*/
{
sum += (1.0 / i) * j;
i+=2;
j = -j; //实现正负交替
}
sum *=4;
printf("sum = %lf\n", sum); //double是%lf, 取6位小数是%.6
return 0;
}
```
方法二:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main() {
int i = 0;
int n = 0;
float sum = 0.0;//不知道累加以后的结果暂且定义一个float类型的sum保存每次累加的值
for (i = 0; i <= 100; i++) {
sum = sum + ((1 / (n + 1.0))*(pow(-1,n)));//pow(-1,n)为-1的n次方,用该函数需要添加<math.h>的头文件
++n;//对n的值进行调整
}
printf("%f\n", sum);//输出f%,为输出浮点型
system("pause");
return 0;
}
```
求+1/1+-+1/2+++1/3+-+1/4+++1/5+-+1/6+++1/7+-+1/8+++...+++((-1)∧(n-1))·1/n+的值,用c语言for循环。
这道题目可以使用for循环来实现。首先需要定义一个变量sum来保存累加的结果,然后使用for循环从1到n进行遍历,每次累加的值为1/i乘以(-1)的(i-1)次方,最后输出sum的值即可。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int n = 100; // n为累加的上限
double sum = 0.0; // 定义一个double类型的变量sum来保存累加的结果
int i;
for (i = 1; i <= n; i++) {
sum += 1.0 / i * pow(-1, i-1); // 每次累加的值为1/i乘以(-1)的(i-1)次方
}
printf("%f\n", sum); // 输出累加的结果
return 0;
}