| 查看: 1279 | 回复: 0 | ||
| 【悬赏金币】回答本帖问题,作者xjzeng将赠送您 10 个金币 | ||
xjzeng木虫 (小有名气)
|
[求助]
python解非线性方程的问题
|
|
|
废话不多说,上代码 方法1: from sympy import * t=symbols('t') eq=eq(10**20*exp(-12000/t)/(0.01+10**14*exp(-12000/t))-18700*(t-300)) #eq=[10**20*exp(-12000/t)/(0.01+10**14*exp(-12000/t))-18700*(t-300)]#改成这样结果也是一样的 result=nonlinsolve(eq,t) print(result) 程序运行,返回的是一个conditionset对象,说明不能解这个方程。 方法2: import numpy as np from scipy.optimize import fsolve def f(t): return 10**20*np.exp(-12000/t)/(0.01+10**14*np.exp(-12000/t))-18700*(t-300) result=fsolve(f,[300]) print(result) 运行结果报错 minpack.error: result from function call is not a proper array of floats. 方法3 import math from scipy.optimize import fsolve def f(t): return 10**20*math.exp(-12000/t)/(0.01+10**14*math.exp(-12000/t))-18700*(t-300) result=fsolve(f,[300]) print(result) 第3种方法能解出一个根 [303.3],但是方程有3个根。如果把“result=fsolve(f,[300])”这句改成“result=fsolve(f,[320])“,可以得到第二个根 [323.7];如果“result=fsolve(f,[300])”这句改成“result=fsolve(f,[360])“,可以得到第三个根 [349.4]。 如果把“result=fsolve(f,[300])”这句改成“result=fsolve(f,[300,320.360])“,则会报错 typeerror: only size-1 arrays can be converted to python scalars 各位大佬,如何才能把三个根一次性解出来呢? |
» 猜你喜欢
OpenAI又攻克数学难题了,离AI做有机合成还有多远?
已经有13人回复
申请科研项目纯靠实力能成功吗?
已经有7人回复
极限拉扯,如何抉择
已经有14人回复
课题组会帮你通过考核么?
已经有7人回复
入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍
已经有6人回复
售一区SCI文章T0P,我:8O.551.O54,科目全,可十急
已经有9人回复
售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急
已经有10人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有8人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有9人回复
售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急
已经有7人回复










回复此楼
200