Есть код, который должен работать (из метод. указаний)
Код:
clc; clear;
t1 = -pi/2; t2 = pi/2;
syms X1 X2 X3 Y t
X1 = 1; X2 = sin(t); X3 = cos(t); Y = pi/2+t;
disp 'Исходный набор функций'
X = [X1 X2 X3]
disp 'Матрица Грама'
G_X = vpa(int(X'*X, t1, t2), 5)
if vpa(det(G_X), 4) ~= 0
disp 'Невырожденная функция'
det_G = vpa (det(G_X), 6)
end;
%Получение ортонормированного базиса по Граму-Шмидту
U1 = X1/sqrt(G_X(1, 1));
temp = X2-int(X2*U1, t1,t2)*U1;
U2 = temp/sqrt(int(temp^2, t1, t2));
temp = X3 - int(X3*U1, t1, t2)*U1 - int(X3*U2, t1, t2)*U2;
U3 = temp/sqrt(int(temp^2, t1, t2));
disp 'Ортонормированный базис'
U = vpa([U1 U2 U3], 3)
U = transpose ([U1 U2 U3]);
G_U = vpa(int(U*U', t1, t2), 2)
%Построение графиков исходного и ортонормированного базисов
time = subs(t, t1:0.01:t2);
plot(time, [subs(X1, time); subs(X2, time); subs(X3, time)]); grid on;
hold on
plot(time, [subs(U1, time); subs(U2, time); subs(U3, time)],'.' );
legend('X1 & U1', 'X2 & U2', 'X3 & U3')
figure
%Вычисление координат проекций и самих проекций сигналов в базисах
v = [int(Y*X1, t1, t2) int(Y*X2, t1, t2) int(Y*X3, t1, t2)]';
alpha = vpa(G_X^-1*v, 3) %Координаты проекции в исходном базисе
w = [int(Y*U1, t1, t2) int(Y*U2, t1, t2) int(Y*U3, t1, t2)]
betta = vpa(G_U^-1*w, 3) %Координаты проекции в ортонормированном базисе
Pr_Y_X = vpa(alpha(1)*X1 + alpha(2)*X2 + alpha(3)*X3, 3)
Pr_Y_U = vpa(betta(1)*U1 + betta(2)*U2 + betta(3)*U3, 3)
%Энергетические параметров сигнала, проекций и ошибок проекций
Enr_y = vpa(int(Y*Y, t1, t2), 3) %Энергия сигнала Y
Enr_Pr_Y_X = vpa(int(Pr_Y_X*Pr_Y_X, t1, t2), 3)
Enr_Pr_Y_U = vpa(int(Pr_Y_U*Pr_Y_U, t1, t2), 3)
Err_X_t = vpa(Y-Pr_Y_X, 3)
Err_U_t = vpa(Y-Pr_Y_U, 3)
Enr_Err_Y_X = vpa(int(Err_X_t*Err_X_t, t1, t2), 3)
Enr_Err_Y_U = vpa(int(Err_U_t*Err_U_t, t1, t2), 3)
time = subs(t, t1:0.01:t2);
plot(time, [subs(Y, time); subs(Pr_Y_X, time);...
subs(Pr_Y_U, time); subs(Err_X_t, time)]); grid on
Но он не работает. Подскажите, пожалуйста.