суммирование степени числа Фибоначчи? [закрыто]

Вот написал пару функций угасания звука и повышения

& autocay автозапуска аудио = "1" onPlay = "audioVolumeIn (this);" & gt; «nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; источник src = "/ test / new / imgs / audio_bg.wav" type = "audio / wav" & gt; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & lt; источник src = "/ test / new / imgs / audio_bg.mp3" type = "audio / mpeg" & gt; & lt; / audio & gt;

    function audioVolumeIn(q){
       if(q.volume){
          var InT = 0;
          var setVolume = 0.2; // До какого уровня поднимать
          var speed = 0.005; // Скорость увиличения
          q.volume = InT;
          var eAudio = setInterval(function(){
              InT += speed;
              q.volume = InT.toFixed(1);
              if(InT.toFixed(1) >= setVolume){
                 clearInterval(eAudio);
                 //alert('clearInterval eAudio'+ InT.toFixed(1));
              };
          },50);
       };
   };

   function audioVolumeOut(q){
       if(q.volume){
          var InT = 0.4;
          var setVolume = 0;  // Начальное значение звука
          var speed = 0.005;  // скорость затухания
          q.volume = InT;
          var fAudio = setInterval(function(){
              InT -= speed;
              q.volume = InT.toFixed(1);
              if(InT.toFixed(1) <= setVolume){
                 clearInterval(fAudio);
                 //alert('clearInterval fAudio'+ InT.toFixed(1));
              };
          },50);
       };
   };
-2
задан tobias_k 18 March 2019 в 14:30
поделиться

1 ответ

Это упражнение по манипулированию рекуррентными отношениями, в основном. Чтобы понять этот ответ, вам должно быть удобно переключаться между матрицей и формой системы.

Сначала мы получаем повторение для fib(i)^K. На самом деле это включает в себя систему повторений для fib(i)^K, fib(i)^(K-1) fib(i-1), fib(i)^(K-2) fib(i-1)^2, ..., fib(i-1)^K. Я продемонстрирую для K = 3.

fib(i)^3 = (fib(i-1) + fib(i-2))^3
         = fib(i-1)^3 + 3 fib(i-1)^2 fib(i-2) + 3 fib(i-1) fib(i-2)^2 + fib(i-2)^3
fib(i)^2 fib(i-1) = (fib(i-1) + fib(i-2))^2 fib(i-1)
                  = fib(i-1)^3 + 2 fib(i-1)^2 fib(i-2) + fib(i-1) fib(i-2)^2
fib(i) fib(i-1)^2 = (fib(i-1) + fib(i-2)) fib(i-1)^2
                  = fib(i-1)^3 + fib(i-1)^2 fib(i-2)
fib(i-1)^3 = fib(i-1)^3

Они могут быть объединены в одну матрицу.

[fib(i)^3    fib(i)^2 fib(i-1)    fib(i) fib(i-1)^2    fib(i-1)^3] =
                                                                           i
= [fib(0)^3    fib(0)^2 fib(-1)    fib(0) fib(-1)^2    fib(-1)^3] [1 0 0 0]
                                                                  [3 1 0 0]
                                                                  [3 2 1 0]
                                                                  [1 1 1 1]
                     i
= [0 0 0 1] [1 0 0 0]
            [3 1 0 0]
            [3 2 1 0]
            [1 1 1 1]

Вы можете узнать треугольник Паскаля там.

Теперь, учитывая систему повторений для функции f(i), мы можем вычислить повторения для f(c i), увеличив матрицу до степени c.

Последний шаг - перейти от повторения f(i) к повторению F(i) = f(0) + f(1) + ... + f(i-1). Просто добавить уравнение

F(i) = F(i-1) + f(i-1)

в систему.

Вычислив матрицу, которая, по моей оценке, будет иметь не более 12^2 = 144 элементов, мы можем вычислить соответствующую мощность, используя быстрый метод возведения в степень 10^9 + 7. Имейте в виду скрывающуюся одну-единственную ошибку & ndash; это F(n+1), что вы хотите.

0
ответ дан David Eisenstat 18 March 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: