Matlab суммирование членов ряда, где коэффициенты определены в массиве
12.12.2020
Задача состоит в том, чтобы найти частичную сумму ряда из 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
Лучший ответ
Ответы
Что-то не очень понятно, какой ряд вы суммируете. Судя по коду, у вас не p определяется через q, а наоборот. По ошибочному коду искать ошибку, не видя заданной формулы, - дело бесперспективное...
Спасибо за комментарий. Возможно, действительно есть ошибка, которая мне не видна. Попробую пояснить фотографией:
P(k) у вас ф-ция от k и x.
сумма либо не м.б. числом, либо д.б. определен x.
ну либо что-то не хватает в условиях.
То, что частичная сумма, будет функцией от x, я, конечно, понимаю. Это я и хочу: каким-то образом получить частичную сумму функционального ряда, а не числового. Но я не знаю синтаксис, позволящий грамотно записать цикл по суммированию членов функционального ряда с коэф-тами такого вида. И, к сожалению, не могу пока найти подобных примеров
д.б. - должен быть
м.б. - может быть
т.о. - таким образом
к.л. - какой-либо
и т.д.
стандартные сокращения любого справочника/энциклопедии/etc., хотя я тоже не особо люблю сокращения, так, для скорости письма.
Т.е. на выходе не число должно быть, а функция?
Если так, то не думаете ли вы, что такую задачу предполагается решать аналитически? Причем тут циклы и т.п.? Явно же просматривается необходимость применения какого-то закона математики, т.к. и подынтегральная ф-ция и p(k) имеют очень схожий вид.
Да, на выходе функция.
Задача, действительно, должна решаться аналитически, но мне казалось, что написанное ниже можно реализовать в matlab.
Именно, предполагалось строить приближение функции - в данном случае числа pi (постоянная функция) - таким рядом. Но чтобы не прописывать p(x,1)+...+p(x,100), если захочется большую точность, я предпологала, что в matlab можно реализовать суммирование членов функционального ряда.
Цикл тут при том, что в функцию s(x) можно было бы накапливать частичную сумму членов ряда. Это тот вариант решения, что я пыталась изначально.
Огромное спасибо! Могли бы Вы ещё подсказать, каким образом, теперь можно обратиться к переменной s, например, для построения её графика s(x) , т.к. явно не прописана её зависимость от x...
4.2
Спасибо!
Дополнение для кода выше, чтобы построить график частичной суммы функционального ряда.
x1 = linspace(0,pi);
s1=subs(s,'s',0);
s2=subs(s1,'xx',x1);
z1=double(s2);
plot(x1,z1)
Вряд ли кому-то пригодиться, но для завершенности темы, публикую.
Ещё раз всем спасибо. Впервые пришлось узнать о символьных переменных в matlab, полезно.