シーケンスの合計を計算する機能は、私はシーケンスは、以下の場合、2つの入力(1および11)を持つことになります</p> <p>R.にこのシーケンスの合計を計算しようとしています
1 + (1 * 2/3) + (1 * 2/3 * 4/5) + (1 * 2/3 * 4/5 * 6/7) + ....................(1 *......10/11)
私は自分自身を定義することがここに行く方法だと思う。
シーケンスの合計を計算する機能は、私はシーケンスは、以下の場合、2つの入力(1および11)を持つことになります</p> <p>R.にこのシーケンスの合計を計算しようとしています
1 + (1 * 2/3) + (1 * 2/3 * 4/5) + (1 * 2/3 * 4/5 * 6/7) + ....................(1 *......10/11)
私は自分自身を定義することがここに行く方法だと思う。
あなたはちょうどここに昔ながらのループを使用して試みることができる:あなたがより高い値に1
から、あなたが望む任意の値にnum_terms
を設定することができます
sum <- 0
num_terms <- 6
for (i in 1:num_terms) {
y <- 1
if (i > 1) {
for (j in 1:(i-1)) {
y <- y * (j*2/(j*2 + 1))
}
}
sum <- sum + y
}
。この場合、ご質問の中で要求された数の番号であるため、私は6
という用語を使用しています。
誰かがこのコードスニペット全体を1行に縮小しますが、ここでは明示的なループが正当化されています。
ありがとうございます:) – Sid29
私のアプローチ:
# input
start <- 1
n <- 5 # number of terms
end <- start + n*2
result <- start
to_add <- start
for (i in (start + 1):(end-1)) {
to_add <- to_add * (i/(i + 1))
result <- result + to_add
}
できます:ここで
は、検証目的のための用語のそれぞれで使用されている値を出力し、デモへのリンクであり、
> result
[1] 4.039755
これは、あなたが意図した結果を与えるものではありません。たとえば、 'start = 1'と' end = 2'の場合、forループの境界は 'for(i in 2:1)'になります。 –
Hmm true。入力が開始番号とそれに続く語数になるようにコードを修正しました – brettljausn
内側の用語を生成するcumprod
はc(1, seq(2, 10, 2))/c(1, seq(3, 11, 2))
1、2/3、4/5、6/7、8/9、10/11とcumprod
累積積をとるシーケンスを生成し、ここ
sum(cumprod(c(1, seq(2, 10, 2))/c(1, seq(3, 11, 2))))
[1] 3.4329
あります。この結果はsum
で合計されます。返される結果は、受け入れられた回答の結果と同じです。
あなたが試すことができます:
library(tidyverse)
Result <- tibble(a=seq(1, 11, 2)) %>%
mutate(b=lag(a, default = 0)+1) %>%
mutate(Prod=cumprod(b)/cumprod(a)) %>%
mutate(Sum=cumsum(Prod))
Result
# A tibble: 6 x 4
a b Prod Sum
<dbl> <dbl> <dbl> <dbl>
1 1 1 1.0000000 1.000000
2 3 2 0.6666667 1.666667
3 5 4 0.5333333 2.200000
4 7 6 0.4571429 2.657143
5 9 8 0.4063492 3.063492
6 11 10 0.3694084 3.432900
# and some graphical analysis
Result %>%
ggplot(aes(as.factor(a), Prod, group=1)) +
geom_col(aes(as.factor(a), Sum), alpha=0.4)+
geom_point() +
geom_line()
をこの配列は、任意の数学的な名前を持っていますか? – amrrs
この用語 '(1 * 2/3)'はありませんか? – Jimbou
@Jimbouはい申し訳ありませんが、質問を更新しました。ありがとう – Sid29