Mathematica编程

如何用Mathematica语言编写一个程序,解决如下问题求(34o5o6o8o9o1)o2=2008其中“o”代表一个运算符,只可以是“+.-.*”三种运算符使其结果得... 如何用Mathematica语言编写一个程序,解决如下问题

求 (34 o 5 o 6 o 8 o 9 o 1) o 2=2008
其中“o”代表一个运算符 ,只可以是“+.-.*”三种运算符
使其结果得2008
wacs5君,真是高手!钦佩之至!麻烦再解释以下
info = expr[{"+"}, {"-"}, {"*"}];

以及temp=StringJoin["(34",Part[info,a],"5",Part[info,b],"6",Part[info,c],"8",Part[info,d],"9",Part[info,e],"1)",Part[info,f],"2"];If [ToExpression[temp]==2008,Print[temp]]
]]]]]]
的意义!劳驾!
展开
 我来答
wacs5
2008-11-18 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2807万
展开全部
我好几年没弄Mathematica了,刚才网上看了一下它的语法,弄了一个最笨的方法。
但可行。
代码如下:
info = expr[{"+"}, {"-"}, {"*"}];
For [a=1,a<4,a++,
For [b=1,b<4,b++,
For [c=1,c<4,c++,
For [d=1,d<4,d++,
For [e=1,e<4,e++,
For [f=1,f<4,f++,
temp=StringJoin["(34",Part[info,a],"5",Part[info,b],"6",Part[info,c],"8",Part[info,d],"9",Part[info,e],"1)",Part[info,f],"2"];If [ToExpression[temp]==2008,Print[temp]]
]]]]]]

得到结果:
"(34*5*6-8-9+1)*2"
====================================

info = expr[{"+"}, {"-"}, {"*"}];
这句相当定义一个字符数组,第一个元素是加号,第二个元素是减号,第三个是乘号
你的表达式中有六个符号是吧.每个符号都只有上面这三种选择,
a,b,c,d,e,f分别代表这六个符号,那6个For的意思就是说,让它们取得所有的可能。

temp=StringJoin["(34",Part[info,a],"5",Part[info,b],"6",Part[info,c],"8",Part[info,d],"9",Part[info,e],"1)",Part[info,f],"2"];If [ToExpression[temp]==2008,Print[temp]]
]]]]]]

这里主要的语法:
part[info,a]和part[info,b]和part[info,c]等
由于a的取值是1到3,part[info,a]的意思是说取出info中第a个元素。比如说加号

StringJoin[str1,str2,str3,str4……]
的意思是说将str1,str2,str3,str4等字符串串在一起
对于上面的实例就是

"(34"
a符号
"5"
b符号
"6"
c符号
.
.
.
串在一起,这实际就是你的等式的左边。

ToExpression[temp]函数是求出temp这个字符串所对应的值,相当于计算等式左边的值。
If [ToExpression[temp]==2008,Print[temp]] 就是说如果等式成立,就打出这个等式的表达式(而不是表达式的值,表达式的值是上面的ToExpression[temp],也就是2008)

举个例子吧。程序中比如运行到
a=1,b=1,c=1,d=1,e=1,f=2
temp="(34+5+6+8+9+1)-2"
然后ToExpression[temp]就是求出"(34+5+6+8+9+1)-2"的值62
If判断它是不是等于2008,由于不等,就不输出"(34+5+6+8+9+1)-2"
草红样
2013-07-26 · TA获得超过240个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:157万
展开全部

用多重循环有些啰嗦,可以更简洁的,

Select[ToString@
    StringForm["(34``5``6``8``9``1)``2", Sequence @@ #] & /@ 
  Tuples[{"+", "-", "*"}, 6], ToExpression[#] == 2008 &]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ggggwhw
2008-11-17 · TA获得超过6692个赞
知道大有可为答主
回答量:2438
采纳率:0%
帮助的人:974万
展开全部
你确定会给分吗?
既然有人给了我就不写了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吉姆green
2008-11-17 · TA获得超过305个赞
知道答主
回答量:112
采纳率:0%
帮助的人:52万
展开全部
只会matlab
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
啦嘿咻
2008-11-17 · TA获得超过2468个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:427万
展开全部
软件分类: 国外软件 / 序列号版 / 教育教学
适用平台: Win9x/NT/2000/XP/Win2003
文件大小: 1K
评价星级:
发行厂商: 未知
整理日期: 2005-8-14 8:00:31
页面更新: 2005-8-14 8:00:32
程序语言: 英文
总计下载: 515
软件添加: 森鸟.com
解压密码:
软件介绍&安装方法: 序列号版
MatheMatica MAC 5.2

此为最新Mac版
Mathematica 系统
Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的。
Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确地处理,不过由于3.0以上版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。3.0以上版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。

Mathematica是美国Wolfram Research公司开发的数学软件。它的主要使用者是从事理论研究的数学工作者和其它科学工作者、以及从事实际工作的工程技术人员。Mathematica可以用于解决各种领域的涉及复杂的符号计算和数值计算的问题。它代替了许多以前仅仅只能靠纸和笔解决的工作,这种思维和解题工具的革新可能对各种研究领域和工程领域产生深远的影响。

Mathematica可以做许多符号演算工作:它能进行多项式的计算、因式分解、展开等。进行各种有理式计算,求多项式、有理式方程和超越方程的精确解和近似解。进行数值的或一般代数式的向量、矩阵的各种计算。求极限、导数、积分,幂级数展开,求解某些微分方程等。Mathematica还可以做任意位数的整数或分子分母为任意大整数的有理数的精确计算,做具有任意位精度的数值(实、复数值)的计算。所有Mathematica系统内部定义的整函数、实(复)函数也具有这样的性质。使用Mathematica可以很方便地画出用各种方式表示的一元和二元函数的图形。通过这样的图形,我们可以立即形象地把握住函数的某些特性,而这些特征一般很难从函数的符号表达式中看清楚。

Mathematica的能力不仅仅在于上面说的这些功能,更重要的在于它把这些功能有机地结合在一个系统里。在使用这个系统时,人们可以根据自己的需要,一会儿从符号演算转去画图形,一会又转去做数值计算。这种灵活性能带来极大的方便,常使一些看起来非常复杂的问题变的易如反掌。在学习和使用Mathematica的过程中读者会逐步体会这些。Mathematica还是一个很容易扩充和修改的系统,它提供了一套描述方法,相当于一个编程语言,用这个语言可以写程序,解决各种特殊问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式