r - 求解 R 中的复杂方程
问题描述
我有一个方程,比如 a、b、c 和 d 是常数:
(b/(4.24 10^-11)) (1-2*x) + log(x/(1-x)) - log((a/(1-a))*c/d)) = 0
如何在 R 中求解这个方程以找到 x?
解决方案
1)假设常数都等于 0.1 并且解方程的 x 的值介于 0.1 和 .9 之间,我们有:
f <- function(x, a, b, c, d) (b/(4.2410^-11))*(1-2*x) +
log(x/(1-x)) - log((a/(1-a))*c/d)
uniroot(f, c(0.1, 0.9), a = .1, b = .1, c = .1, d = .1)
str(ans)
给予:
List of 5
$ root : num 0.5
$ f.root : num -8.54e-07
$ iter : int 2
$ init.it : int NA
$ estim.prec: num 6.1e-05
我们可以像这样绘制它:
curve(f(x, .1, .1, .1, .1), 0.1, 0.9)
abline(v = ans$root, h = ans$f.root)
2)另一种可能性是重新排列方程以给出:
x = (+1+(log(x/(1-x)) - log((a/(1-a))*c/d)) / (b/(4.2410^-11)))/2
然后迭代它。请注意,它立即收敛。
a <- b <- c <- d <- 0.1
x <- 0.25
for(i in 1:10) print(
x <- (+1+(log(x/(1-x)) - log((a/(1-a))*c/d)) / (b/(4.2410^-11)))/2
)
给予:
[1] 0.5000007
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
[1] 0.5000014
推荐阅读
- python-3.x - 服务器中的脚本保存在本地
- powershell - 绑定到 AD LDS 并更改用户密码
- react-native - react-native-navigation:如何检测用户何时在特定屏幕中杀死应用程序?
- python - 在多对点之间填充
- javascript - 如果将正则表达式传递给“RegExp”构造函数会发生什么?
- google-cloud-platform - Google Cloud Endpoint 无法识别我的 API
- python - 在使用 Python 的数据之前从带有描述和列标题的 txt 文件导入数值数据
- oracle - '具有不变名称'Devart.Data.Oracle' 的 ADO.NET 提供程序未在机器或应用程序配置文件中注册
- python - setup.py:入口点和 cmdclass 有什么区别?
- python - 获得numpy操作的进展?