• Регистрация
vuper
vuper+1.10
н/д
  • Написать
  • Подписаться

Matlab суммирование членов ряда, где коэффициенты определены в массиве

Задача состоит в том, чтобы найти частичную сумму ряда из p(x,k) число членов ряда задаётся  n. Сложность для меня в том, что p(x,k) опредялются через элементы массива q(k)  Начало, где ошиб...

Задача состоит в том, чтобы найти частичную сумму ряда из p(x,k) число членов ряда задаётся  n. Сложность для меня в том, что p(x,k) опредялются через элементы массива q(k) 

Начало, где ошибок не выдаёт:

x=0:0.001:pi;
q=ones(1,100);
for k=1:100
   fun=@(x,k) pi.*sin(k.*x);
   q(k)=integral(@(x) ((2./pi).^(1./2)).*fun(x,k),0,pi);
end

p=@(x,k) ((2./pi).^(1./2)).*q(k).*sin(k.*x);

То, что не получается: записать в корректной форме суммирование n членов ряда - p(x,k)

Не знаю как записать грамотно подобный цикл...

s=@(x)0; //частичная сумма
for k=1:n
s=s+p(x,k);
end

 

Теги

    12.12.2020

    Комментарии

    • Centurio
      Centurio+24.00
      13.12.2020 21:34

      Что-то не очень понятно, какой ряд вы суммируете. Судя по коду, у вас не p определяется через q, а наоборот. По ошибочному коду искать ошибку, не видя заданной формулы, - дело бесперспективное...

      • vuper
        vuper+1.10
        13.12.2020 22:47

        Спасибо за комментарий. Возможно, действительно есть ошибка, которая мне не видна. Попробую пояснить фотографией:

        • aBoomest
          aBoomest+402.93
          14.12.2020 10:59

          P(k) у вас ф-ция от k и x.

          сумма либо не м.б. числом, либо д.б. определен x.

          ну либо что-то не хватает в условиях.

          • vuper
            vuper+1.10
            14.12.2020 11:03

            То, что частичная сумма, будет функцией от x, я, конечно, понимаю. Это я и хочу: каким-то образом получить частичную сумму функционального ряда, а не числового. Но я не знаю синтаксис, позволящий грамотно записать цикл по суммированию членов функционального ряда с коэф-тами такого вида. И, к сожалению, не могу пока найти подобных примеров 

            • aBoomest
              aBoomest+402.93
              14.12.2020 11:08

              д.б. - должен быть
              м.б. - может быть
              т.о. - таким образом
              к.л. - какой-либо
              и т.д.
              стандартные сокращения любого справочника/энциклопедии/etc., хотя я тоже не особо люблю сокращения, так, для скорости письма.

              Т.е. на выходе не число должно быть, а функция?
              Если так, то не думаете ли вы, что такую задачу предполагается решать аналитически? Причем тут циклы и т.п.? Явно же просматривается необходимость применения какого-то закона математики, т.к. и подынтегральная ф-ция и p(k) имеют очень схожий вид.

              • vuper
                vuper+1.10
                14.12.2020 11:18

                Да, на выходе функция.

                Задача, действительно, должна решаться аналитически, но мне казалось, что написанное ниже можно реализовать в matlab.

                Именно, предполагалось строить приближение функции - в данном случае числа pi (постоянная функция) - таким рядом. Но чтобы не прописывать p(x,1)+...+p(x,100), если захочется большую точность, я предпологала, что в matlab можно реализовать суммирование членов функционального ряда. 

                Цикл тут при том, что в функцию s(x) можно было бы накапливать частичную сумму членов ряда. Это тот вариант решения, что я пыталась изначально. 

                • aBoomest
                  aBoomest+402.93
                  14.12.2020 11:30
                  q_pf = @(x,k) sqrt(2*pi).*sin(k.*x);
                  
                  x=0:0.1:pi;
                  q=zeros(100,1);
                  for k=1:100
                     q(k)=integral(@(x) q_pf(x,k),0,pi);
                  end;
                  
                  p = @(x,k) (sqrt(2/pi))*q(k)*sin(k*x);
                  
                  syms xx s;
                  for kk = 1:10
                      s = s + p(xx,kk);
                  end;
                  • vuper
                    vuper+1.10
                    14.12.2020 11:36

                    Огромное спасибо! Могли бы Вы ещё подсказать, каким образом, теперь можно обратиться к переменной s, например, для построения её графика s(x) , т.к. явно не прописана её зависимость от x...

                    • aBoomest
                      aBoomest+402.93
                      14.12.2020 11:47
                      • vuper
                        vuper+1.10
                        14.12.2020 11:48

                        Спасибо!

      • vuper
        vuper+1.10
        14.12.2020 12:42

         

        Дополнение для кода выше, чтобы построить график частичной суммы функционального ряда.

        x1 = linspace(0,pi);
        s1=subs(s,'s',0);
        s2=subs(s1,'xx',x1);
        z1=double(s2);

        plot(x1,z1)

         

        Вряд ли кому-то пригодиться, но для завершенности темы, публикую.
        Ещё раз всем спасибо. Впервые пришлось узнать о символьных переменных в matlab, полезно.