如何快速求出相似值
mathematica吧
全部回复
仅看楼主
level 1
hscote 楼主
恳请老师帮我看看,这题应该如何做,才能算得比较快(取值范围可能会很大):
2018年10月09日 14点10分 1
level 8
1.125就是9/8啊。
2018年10月09日 14点10分 2
level 8
口算可得,a=d=1,b=e=m=4。
2018年10月09日 14点10分 3
我在这里只是举一个简单的例子,原式复杂得多
2018年10月09日 15点10分
level 9
看这提问的方式,应该是没能把握住问题。不过这表达式挺像三次方程求根公式的。
2018年10月10日 05点10分 5
三次方程求根的方法确很有趣
2018年10月10日 13点10分
吧务
level 7
FindInstance[(11250000 - 5)/
10000000 < ((-1)^n1 Sqrt[a + (-1)^n2 b Sqrt[m]] + (-1)^n3 Sqrt[
d + (-1)^n4 e Sqrt[m]])/8 < (11250000 + 5)/
10000000 && -10 <= {a, b, e} <= 10 && -10 <= d <= 30 &&
2 <= m <= 8 && 0 <= {n1, n2, n3, n4} <= 1, {a, b, d, e, m, n1, n2,
n3, n4}, Integers]
2018年10月10日 09点10分 7
非常感谢老师的帮助,这个解法的思路的确很高明
2018年10月10日 13点10分
吧务
level 7
空间换速度
sqrt[m_] := sqrt[m] = N@Sqrt[m]
bsqrt[b_, m_] := bsqrt[b, m] = b sqrt[m]
nbsqrt[n_, b_, m_] := nbsqrt[n, b, m] = (-1)^n bsqrt[b, m]
sqrtanbsqrt[a_, n_, b_, m_] :=
sqrtanbsqrt[a, n, b, m] = Sqrt[a + nbsqrt[n, b, m]]
Do[If[Abs[sqrtanbsqrt[a, n1, b, m] + sqrtanbsqrt[d, n2, e, m] - 9] <
4*^-6, Print[{n1, n2, a, b, d, e, m}]], {n1, 0, 1}, {n2, 0,
1}, {a, -10, 10}, {b, -10, 10}, {d, -10, 30}, {e, -10, 10}, {m, 2,
8}]
2018年10月11日 06点10分 9
真是太感谢,我测算了一下,速度超快!确实牛!!!谢谢老师啦!
2018年10月11日 11点10分
我是初学者,当中有些看不懂的[狂汗],我去琢磨琢磨,实在搞不懂再来求教
2018年10月11日 12点10分
老师,你好!这种算法语言我使用了万能度娘也没查明白,比如:sqrt是平方根,Abs是绝对值这我能懂,但 N@Sqrt[m],sqrt[m_]我就看不懂了,真是羞愧。能否请老师在百忙之中抽出宝贵的时间指点学生,逐句帮我讲解一下,你是如何用空间换速度的,用mathematica常用的语言应该怎么写?拜托老师了!
2018年10月13日 11点10分
我看明白的原理是:尽可能使用机器精度的小数( N@Sqrt[m]),而不是我们常用的精确形式,我搞不懂这种语言命令,跟书上讲的不一样,帮助上也没说明。
2018年10月13日 17点10分
吧务
level 7
我想你应该是没明白前面这4个函数定义的作用
比如定义函数如下:
f[x_]:=x^2+2x
+3

那么
f[4]+f[4]+f[4]=4^2+2*4+3+4^2+2*4+3+4^2+2*4+3=91
比如定义函数如下:
f[x_]:=f[x]=x^2+2x+3
那么
f[4]+f[4]+f[4]=4^2+2*4+3+f[4]+f[4]=27+27+27=81
也就是说f[4]只是第一次计算了4^2+2*4+3=27就记录在内存里了,后面的f[4]直接调用27这个值
总结:后一种定义占用了内存,但减少了计算
2018年10月14日 05点10分 10
这下彻底明白了,虽然我问的问题很幼稚,但老师却耐心的给予指导,真的非常感谢!!!
2018年10月14日 10点10分
1