找回密码
 欢迎注册
查看: 8261|回复: 2

[提问] 请教一个命令函数

[复制链接]
发表于 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可以的,但是试了不行.不知道错在哪了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-3-25 20:43:34 | 显示全部楼层
a/.g是不符合语法的。

因为ReplaceAll函数 /.要求第二个参数是Rule类型的。而g是逻辑表达式。
需要将逻辑表达式g转换成Rule类型的,参考代码如下:
  1. a /. List[ToRules[g]]
复制代码
其实Mathematica的每一种表达式都非常有趣的,楼主琢磨一下这种方式,
也是异曲同工的:
  1. g[[All, 1, 2]] /. Or -> List
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-3-25 21:05:31 | 显示全部楼层
Mathematica8里的Solve函数也支持丢番图方程的:
  1. m = 13; g = Solve[s^2 + 3 a^2 == 37 m^4 && 0 < s && a > 0, a, Integers]
复制代码
然后是 a/.g
不过,返回结果是用ConditionalExpression表达的。

试试g[[All, 1, 2, 1]]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-22 14:34 , Processed in 0.042482 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表