小福利,如何用python解方程

小福利,如何用python解方程
对于一个普通二元一次方程,很简单,比如a+b=1,直接令b=1-a,画一个直线图就解决了。
对于两个三元一次方程,如何解决呢,因为如果要求的唯一解,必须要有三个三元一次方程才能够完全消元。那么我们退而求其次,看看在满足两个三元一次方程的前提下,是否能够找到满足方程的解呢。
题设,a+b+c=1,abc=1,求得a,b,c解?当消去c,那么只剩下a和b的一个关系式,能否将a和b分开呢?
消去c得到,a+b+1/ab=1
假设想通过python编程求出所有的a,b值

import numpy as np
import random

# data = (
#     np.random.normal(size=(100, 3)) *
#     np.array([[0.1, 0.1, 0.1]]) +
#     np.array([[40, 116.5, 1]])
# ).tolist()
# # print(data[:20])
# print(np.random.normal(size=(100, 3)))
i=0
while True:
    a=float(f'{random.random()*10000:.10f}')
    b=float(f'{random.random()*10000:.10f}')
    c1=-1/(a*b)
    c2=1-a-b

    if c1==c2:
        print(c1,c2)
        break
    i+=1
    print('这是第',i,'次运算')

小福利,如何用python解方程_第1张图片
但是很遗憾,计算机计算了两千万次也没有给出值,原因在于在给a和b赋值的时候,你无法给出逼近真实值的范围值,计算机其实是个很聪明也很笨的东西。

那么通过分析论证,a和b只可能是一正一负两个值(分析过程省略,具体用到了平方和不等式论证法),因此令a=-1,求得此时b=√(2)+1约等于2.41,c等于1-√(2)约等于-0.41,那么验证下a+b+c=1,abc=1是成立的,也就是找到了这样一个解。这样的解也是有无数多个。
根据数形结合的思想,其实令c1=1/ab,c2=1-a-b,当c1=c2也就是两个曲面相交时的所有的a和b的值。
我们完全可以通过三维画图软件matlib,分别画出这两个曲面,然后求出两个曲面相交时所有的a b值。

你可能感兴趣的:(python,python,开发语言,机器学习)