Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 函数根有问题吗_Matlab_Matrix Multiplication - Fatal编程技术网

Matlab 函数根有问题吗

Matlab 函数根有问题吗,matlab,matrix-multiplication,Matlab,Matrix Multiplication,嘿,伙计们,我在使用函数“根”时遇到了很多问题 我必须找到's^1000+1'的零。 我将Y=0(11000),然后手动将第1000个矩阵更改为“1”。但是“根”函数不能使用它 另一个问题是我在矩阵乘法方面有困难。问题是求(s^6+6*s^5+15*s^4+20*s^3+15*s^2+6*s+1)*(s^6+6s^5+15*s^4+15*s^2+6*s+1)的零(根),所以我做了: a = [1 6 15 20 15 6 1] b = [1 6 15 0 15 6 1] y = a.*b; r

嘿,伙计们,我在使用函数“根”时遇到了很多问题

我必须找到's^1000+1'的零。 我将Y=0(11000),然后手动将第1000个矩阵更改为“1”。但是“根”函数不能使用它


另一个问题是我在矩阵乘法方面有困难。问题是求(s^6+6*s^5+15*s^4+20*s^3+15*s^2+6*s+1)*(s^6+6s^5+15*s^4+15*s^2+6*s+1)的零(根),所以我做了:

a = [1 6 15 20 15 6 1]
b = [1 6 15 0 15 6 1]
y = a.*b;
roots(y)
但这给了我

-27.9355 + 0.0000i
  -8.2158 + 0.0000i
   0.1544 + 0.9880i
   0.1544 - 0.9880i
  -0.1217 + 0.0000i
  -0.0358 + 0.0000i
如果我用wolfram计算原始方程,那么我将矩阵表示为:

p = [1 12 66 200 375 492 524 492 375 200 66 12 1]
roots(p)
这给了我:

-3.1629 + 2.5046i   
-3.1629 - 2.5046i
 0.3572 + 0.9340i
 0.3572 - 0.9340i   
-1.0051 + 0.0000i   
-1.0025 + 0.0044i   
-1.0025 - 0.0044i   
-0.9975 + 0.0044i   
-0.9975 - 0.0044i   
-0.9949 + 0.0000i   
-0.1943 + 0.1539i  
 -0.1943 - 0.1539i
我认为第二个解决方案是正确的(这就是wolfram alpha给我的)
你会如何通过matlab来回答这两个问题

要将多项式相乘,需要对其系数进行卷积:

>> roots(conv(a,b))

ans =

  -3.1629 + 2.5046i
  -3.1629 - 2.5046i
   0.3572 + 0.9340i
   0.3572 - 0.9340i
  -1.0051          
  -1.0025 + 0.0044i
  -1.0025 - 0.0044i
  -0.9974 + 0.0044i
  -0.9974 - 0.0044i
  -0.9950          
  -0.1943 + 0.1539i
  -0.1943 - 0.1539i

要将多项式相乘,请卷积它们的系数:

>> roots(conv(a,b))

ans =

  -3.1629 + 2.5046i
  -3.1629 - 2.5046i
   0.3572 + 0.9340i
   0.3572 - 0.9340i
  -1.0051          
  -1.0025 + 0.0044i
  -1.0025 - 0.0044i
  -0.9974 + 0.0044i
  -0.9974 - 0.0044i
  -0.9950          
  -0.1943 + 0.1539i
  -0.1943 - 0.1539i
1) 描述s^1000+1的向量也应以1结尾

(二)

这是一个点积,多项式的乘法不是按元素乘法

1)描述s^1000+1的向量也应以1结尾

(二)

这是一个点积,多项式的乘法不是按元素乘法

问题1 您需要在系数向量中包含x^0的系数,因此有1001个条目,第一个和最后一个为1

coeffs=zeros(1001,1);
coeffs([1,1001])=1;
roots(coeffs)
问题2 要乘以多项式的系数,需要使用卷积:

roots(conv(a,b))
问题1 您需要在系数向量中包含x^0的系数,因此有1001个条目,第一个和最后一个为1

coeffs=zeros(1001,1);
coeffs([1,1001])=1;
roots(coeffs)
问题2 要乘以多项式的系数,需要使用卷积:

roots(conv(a,b))
Q1

使用
查找s1000+1的根有点过分。此代码片段给出了解决方案(更正了第一版;可使用De Moivre公式推导):

此外,此方法的速度约为100000倍

Q2

将两个多项式相乘以求其乘积的根有点过分。:-)两个多项式根集的并集是乘积多项式的根集:

s = [roots(a);roots(b)]
而且,这种方法更精确。

Q1

使用
查找s1000+1的根有点过分。此代码片段给出了解决方案(更正了第一版;可使用De Moivre公式推导):

此外,此方法的速度约为100000倍

Q2

将两个多项式相乘以求其乘积的根有点过分。:-)两个多项式根集的并集是乘积多项式的根集:

s = [roots(a);roots(b)]
而且,这种方法更准确