Scilab 代码给出子矩阵错误定义错误
Scilab code giving submatrix incorrectly defined error
我正在尝试为其每个条目绘制 2 个标量和一个矩阵之间的 3D 图。编译时第 11 行出现 "Submatrix incorrectly defined" 错误。代码:
i_max= 3;
u = zeros(4,5);
a1 = 1;
a2 = 1;
a3 = 1;
b1 = 1;
hx = linspace(1D-6,1D6,13);
ht = linspace(1D-6,1D6,13);
for i = 1:i_max
for j = 2:4
u(i+1,j)=u(i,j)+(ht*(a1*u(i,j))+b1+(((a2*u(i,j+1))-(2*a2*u(i,j))+(a2*u(i,j-1)))*(hx^-2))+(((a3*u(i,j+1))-(a3*u(i,j-1)))*(0.5*hx^-1)));
plot(ht,hx,u(i+1,j));
end
end
完整的错误信息:
-->exec('C:\Users\deba123\Documents\assignments and lecture notes\Seventh Semester\UGP\Scilab\Simulation1_Plot.sce', -1)
+(((a3*u(i,j+1))-(a3*u(i,j-1)))*(0.5*hx^-1)))
!--error 15
Submatrix incorrectly defined.
at line 11 of exec file called by :
emester\UGP\Scilab\Simulation1_Plot.sce', -1
请帮忙。
对于 3 维图形,您需要 2 个参数向量和一个函数值矩阵。所以我将 u 扩展为张量。
在您代码中的每个操作中,我都添加了术语的当前维度。现在,给出了对您的计算的透明处理。对于绘图,您必须使用 plot3d
(单值)或 surf
(曲面)命令。
在 3-dim 图中,您需要两个 map 2 向量 (hx,ht)
,n 和 m 为标量 z
。因此,您的结果达到了 (nxm)-矩阵。这是,你想做什么?目前,每个 u(i,j,:)
- 条目都有 13 个值,但每个数字都需要 (13x13)。也许 eval3d
-函数可以帮到你。
i_max= 3;
u = zeros(4,5,13);
a1 = 1;
a2 = 1;
a3 = 1;
b1 = 1;
hx = linspace(1D-6,1D6,13); // 1 x 13
ht = linspace(1D-6,1D6,13); // 1 x 13
for i = 1:i_max
for j = 2:4
u(i+1,j,:)= u(i,j)...
+ ht*(a1*u(i,j))*b1... // 1 x 13
+(((a2*u(i,j+1)) -(2*a2*u(i,j)) +(a2*u(i,j-1)))*(hx.^-2))... // 1 x 13
+(((a3*u(i,j+1))-(a3*u(i,j-1)))*(0.5*hx.^-1)) ... // 1 x 13
+ hx*ones(13,1)*ht; // added to get non-zero values
z = squeeze( u(i+1,j, : ))'; // 1x13
// for a 3d-plot: (1x13, 1x13, 13x13)
figure()
plot3d(ht,hx, z'* z ,'*' ); //
end
end
我正在尝试为其每个条目绘制 2 个标量和一个矩阵之间的 3D 图。编译时第 11 行出现 "Submatrix incorrectly defined" 错误。代码:
i_max= 3;
u = zeros(4,5);
a1 = 1;
a2 = 1;
a3 = 1;
b1 = 1;
hx = linspace(1D-6,1D6,13);
ht = linspace(1D-6,1D6,13);
for i = 1:i_max
for j = 2:4
u(i+1,j)=u(i,j)+(ht*(a1*u(i,j))+b1+(((a2*u(i,j+1))-(2*a2*u(i,j))+(a2*u(i,j-1)))*(hx^-2))+(((a3*u(i,j+1))-(a3*u(i,j-1)))*(0.5*hx^-1)));
plot(ht,hx,u(i+1,j));
end
end
完整的错误信息:
-->exec('C:\Users\deba123\Documents\assignments and lecture notes\Seventh Semester\UGP\Scilab\Simulation1_Plot.sce', -1)
+(((a3*u(i,j+1))-(a3*u(i,j-1)))*(0.5*hx^-1)))
!--error 15
Submatrix incorrectly defined.
at line 11 of exec file called by :
emester\UGP\Scilab\Simulation1_Plot.sce', -1
请帮忙。
对于 3 维图形,您需要 2 个参数向量和一个函数值矩阵。所以我将 u 扩展为张量。
在您代码中的每个操作中,我都添加了术语的当前维度。现在,给出了对您的计算的透明处理。对于绘图,您必须使用 plot3d
(单值)或 surf
(曲面)命令。
在 3-dim 图中,您需要两个 map 2 向量 (hx,ht)
,n 和 m 为标量 z
。因此,您的结果达到了 (nxm)-矩阵。这是,你想做什么?目前,每个 u(i,j,:)
- 条目都有 13 个值,但每个数字都需要 (13x13)。也许 eval3d
-函数可以帮到你。
i_max= 3;
u = zeros(4,5,13);
a1 = 1;
a2 = 1;
a3 = 1;
b1 = 1;
hx = linspace(1D-6,1D6,13); // 1 x 13
ht = linspace(1D-6,1D6,13); // 1 x 13
for i = 1:i_max
for j = 2:4
u(i+1,j,:)= u(i,j)...
+ ht*(a1*u(i,j))*b1... // 1 x 13
+(((a2*u(i,j+1)) -(2*a2*u(i,j)) +(a2*u(i,j-1)))*(hx.^-2))... // 1 x 13
+(((a3*u(i,j+1))-(a3*u(i,j-1)))*(0.5*hx.^-1)) ... // 1 x 13
+ hx*ones(13,1)*ht; // added to get non-zero values
z = squeeze( u(i+1,j, : ))'; // 1x13
// for a 3d-plot: (1x13, 1x13, 13x13)
figure()
plot3d(ht,hx, z'* z ,'*' ); //
end
end