关MatheMatica中函数如何使用矩阵全局变量? 20
定义了一个全局变量矩阵BB,5行5列,全为0。函数f使用了BB作为参数,因为需要递归所以使用了全局变量。在运算过程中令BB[[1]]=AA[[1]],把矩阵AA的第一行拷...
定义了一个全局变量矩阵BB,5行5列,全为0。函数f使用了BB作为参数,因为需要递归所以使用了全局变量。
在运算过程中令BB[[1]]=AA[[1]],把矩阵AA的第一行拷贝入BB第一行,但是出现提示:
Set::setps: "部分赋值中的 {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}} 不是一个符号.
这种情况主要怎么办?
我需要递归调用f,逐步对BB进行修改,最终f结束后得到BB的值。 展开
在运算过程中令BB[[1]]=AA[[1]],把矩阵AA的第一行拷贝入BB第一行,但是出现提示:
Set::setps: "部分赋值中的 {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}} 不是一个符号.
这种情况主要怎么办?
我需要递归调用f,逐步对BB进行修改,最终f结束后得到BB的值。 展开
展开全部
虽然你没给具体代码所以没法完全肯定,但是应该是计算次序的问题。要用形如BB[[1]]=AA[[1]]的方法修改BB,则BB必须为一个变量,但是,当你把BB做为函数自变量,又没有给函数加相应的属性的时候,BB在做为自变量的时候会自己计算一次变成一个阵。这么空口讲可能比较干巴,下面举个例子,请仔细观察输出,用心体会:
Clear[f, g, h]
m = {1, 2, 3};
f[mat_] := (mat[[1]] = 4; mat)
f[m]
SetAttributes[g, HoldFirst]
g[mat_] := (mat[[1]] = 5; mat)
g[m]
h[mat_] := Module[{m = mat}, m[[1]] = 6; m]
h[m]
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询