如何用 Python 解北大招生题

2019-01-19 19:24:19 +08:00
 mingyun

在 b 站看了个视频北大招生题

北大招生题:a+b+c=1,a²+b²+c²=2,a³+b³+c³=3 求 abc 的值

结果 abc=1/6

除了用数学公式怎么用 python 来解呢?搜了下有个 sympy 的库

from sympy import *
x=Symbol('x')
y=Symbol('y')
z=Symbol('z')
solve([x+y+z-1,x**2+y**2+z**2-2,x**3+y**3+z**3-3],[x,y,z])#这个不行

solve([x+y+z-1,x**2+y**2+z**2-2,x**3+y**3+z**3-3],[x*y*z])
[]
1887 次点击
所在节点    Python
5 条回复
jiejiss
2019-01-19 20:58:50 +08:00
可能需要先学线性代数,之后用线代那一套去解。
qwertyegg
2019-01-21 05:57:11 +08:00
prolog
necomancer
2019-01-24 22:51:39 +08:00
黑科技飘过

Mathematica 11.2.0 Kernel for Linux x86 (64-bit)
Copyright 1988-2017 Wolfram Research, Inc.

In[6]:= Reduce[Exists[{x,y,z},x+y+z==1&&x^2+y^2+z^2==2&&x^3+y^3+z^3==3&&x*y*z==a],a] // ToString

Out[6]= 1
a == -
6

……
necomancer
2019-01-24 22:52:30 +08:00
空格被和谐掉了……呃(⊙﹏⊙)
lovestudykid
2019-02-07 01:30:31 +08:00
DeleteDuplicates[ Table[a*b*c /.Solve[{a + b + c == 1, a^2 + b^2 + c^2 == 2,a^3 + b^3 + c^3 == 3}, {a, b, c}][[i]] // FullSimplify, {i,1,6}]]
Sympy 大概可以用类似这种笨办法,mathematica 是黑科技

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/528648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX