Python快速基础2-求解线性方程与非线性方程
最近有别个专业的同学来找我帮助求解一个方程,基本求解方程公式如下:
FIRR是未知数,其他已知。

基本数据如下:
| t | CI-CO |
| 1 | -171603.51 |
| 2 | -171603.51 |
| 3 | 161584.14 |
| 4 | 209162.75 |
| 5 | 232952.05 |
| 6 | 232952.05 |
| 7 | 232952.05 |
| 8 | 242127.29 |
| 9 | 242127.29 |
| 10 | 242127.29 |
| 11 | 242127.29 |
| 12 | 242127.29 |
| 13 | 242127.29 |
| 14 | 242127.29 |
| 15 | 242127.29 |
一开始按照普通的方程组进行求解,即利用sympy。返回为空,后利用其它方式进行求解,注意该为非线性方程组,利用scipy.optimize 中的fsolve函数进行求解,代码如下:
import pandas as pd
import math#文件路径
file="chemistryData.xlsx"
data = pd.read_excel(file) #读取数据
data_CI_CO=data['m']
data_t=data['t']from scipy.optimize import fsolve
# 按格式要求定义我们需要求的函数
def f(FIRR):f = 0for i in range(0, 15):f = f + data_CI_CO[i] * (pow(1 + FIRR, -data_t[i]))return f
# 调用fsolve函数
sol_fsolve = fsolve(f, [0.1, 999]) # 第一个参数为我们需要求解的方程,第二个参数为方程解的估计值
print(sol_fsolve)
结果截图:

注意有运行警告
原先运行不成功的代码:
import sympy # 解方程的专业模块sympy
FIRR= sympy.symbols("FIRR") # 申明未知数"FIRR"
f=0
for i in range(0,15):f=f+data_CI_CO[i]*(pow(1+FIRR,-data_t[i]))
print(f)
F= sympy.solve([f],[FIRR]) # 写入需要解的方程体
print(F) # 打印出结果
参考自:
https://www.cnblogs.com/guiguiguoguo/p/11409348.html
https://www.cnblogs.com/ty123/p/10529541.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
