lsrong314 发表于 2012-3-25 15:35:11

请教一个命令函数

用reduce求出一个含有2个未知数的方程的整数解以后,怎么把其中一个变量的所有可能值存到一个集(set)合中?
举个例子,输入
m = 13; g=Reduce[ s^2 + 3 a^2 == 37 m^4 && 0 < s && a > 0, {a, s}, Integers]
得出
(a == 26 && s == 1027) || (a == 294 && s == 893) || (a == 338 &&
s == 845) || (a == 546 && s == 403) || (a == 586 && s == 163)
怎么让它自动把26,294,338,546,586存到{}里?
我记得a./g可以的,但是试了不行.不知道错在哪了

wayne 发表于 2012-3-25 20:43:34

a/.g是不符合语法的。

因为ReplaceAll函数 /.要求第二个参数是Rule类型的。而g是逻辑表达式。
需要将逻辑表达式g转换成Rule类型的,参考代码如下:a /. List]其实Mathematica的每一种表达式都非常有趣的,楼主琢磨一下这种方式,
也是异曲同工的:g[] /. Or -> List

wayne 发表于 2012-3-25 21:05:31

Mathematica8里的Solve函数也支持丢番图方程的:m = 13; g = Solve然后是 a/.g
不过,返回结果是用ConditionalExpression表达的。

试试g[]
页: [1]
查看完整版本: 请教一个命令函数