How can I solve equation for a variable z? I tried this
library(Ryacas)
yac("Solve((0.07-0.07exp(-z)-0.06508080z) == 0, z)")
I got the wrong answer. The correct answer z=0.148
How can I solve equation for a variable z? I tried this
library(Ryacas)
yac("Solve((0.07-0.07exp(-z)-0.06508080z) == 0, z)")
I got the wrong answer. The correct answer z=0.148
A obvious answer is z = 0, since then you would have 0.07 - 0.07 \cdot e^0 - 0.0650808 \cdot 0 = 0.07 - 0.07 - 0 = 0.
If you want to solve such equations in R
you could rely on the base function uniroot
, which takes the intervall to search in for a root as well as the function as arguments and returns the x
values for which your function is equal to zero, e.g. f(x) = 0:
func <- function(x) 0.07 - 0.07 * exp(-x) - 0.0650808 * x
# find the obvious answer by including 0 in the interval
uniroot(func, lower = 0, upper = 1)
#> $root
#> [1] 0
#>
#> $f.root
#> [1] 0
#>
#> $iter
#> [1] 0
#>
#> $init.it
#> [1] NA
#>
#> $estim.prec
#> [1] 0
# find the second root by adjusting the interval
uniroot(func, lower = 0.01, upper = 1)
#> $root
#> [1] 0.1475151
#>
#> $f.root
#> [1] 1.406651e-07
#>
#> $iter
#> [1] 9
#>
#> $init.it
#> [1] NA
#>
#> $estim.prec
#> [1] 6.103516e-05
Created on 2022-09-01 by the reprex package (v2.0.1)
As an additional hint: You have to explicitly use operators like "*" to tell R
what it has to do. E.g. in your above code 0.07exp(-z)
is not separated by "*", so R
tries to find e.g. a function called 0.07exp which you try to pass an argument, -z
, into it (and can obviously not find a suitable function because it wasn't defined).
I hope this clarifies some of your issues regarding R
and function solving in R
.
Kind regards
yacas' newton solver finds your value
yac("Newton((0.07-0.07*Exp(-z)-0.06508080*z),z,0.1,0.0001)")
"0.147545136027390784"
Its nice to throw equations at wolframAlpha to verify etc.
solve - Wolfram|Alpha (wolframalpha.com)
Thank you for your help.
Thank you for your help.
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
If you have a query related to it or one of the replies, start a new topic and refer back with a link.