Пока что из того, что я прочитал, эта ошибка может быть вызвана путаницей или избыточным именованием в программе, но я не думаю, что это проблема здесь, так как все объявлено четко. Из того, что я вижу в этой статье, моя проблема исходит из объявления кусочных данных, которое затем проходит через интеграцию ниже, и поэтому программа пытается получить доступ к ячейке массива, которая не существует. Если это так, то я до сих пор был озадачен тем, как решить эту проблему. Любая помощь с этой проблемой будет принята с благодарностью.
syms t k n
fct = @(t)evalin(symengine,['subs(piecewise([0 <= t and t < 2,',...
'sin((Pi*t^2)/4)],[t <= 2 and t < 3, 5*t-t^2-6], [t <=3 and t < 4, 0],',...
'[Otherwise, t-4]),t=',regexprep(mat2str(x),' ',','),')']);
evalin(symengine,'assume(k,Type::Integer)');
a = @(fct,t,k) int(fct*cos(k*pi*t/4)/4,t,-2,8);
b = @(fct,t,k) int(fct*sin(k*pi*t/4)/4,t,-2,8);
FourierSeries = @(fct,t,n) a(fct,t,0)/4 + ...
symsum(a(fct,t,k)*cos(k*pi*t/4) + b(fct,t,k)*sin(k*pi*t/4),k,1,n);
pretty(FourierSeries(t,25,1))
ezplot(FourierSeries(t,25,1),-2,8)
hold on
ezplot(fct,-2,8)
hold off
title('Partial sum with n=25')
Полный текст ошибки выглядит следующим образом:
??? Попытка ссылки на поле неструктурного массива.
Ошибка в ==> sym.int в 56
r = mupadmex ('symobj :: intdef', f.s, x.s, a.s, b.s);
Ошибка в ==> @ (fct, t, k) int (fct * cos (k * pi * t / 4) / 4, t, -2,8)
Ошибка в ==>
@ (ПКТ, т, п) (ПКТ, т, 0) / 4 + symsum (а (ПКТ, т, к) * сов (к * пи * т / 4) + Ь (ПКТ, т, к) * Sin (к * пи * т / 4), к, 1, п)
Ошибка в ==> FourierProgram в 16 довольно (FourierSeries (т, 25,1))