我試圖解決逆問題以下功能R.給出的答案
x + 2 (C1 * y) + C1 * C1 * z = d2
我目前可以進入C1
並獲得d2
但需要輸入d2
並獲得當查找函數的係數C1
。變量x
,y
和z
都是已知的並且永遠不會改變。
我已經有一些已知的使用C1
和d2
值。
C1 d2
5 0.000316
0 0.000193
-5 0.00
是否有R
功能,這將讓我進入功能,以前的結果和d2
值和它返回C1
係數?
我試圖解決逆問題以下功能R.給出的答案
x + 2 (C1 * y) + C1 * C1 * z = d2
我目前可以進入C1
並獲得d2
但需要輸入d2
並獲得當查找函數的係數C1
。變量x
,y
和z
都是已知的並且永遠不會改變。
我已經有一些已知的使用C1
和d2
值。
C1 d2
5 0.000316
0 0.000193
-5 0.00
是否有R
功能,這將讓我進入功能,以前的結果和d2
值和它返回C1
係數?
你有一個二次方程的f ORM:
(x - d2)*C1^0 + (2*y)*C1^1 + (z)*C1^2 = 0
在R中可以解決與功能polyroot()
二次方程式(實際上任何多項式方程):
x <- 1
y <- 2
z <- 3
d <- 0
polyroot(c(x-d, 2*y, z))
[1] -0.3333333+0i -1.0000000+0i
(可提供兩種解決方案,正如你所期望)
爲了解決一系列的輸入值,你需要把它放到你最喜歡的apply
函數中,在這種情況下爲sapply()
:
d <- seq(0, 1, 0.2)
sapply(d, function(dd)polyroot(c(x-dd, 2*y, z)))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.3333333+0i -0.2450296+0i -0.1722534-0i -0.1088933-0i -0.05203037+0i 0.000000+0i
[2,] -1.0000000+0i -1.0883037+0i -1.1610799+0i -1.2244400+0i -1.28130296+0i -1.333333+0i
+1代數技能。 – 2012-07-16 16:12:37
謝謝。 :)我想我需要刷上我的代數。 – TrueWheel 2012-07-16 16:16:00
你有
d2 = x + 2 C1 y + C1^2 z
,你可以重新排列,或者只是將其插入Wolfram Alpha得到
z C1^2 + 2 y C1 + x - d2 = 0
這是C1,它可以解決或者使用二次公式quadratic equation得到
C1 = (-sqrt(d2 * z - x * z + y^2) - y)/z
代數是1000多年前發明的,用於解決這類問題。 – Andrie 2012-07-16 15:39:30
@Andrie我確定這是。我也認爲有人會創建一個R包來幫助解決這個問題。 – TrueWheel 2012-07-16 15:44:19
嗯,我想你可以嘗試[聊天[(http://chat.stackoverflow.com/)這種問題。 – 2012-07-16 15:49:40