我有一个用矩阵形式创建方程组的公式。并写如下:
for i=1:n+1
for j=1:n+1
t(i)=(1/2)*(1+cos(((2*(n-i)+3)*pi)/(2*(n+1))));
y(i,j)=t(i)^(j-1);
end
end
现在我要做的是在每个块中分别创建一个具有y行的块对角矩阵。我的意思是,包含t(i)
幂的每行y应该在每个块中重复三次,然后下一行是具有三行的下一个块。像这样:
T=[y(t1) 0 0;0 y(t1) 0;0 0 y(t1); ... ;y(t n+1) 0 0;0 y(tn+1) 0;0 0 y(tn+1)]
答案 0 :(得分:0)
因为我无法在格式化模式中发表评论,所以我尝试以下列方式解释您的问题:
所以,如果
y =
1 2
3 4
解释可能性a)是
T =
1 2 0 0 0 0 3 4 0 0 0 0
0 0 1 2 0 0 0 0 3 4 0 0
0 0 0 0 1 2 0 0 0 0 3 4
或b)
T =
1 2 0 0 0 0 0 0 0 0 0 0
0 0 1 2 0 0 0 0 0 0 0 0
0 0 0 0 1 2 0 0 0 0 0 0
0 0 0 0 0 0 3 4 0 0 0 0
0 0 0 0 0 0 0 0 3 4 0 0
0 0 0 0 0 0 0 0 0 0 3 4
<强>解决方案强> 你首先创建一个块,即
1 2 0 0 0 0
0 0 1 2 0 0
0 0 0 0 1 2
计算temp{1} = kron(I, y(1,:))
,其中I = eye(3)
。然后,对第二行执行相同的操作:temp{2} = kron(I,y(2,:))
,依此类推。这个过程可以在for循环中轻松完成:
I = eye(3);
temp = cell(1,size(y,1));
for i = 1:size(y,1)
temp{i} = kron(I, y(i,:));
end
选项a)
结果现在只是:[temp{:}]
。
选项b)
结果是:blkdiag(temp{:})
答案 1 :(得分:0)
你知道,我在制作一个线性方程组时遇到了问题。可能就是我在计算y(i)
时所写的内容,这对我来说很难。
对于你说的例子,我有这个:
n=3
上面的表格式:
t1=0.0381
t2=0.3087
t3=0.6913
t4=0.9619
现在,
y(t)=[1 t t^2 t^3 t^4]
我的意思是
y(t1)=[1.0000 0.0381 0.0014 0.0001]
y(t2)=[1.0000 0.3087 0.0953 0.0294]
y(t3)=[1.0000 0.6913 0.4780 0.3304]
y(t4)=[1.0000 0.9619 0.9253 0.8901]
但是,因为我无法单独计算每个y(i)
,所以用这种形式写出来
y=[1.0000 0.0381 0.0014 0.0001
1.0000 0.3087 0.0953 0.0294
1.0000 0.6913 0.4780 0.3304
1.0000 0.9619 0.9253 0.8901]
现在,应该有两个矩阵。之一:
s=[y(t) 0 0;0 y(t) 0;0 0 y(t)]
r=[s(t1) ... 0; ... ;0 ... s(tn+1)]
第二
d=[ 1 -1 1 -1
0 2 -8 18
0 0 8 -48
0 0 0 32]
k=y*d
u=[0 0 0;0 k 0;0 0 0]
a=[u(t1) ... 0; ... ;0 ... u(tn+1)]
这些矩阵r和a应该有3(n+1)
列(在本例中为12列)。
我希望它可以提供帮助