Wolfram Mathematica 给变量赋值问题没解决

如何才能生成x1,x2,x3这种形式的变量,并分别给这些变量赋值。而不是x[1]或x[[1]]这样形势的变量,因为后面两种形式的变量输入和代换不太方便,有点使人眼花缭乱。... 如何才能生成x1,x2,x3这种形式的变量,并分别给这些变量赋值。而不是x[1]或x[[1]]这样形势的变量,因为后面两种形式的变量输入和代换不太方便,有点使人眼花缭乱。
例如手动输入:{x1,x2,x3}={5,6,7};
输出:x1=5,x2=6,x3=7
此时, x1,x2,x3都被赋上相应的值了。
如果有成千万个这样形式的变量怎么赋值?如果这样做:
s1 = Table[Symbol["x" <> ToString[i]], {i, 3}]
s2 = {5, 6, 7};
s1 = s2;
x1
x2
x3
为什么查看x1,x2,x3都没有赋上数值?如何才能把x1赋上5,x2赋上6,x3赋上7呢?
请老师指导!
展开
 我来答
匿名用户
推荐于2017-09-27
展开全部
在Mathmatica中用等号=为变量赋值。同一个变量可以表示一个数值,一个数组,一个表达式,甚至一个图形。如:
In[1]:=x=3
Out[1]=3
In[2]:=x^2+2*x
Out[2]=15
In[3]:=x=%+1
Out[3]=16
对不同的变量可同时赋不同的值,例如:
In[4]:={u,v,w}={1,2,3}
Out[4]={1,2,3}
In[5]:=2u+3v+w
Out[5]=11
对于已定义的变量,当你不再使用它是,为防止变量值的混淆,可以随时用=.清除它的值,如果变量本身也要清除用函数Clear[var],例如:
In[6]:=u=.
In[7]:=2u+v (上面已定义了u,v的值)
Out[7]=2+2u

如果是函数问题,还有所谓的延迟赋值.
延迟定义函数从定义方法上与即时定义的区别为 “=” 与“:=”延迟定义的格式为f[x_]:=expr其他操作基本相同。那么延迟定义和即时定义的主要区别是什么?即时定义函数在输入函数后立即定义函数并存放在内存中并可直接调用。延时定义只是在调用函数时才真正定义函数。
xzcyr
推荐于2017-09-10 · TA获得超过3399个赞
知道大有可为答主
回答量:1400
采纳率:100%
帮助的人:668万
展开全部

……后两种输入和代换怎么不方便了?你也问过不少问题了,理应早注意到了,要造出x1, x2, x3比造出x[1], x[2], x[3]和x[[1]], x[[2]], x[[3]]麻烦得多,x1, x2, x3与其他Mathematica函数相互配合的能力也要比后两者弱得多,不肯放弃这种在C语言等相对低级的语言中养成的变量命名习惯只会让你在后续的编程中付出更加沉重的代价。


然后说说为什么后面的赋值会失败。很简单,因为你的第三行代码是在给s1赋值——s1也是一个变量,尽管你的第一行代码使它存储了一个表,但是它是一个变量的事实丝毫不会改变,你随时可以给它重新赋值,抹消其中的原有赋值。更深入一点说的话,这个和Set(=)的HoldFirst属性有关,不过这里懒得多说了。总之,要使得其中的列表被赋值——其实这点在你之前的问题里面我也说过了:

s1 = Table[Symbol["x" <> ToString[i]], {i, 3}]
s2 = {5, 6, 7};
Evaluate@s1 = s2;
x1
x2
x3
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式