关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的值。
展开
 我来答
xzcyr
2018-02-03 · TA获得超过3396个赞
知道大有可为答主
回答量:1400
采纳率:100%
帮助的人:646万
展开全部

虽然你没给具体代码所以没法完全肯定,但是应该是计算次序的问题。要用形如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]
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式