微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用 Python 求解联立方程和积分

如何解决用 Python 求解联立方程和积分

我正在尝试解决这些联立方程:

(1)

enter image description here

(2)

enter image description here

我认为答案是:

a = 0.0031
b = 0.6587

我试过了:

from sympy import Eq,solve
from sympy.abc import a,b
from scipy.integrate import quad

def integrand(theta):
    return 105*theta**2*(1-theta)**4

def integrate(a,b):
    return quad(integrand,a,b)[0]

sol = solve([ Eq(a*(1-a)**5,b*(1-b)**5),Eq(integrate(a,b),0.95) ])

print(sol)
print({ s:sol[s].evalf() for s in sol })

但我得到了:

TypeError: cannot determine truth value of Relational

我希望计算机自动进行集成,但我尝试手动集成:

sol = solve([ Eq(a*(1-a)**5 - b*(1-b)**5),Eq(  b**3/3 -b**4 +6*b**5/5 -2*b**6/3 +b**7/7
                 -(a**3/3 -a**4 +6*a**5/5 -2*a**6/3 +a**7/7)
                 -0.95/105) ])

print(sol)

但我得到了:

[]

所以我尝试了 nsolve,因为您可以为求解器设置起点:

from sympy import Symbol,nsolve

a = Symbol('a')
b = Symbol('b')

f1 = a*(1-a)**5 - b*(1-b)**5
f2 = b**3/3 -b**4 +6*b**5/5 -2*b**6/3 +b**7/7 - (a**3/3 -a**4 +6*a**5/5 -2*a**6/3 +a**7/7) -0.95/105

Sol = nsolve((f1,f2),(a,(0.5,0.5))
print(Sol)

但我得到了:

ZeroDivisionError: matrix is numerically singular

我接下来尝试将我认为的正确答案 (a0,b0) 作为起点。

from sympy import Symbol,nsolve
from scipy.integrate import quad

a0 = 0.0031
b0 = 0.6587

a = Symbol('a')
b = Symbol('b')

f1 = a*(1-a)**5 - b*(1-b)**5
f2 = b**3/3 -b**4 +6*b**5/5 -2*b**6/3 +b**7/7 - (a**3/3 -a**4 +6*a**5/5 -2*a**6/3 +a**7/7) -0.95/105

Sol = nsolve((f1,(a0,b0))

a1 = Sol[0]
b1 = Sol[1]

print('a: ',a0,a1)
print('b: ',b0,b1)

def integrand(theta):
    return 105*theta**2*(1-theta)**4

def integrate(a,b)[0]

a,b=a0,b0
print(' ')
print('a,b0')
print('a: ',a)
print('b: ',b)
print('a*(1-a)**5: ',a*(1-a)**5)
print('b*(1-b)**5: ',b*(1-b)**5)
I = integrate(a,b)
print('I: ',I)

a,b=a1,b1
print(' ')
print('a,b1')
print('a: ',I)

我得到了:

a:  0.00309652149716206
b:  0.658740229906034
a*(1-a)**5:  0.00304887526056235
b*(1-b)**5:  0.00304887526056235
I:  0.95

(a,b) 满足方程 1(它们有 a*(1-a)**5 = b*(1-b)**5) 和方程 2(I 是 0.95)。正如我所说,我希望计算机自动进行积分:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?