python - 求解一个隐函数,带小数的幂函数
问题描述
我想解决一个隐式函数,它包含幂函数并且索引存在小数。
我尝试通过scipy解决这个问题,但是它告诉我在power中遇到了无效值,我尝试通过sympy解决它,但是无论等待多长时间,它都无法输出答案。
这是隐式函数 https://imgur.com/o00dQYE
#####using scipy
from scipy.optimize import fsolve
import numpy as np
global Ccu, Czn, EC50Cu, EC50Zn, bCu, bZn
Ccu = 1
Czn = 1
EC50Cu = 0.000419
bCu = 0.2388
EC50Zn = 0.9319
bZn = 0.50946
def fomula(a):
# return Ccu/(EC50Cu * (((100-RRE)/RRE)**(1/bCu))) - 1
return Ccu/EC50Cu + Czn/EC50Zn * a ** (1/bCu-1/bZn) - a ** (1/bCu)
a = fsolve(fomula, 0)
print(a)
#####using sympy
from sympy import *
from sympy.parsing.sympy_parser import parse_expr
EC50Cu = 0.000419
bCu = 0.2388
EC50Zn = 0.9319
bZn = 0.50946
Ccu = 1
Czn = 1
x = Symbol('x')
s = solve(Ccu/EC50Cu + Czn/EC50Zn * x ** (1/bCu-1/bZn) - x ** (1/bCu),x)
print(N(s[0],10))
解决方案
import numpy as np
# input
Ccu,Czn = 1,1
EC50Cu = 0.000419
bCu = 0.2388
EC50Zn = 0.9319
bZn = 0.50946
# accuracy
acc = 0.001
for i in np.arange(1,99,acc):
RRE = i
a=Ccu/(EC50Cu * (((100-RRE)/RRE)**(1/bCu))) + Czn/(EC50Zn * (((100-RRE)/RRE)**(1/bZn)))
if (a-1)>-acc and (a-1)<acc:
print(i,a)
我知道 RRE 的范围,所以我只是遍历范围,并过滤我想要的答案。
推荐阅读
- javascript - 在 Tensorflow.js 中使用预训练模型预处理图像时出错 - TypeError:无法读取未定义的属性“应用程序”
- javascript - 重置 RxJS concatMap 而不完成外部 Subject
- java-native-interface - 在 JAR 中包含本机二进制文件(带有 maven-shade-plugin 的问题)
- java - 在模块中使用接口
- javascript - 使用三元运算符显示状态中的特定项目
- c - 为什么 valgrind 不检测内存泄漏?
- prolog - Prolog中的猜数字游戏
- c++ - c ++中的自定义类数组类型
- git - 如何在 github 上共享 vcpkg 库列表,我尝试导出 nuget 但文件大小很大
- javascript - 无法在智能手机上删除格式化的信用卡号