• ベストアンサー

総和

matsu_junの回答

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.3

#2のmatsu_junです。 おせっかいにも、解説いたしましょうとも!! Function SIGMA(StartVal As Integer, EndVal As Integer, ALPHA As Double) SIGMAという関数を定義するよと宣言しています。 SIGMAには、3つの数をカンマで区切って入力してくださいねと書いてあります。 3つの数にはその後の処理の都合上、StartVal、EndVal、ALPHAと名前をつけました。 StartVal(iの初期値)、EndVal(iのMAX値)は整数(Integer)ですよ。ALPHAは整数とは限りませんよ(Double) と解説しています SIGMA = 0 あらかじめなにも計算していない状況では、SIGMAは0ですよ。当然ですよ。 For i# = StartVal To EndVal 2行下の「Next i」との間で挟まれた部分を繰り返し行いなさいという命令です。何回繰り返すのかというのが、i# = StartVal To EndVal という部分で分かります。例えばStartVal=0、EndVal=5であれば6回繰り返すということです。その際重要なのが、下の計算式のiには、繰り返した回数によって入力する値が変わるということです。一回目の計算ではi=0、二回目の計算ではi=1、以降i=2、i=3、i=4、i=5と入れていくのです。 SIGMA = SIGMA + ALPHA ^ i 一回目の処理について考えてみましょう。上で書いたとおり、今のところSIGMAは0です。これにALPHAのi乗、今はiはStartVal(上の行で説明した例であれば0)なので、ALPHAの0乗すなわち1を足したものを新しいSIGMAの値にするぞということです。つまりこの命令を処理することで、SIGMAの値は0から1に変化しました。 二回目はどうなるか。一回目の計算によって、SIGMA=1となっています。この時のiは上で説明したとおり1ですね。よって、元のSIGMA(=1)に、ALPHAの1乗すなわちALPHAを加えた値 1+ALPHA が新しいSIGMAになるということです。これを6回繰り返せば以下の結果になることは想像つきますでしょうか? SIGMA = 1 + ALPHA^1 + ALPHA^2 + ALPHA^3 + ALPHA^4 + ALPHA^5 Next i ここまでが繰り返し処理をする部分だよと言っています。日本語に訳してみると、「次のi」つまりiを1加算して上の計算をしようね。と、実はここで書かれています。 End Function これで処理は終わりです。と書いてあります。 面白いですよ。マクロって。私もまだまだマクロは勉強しなければと思っています。強者はExcelでパックマンなど昔のゲームセンターのゲームを再現しているくらいですから。

参考URL:
http://www.geocities.jp/nchikada/pac/
kamoshika333
質問者

お礼

わざわざどうもありがとうございました。 EXCELで関数をユーザー登録できるなんて、とっても便利ですね。とても良いことを教わりました。 これからもどんどん活用していきたいと思います。

関連するQ&A

  • C言語でシグマで総和を求める関数を作りたい

    おかしな点がありましたらご指摘お願いします /* nの総和を求める関数 */ int sum(int n) { /*     n-1      */ /* f(n) + Σ f(i)  (n > 1) */ /*     i=1      */ /* f(1)      (n = 1) */ if (n > 1)  return n + (n - 1) * (n / 2); /* 直接総和を返す*/ else if (n == 1)  return 1; }

  • 等比級数の総和?

    等比級数の総和? 添付の写真の数式についてですが、等比級数の総和の式 a(1-r^n)/(1-r)で計算できるかやってみたのですが、どうも同じ式に導けませんでした。どういう計算をしているかお分かりでしょうか?

  • 総和

    Σ[k=0~n] p^k (pは実数)がとけないのですが。。。 このような総和には公式があるのでしょうか

  • 総和の計算。

    こんばんは。 問題についてはpdfでupしてあります。 お手数ですが、宜しくお願いします。 式(1.1)から式(1.2)への導出が分かりません。 式(1.1)のf(x)に、問題文で示されたf(x)を代入して解いていけばいいのでしょうか? そうすると総和(Σ)が2つ出ると思うのですが (Σk=1,nとΣn=1,∞)、 その先どのように計算していけばいいかが分かりません。 もしかしたら、そこまで自体が間違ってるのかもしれませんが^^; ヒントの方をどなたかお願いしますm(_ _)m

  • 二つの積の総和

    1~nから二つの数を選んだ積の総和の求め方を教えてください

  • 総和の計算

    以下の総和の(極限の)求め方が分からずちょっと困っています。 Σ_[n=1,∞](n*2^(-n)) wolframさんに聞くとどうやら2のようですがどうやって出せばいいのか分からず・・・

  • SSEを利用した差分の総和の求め方

    現在、できるだけ速く、距離計算を行いたいと考えています。 具体的には、8bit符号なし整数列の距離計算です。 SSEを利用するのが速いので、 _mm_sad_epu8()を使って組みました。 確かに高速に動作しておりますが、 本当はSAD(絶対誤差の総和)ではなく、SSD(2乗誤差の総和)を求めたいのです。 8bitの符号なし整数列を32bitの符号付き整数列に置き換えてから、 計算するのだとは思いますが、どのように組めば効率が良いのか分かりません。 計算の流れは、 ・8bit→32bit ・32bit整数列の差分 ・32bit整数列の乗算(2乗) ・32bit整数列の総和 となると思いますが、 8bit→32bitを行う関数も見当たらないですし、 符号付き32bit整数列の乗算関数も見当たりません。 どなたかご存知であれば、教えていただけると幸いです。

  • JavaScriptで総和を求めるプログラム

    数値を入力させて総和を求めるプログラムなんですが、ブラウザが真っ白で何も出ません。 どこが間違っているのでしょうか。ブラウザはfirefoxです。IEでやってみたら、窓は出ますが、undefinedの文字が表示されていて、数字をそこに入力しても何も出ません。 <html> <body> <script> s=0; n=parselnt(prompt("nを入力してください")); for(i=1;i<=n;i++){ s=s+i; } document.write("s=",s); </script> </body> </html>

  • 約数の総和を求める問題

    たとえば、100の約数の総和をただ単に計算するのではなく、式などを用いて求める場合ってどのようにしたんでしたっけ?式の展開の知識を使って解くのですが・・・。

  • n^(-1)の総和は存在しますか?

    タイトルの通りです。 nの乗数が0以上の整数ならば、総和式がありますが、負の整数であればどうなのでしょうか? いつの号か忘れましたが雑誌「Newton」でn^(-1)を無限に足すと無限大に発散することを知りました。 その際、総和式を提示してくれなかったことに疑問を持ち、今日に至っております…