Квадратурные точки оценки Лагерра гаусса и веса

В этом примере показано, как решить полиномиальные уравнения и системы уравнений, и работать с результатами с помощью Symbolic Math Toolbox™.

Гауссовы квадратурные правила аппроксимируют интеграл суммами abf(t)w(t)dti=1nf(xi)αi. Здесь, xi и αi параметры метода, в зависимости от n но не на f. Они следуют из выбора функции веса w(t), можно следующим образом. Сопоставленный к функции веса семейство ортогональных полиномов. Корни полиномов являются точками оценки xi. Наконец, веса αi убеждены условием, что метод правилен для полиномов маленькой степени. Рассмотрите функцию веса w(t)=exp(-t) на интервале [0,]. Этот случай известен как квадратуру Лагерра Гаусса.

syms t
n = 4;
w(t) = exp(-t);

Примите, что вы знаете первое n члены семейства ортогональных полиномов. В случае квадратурного правила, рассмотренного здесь, они оказываются полиномами Лагерра.

F = laguerreL(0:n-1, t)
F = 

(11-tt22-2t+1-t36+3t22-3t+1)[sym (1), 1 - t, t^2/2 - 2*t + 1, - t^3/6 + (3*t^2)/2 - 3*t + 1]

Позвольте L будьте n+1 полином Св., коэффициенты которого должны все еще быть определены.

X = sym('X', [1, n+1])
X = (X1X2X3X4X5)[X1, X2, X3, X4, X5]
L = poly2sym(X, t)
L = X1t4+X2t3+X3t2+X4t+X5X1*t^4 + X2*t^3 + X3*t^2 + X4*t + X5

Представляйте отношения ортогональности между полиномами Лагерра F и L в системе уравнений sys.

sys = [int(F.*L.*w(t), t, 0, inf) == 0]
sys = (24X1+6X2+2X3+X4+X5=0-96X1-18X2-4X3-X4=0144X1+18X2+2X3=0-96X1-6X2=0)[24*X1 + 6*X2 + 2*X3 + X4 + X5 == 0, - 96*X1 - 18*X2 - 4*X3 - X4 == 0, 144*X1 + 18*X2 + 2*X3 == 0, - 96*X1 - 6*X2 == 0]

Добавьте условие, что полином имеет норму 1.

sys = [sys, int(L^2.*w(t), 0, inf) == 1]
sys = (24X1+6X2+2X3+X4+X5=0-96X1-18X2-4X3-X4=0144X1+18X2+2X3=0-96X1-6X2=040320X12+10080X1X2+1440X1X3+240X1X4+48X1X5+720X22+240X2X3+48X2X4+12X2X5+24X32+12X3X4+4X3X5+2X42+2X4X5+X52=1)[24*X1 + 6*X2 + 2*X3 + X4 + X5 == 0, - 96*X1 - 18*X2 - 4*X3 - X4 == 0, 144*X1 + 18*X2 + 2*X3 == 0, - 96*X1 - 6*X2 == 0, 40320*X1^2 + 10080*X1*X2 + 1440*X1*X3 + 240*X1*X4 + 48*X1*X5 + 720*X2^2 + 240*X2*X3 + 48*X2*X4 + 12*X2*X5 + 24*X3^2 + 12*X3*X4 + 4*X3*X5 + 2*X4^2 + 2*X4*X5 + X5^2 == 1]

Решите для коэффициентов L.

S = solve(sys, X)
S = struct with fields:
    X1: [2x1 sym]
    X2: [2x1 sym]
    X3: [2x1 sym]
    X4: [2x1 sym]
    X5: [2x1 sym]

solve возвращает эти два решения в массиве структур. Отобразите решения.

structfun(@display, S)
ans = 

(-124124)[-sym (1/24); sym (1/24)]

ans = 

(23-23)[sym (2/3);-sym (2/3)]

ans = 

(-33)[-sym (3); sym (3)]

ans = 

(4-4)[sym (4);-sym (4)]

ans = 

(-11)[-sym (1); sym (1)]

Сделайте решение уникальным путем наложения дополнительного условия что первый коэффициент быть положительными:

sys = [sys, X(1)>0];
S = solve(sys, X)
S = struct with fields:
    X1: [1x1 sym]
    X2: [1x1 sym]
    X3: [1x1 sym]
    X4: [1x1 sym]
    X5: [1x1 sym]

Замените решением в L.

L = subs(L, S)
L = 

t424-2t33+3t2-4t+1t^4/24 - (2*t^3)/3 + 3*t^2 - 4*t + 1

Как ожидалось этот полином является |n|th полиномом Лагерра:

laguerreL(n, t)
ans = 

t424-2t33+3t2-4t+1t^4/24 - (2*t^3)/3 + 3*t^2 - 4*t + 1

Точки оценки xi корни полиномиального L. Решите L для точек оценки. Корни описываются в терминах root функция.

x = solve(L)
x = 

(root(σ1,z,1)root(σ1,z,2)root(σ1,z,3)root(σ1,z,4))where  σ1=z4-16z3+72z2-96z+24[корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1); корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2); корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3); корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4)]

Форма решений может предположить, что ничто не было достигнуто, но различные операции доступны на них. Вычислите приближения с плавающей точкой с помощью vpa:

vpa(x)
ans = 

(0.322547689619392311800361459104371.74576110115834657568681671251794.53662029692112798327928538495719.3950709123011331292335364434205)[vpa ('0.32254768961939231180036145910437'); vpa ('1.7457611011583465756868167125179'); vpa ('4.5366202969211279832792853849571'); vpa ('9.3950709123011331292335364434205')]

Могут произойти некоторые побочные мнимые части. Докажите символически, что корни являются вещественными числами:

isAlways(in(x, 'real'))
ans = 4x1 logical array

   1
   1
   1
   1

Для полиномов степени, меньше чем или равной 4, можно использовать MaxDegree получить решения в терминах вложенных радикалов вместо этого в терминах root. Однако последующие операции на результатах этой формы были бы медленными.

xradical = solve(L, 'MaxDegree', 4)
xradical = 

(4-σ1-σ34+σ1-σ3σ3-σ2+4σ3+σ2+4)where  σ1=96σ6σ4-3σ5σ4-288σ4-512366+36i2768+12836i1/6144σ6+9σ5+8641/4  σ2=96σ6σ4-3σ5σ4-288σ4+512366+36i2768+12836i1/6144σ6+9σ5+8641/4  σ3=σ42768+12836i1/6  σ4=16σ6+σ5+96  σ5=768+12836i2/3  σ6=768+12836i1/3[4 - sqrt (96* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 3* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 288*sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 512*sqrt (sym (3)) *sqrt (sym (6)) *sqrt (6 + sqrt (sym (3)) *sqrt (sym (6)) *sym (1i))) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6) * (144* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + 9* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 864) ^sym (1/4)) - sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6)); 4 + sqrt (96* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 3* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 288*sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 512*sqrt (sym (3)) *sqrt (sym (6)) *sqrt (6 + sqrt (sym (3)) *sqrt (sym (6)) *sym (1i))) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6) * (144* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + 9* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 864) ^sym (1/4)) - sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6)); sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6)) - sqrt (96* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 3* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 288*sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) + 512*sqrt (sym (3)) *sqrt (sym (6)) *sqrt (6 + sqrt (sym (3)) *sqrt (sym (6)) *sym (1i))) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6) * (144* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + 9* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 864) ^sym (1/4)) + 4; sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6)) + sqrt (96* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 3* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) *sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) - 288*sqrt (16* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 96) + 512*sqrt (sym (3)) *sqrt (sym (6)) *sqrt (6 + sqrt (sym (3)) *sqrt (sym (6)) *sym (1i))) / (2* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/6) * (144* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (1/3) + 9* (768 + 128*sqrt (sym (3)) *sqrt (sym (6)) *sym (1i)) ^sym (2/3) + 864) ^sym (1/4)) + 4]

Веса αi даны условием это для полиномов степени меньше, чем n, квадратурное правило должно привести к точным результатам. Достаточно, если это содержит для основания векторного пространства этих полиномов. Это условие приводит к системе четырех уравнений в четырех переменных.

y = sym('y', [n, 1]);
sys = sym(zeros(n));
for k=0:n-1 
    sys(k+1) = sum(y.*(x.^k)) == int(t^k * w(t), t, 0, inf); 
end
sys
sys = 

(y1+y2+y3+y4=1000y1root(σ1,z,1)+y2root(σ1,z,2)+y3root(σ1,z,3)+y4root(σ1,z,4)=1000y1root(σ1,z,1)2+y2root(σ1,z,2)2+y3root(σ1,z,3)2+y4root(σ1,z,4)2=2000y1root(σ1,z,1)3+y2root(σ1,z,2)3+y3root(σ1,z,3)3+y4root(σ1,z,4)3=6000)where  σ1=z4-16z3+72z2-96z+24[y1 + y2 + y3 + y4 == 1, sym (0), sym (0), sym (0); y1*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) + y2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + y3*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + y4*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) == 1, sym (0), sym (0), sym (0); y1*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) ^2 + y2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) ^2 + y3*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) ^2 + y4*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2 == 2, sym (0), sym (0), sym (0); y1*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) ^3 + y2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) ^3 + y3*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) ^3 + y4*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^3 == 6, sym (0), sym (0), sym (0)]

Решите систему и численно и символически. Решение является желаемым вектором из весов αi.

[a1, a2, a3, a4] = vpasolve(sys, y)
a1 = 0.60315410434163360163596602381808vpa ('0.60315410434163360163596602381808')
a2 = 0.35741869243779968664149201745809vpa ('0.35741869243779968664149201745809')
a3 = 0.03888790851500538427243816815621vpa ('0.03888790851500538427243816815621')
a4 = 0.00053929470556132745010379056762059vpa ('0.00053929470556132745010379056762059')
[alpha1, alpha2, alpha3, alpha4] = solve(sys, y)
alpha1 = 

-σ3σ2+σ3σ1+σ2σ1-σ3σ2σ1-2σ3-2σ2-2σ1+6σ4-σ3σ4σ2+σ4σ1-σ2σ1-σ42where  σ1=root(z4-16z3+72z2-96z+24,z,4)  σ2=root(z4-16z3+72z2-96z+24,z,3)  σ3=root(z4-16z3+72z2-96z+24,z,2)  σ4=root(z4-16z3+72z2-96z+24,z,1)- (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + 6) / ((корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) ^2))

alpha2 = 

root(σ1,z,1)root(σ1,z,3)+root(σ1,z,1)root(σ1,z,4)+root(σ1,z,3)root(σ1,z,4)-root(σ1,z,1)root(σ1,z,3)root(σ1,z,4)-2root(σ1,z,1)-2root(σ1,z,3)-2root(σ1,z,4)+6root(σ1,z,2)-root(σ1,z,1)root(σ1,z,2)-root(σ1,z,3)root(σ1,z,2)-root(σ1,z,4)where  σ1=z4-16z3+72z2-96z+24(корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + 6) / ((корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4)))

alpha3 = 

σ3σ2+σ3σ1+σ2σ1-σ3σ2σ1-2σ3-2σ2-2σ1+6σ4-σ1σ3σ2-σ3σ4-σ2σ4+σ42where  σ1=root(z4-16z3+72z2-96z+24,z,4)  σ2=root(z4-16z3+72z2-96z+24,z,2)  σ3=root(z4-16z3+72z2-96z+24,z,1)  σ4=root(z4-16z3+72z2-96z+24,z,3)(корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + 6) / ((корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) ^2))

alpha4 = 

-σ3σ2+σ3σ1+σ2σ1-σ3σ2σ1-2σ3-2σ2-2σ1+6σ42σ3+σ42σ2+σ42σ1-σ43+σ3σ2σ1-σ3σ2σ4-σ3σ1σ4-σ2σ1σ4where  σ1=root(z4-16z3+72z2-96z+24,z,3)  σ2=root(z4-16z3+72z2-96z+24,z,2)  σ3=root(z4-16z3+72z2-96z+24,z,1)  σ4=root(z4-16z3+72z2-96z+24,z,4)- (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + 6) / (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^3 + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1), *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 +, 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z, + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z +, 24, z, 2) *root (z^4 - 16*z^3, + 72*z^2 - 96*z, + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4))

В качестве альтернативы можно также получить решение как структуру путем предоставления только одного выходного аргумента.

S = solve(sys, y)
S = struct with fields:
    y1: [1x1 sym]
    y2: [1x1 sym]
    y3: [1x1 sym]
    y4: [1x1 sym]

structfun(@double, S)
ans = 4×1

    0.6032
    0.3574
    0.0389
    0.0005

Преобразуйте структуру S к символьному массиву:

Scell = struct2cell(S);
alpha = transpose([Scell{:}])
alpha = 

(-σ3+σ15+σ2-σ6-σ12-σ11-σ10+6root(σ16,z,1)-root(σ16,z,2)σ1+σ4-σ2-root(σ16,z,1)2σ1+σ4+σ2-σ7-σ13-σ11-σ10+6root(σ16,z,2)-root(σ16,z,1)root(σ16,z,2)-root(σ16,z,3)root(σ16,z,2)-root(σ16,z,4)σ5+σ4+σ15-σ8-σ13-σ12-σ10+6root(σ16,z,3)-root(σ16,z,4)σ5-σ1-σ3+root(σ16,z,3)2-σ5+σ1+σ3-σ9-σ13-σ12-σ11+6σ14root(σ16,z,1)+σ14root(σ16,z,2)+σ14root(σ16,z,3)-root(σ16,z,4)3+σ9-σ8-σ7-σ6)where  σ1=root(σ16,z,1)root(σ16,z,3)  σ2=root(σ16,z,3)root(σ16,z,4)  σ3=root(σ16,z,2)root(σ16,z,3)  σ4=root(σ16,z,1)root(σ16,z,4)  σ5=root(σ16,z,1)root(σ16,z,2)  σ6=root(σ16,z,2)root(σ16,z,3)root(σ16,z,4)  σ7=root(σ16,z,1)root(σ16,z,3)root(σ16,z,4)  σ8=root(σ16,z,1)root(σ16,z,2)root(σ16,z,4)  σ9=root(σ16,z,1)root(σ16,z,2)root(σ16,z,3)  σ10=2root(σ16,z,4)  σ11=2root(σ16,z,3)  σ12=2root(σ16,z,2)  σ13=2root(σ16,z,1)  σ14=root(σ16,z,4)2  σ15=root(σ16,z,2)root(σ16,z,4)  σ16=z4-16z3+72z2-96z+24[-(корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + 6) / ((корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) ^2)); (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + 6) / ((корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4))); (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) + 6) / ((корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4)) * (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) ^2)); - (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) - 2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) + 6) / (корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^3 + корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 +, 72*z^2 - 96*z + 24, z, 3) - корень (z^4 - 16*z^3 +, 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) - корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) *root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4))]

Символьное решение выглядит сложным. Упростите его и преобразуйте его в вектор с плавающей точкой:

alpha = simplify(alpha)
alpha = 

(root(σ1,z,1)272-29root(σ1,z,1)144+23root(σ1,z,2)272-29root(σ1,z,2)144+23root(σ1,z,3)272-29root(σ1,z,3)144+23root(σ1,z,4)272-29root(σ1,z,4)144+23)where  σ1=z4-16z3+72z2-96z+24[корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) ^2/72 - (29*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1))/144 + sym (2/3); корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2) ^2/72 - (29*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 2))/144 + sym (2/3); корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3) ^2/72 - (29*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 3))/144 + sym (2/3); корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4) ^2/72 - (29*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 4))/144 + sym (2/3)]

vpa(alpha)
ans = 

(0.603154104341633601635966023818080.357418692437799686641492017458090.038887908515005384272438168156210.00053929470556132745010379056762059)[vpa ('0.60315410434163360163596602381808'); vpa ('0.35741869243779968664149201745809'); vpa ('0.03888790851500538427243816815621'); vpa ('0.00053929470556132745010379056762059')]

Увеличьте удобочитаемость, заменив случаи корней x в alpha сокращениями:

subs(alpha, x, sym('R', [4, 1]))
ans = 

(R1272-29R1144+23R2272-29R2144+23R3272-29R3144+23R4272-29R4144+23)[R1^2/72 - (29*R1)/144 + sym (2/3); R2^2/72 - (29*R2)/144 + sym (2/3); R3^2/72 - (29*R3)/144 + sym (2/3); R4^2/72 - (29*R4)/144 + sym (2/3)]

Суммируйте веса, чтобы показать, что их сумма равняется 1:

simplify(sum(alpha))
ans = 1sym (1)

Различный метод, чтобы получить веса квадратурного правила должен вычислить их использующий формулу αi=abw(t)jit-xjxi-xjdt. Сделайте это для i=1. Это приводит к тому же результату как другой метод:

int(w(t) * prod((t - x(2:4)) ./ (x(1) - x(2:4))), t, 0, inf)
ans = 

root(z4-16z3+72z2-96z+24,z,1)272-29root(z4-16z3+72z2-96z+24,z,1)144+23корень (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1) ^2/72 - (29*root (z^4 - 16*z^3 + 72*z^2 - 96*z + 24, z, 1))/144 + sym (2/3)

Квадратурное правило приводит к точным результатам даже для всех полиномов степени, меньше чем или равной 2n-1, но не для t2n.

simplify(sum(alpha.*(x.^(2*n-1))) -int(t^(2*n-1)*w(t), t, 0, inf))
ans = 0sym (0)
simplify(sum(alpha.*(x.^(2*n))) -int(t^(2*n)*w(t), t, 0, inf))
ans = -576- sym (576)

Примените квадратурное правило к косинусу и сравните с точным результатом:

vpa(sum(alpha.*(cos(x))))
ans = 0.50249370546067059229918484198931vpa ('0.50249370546067059229918484198931')
int(cos(t)*w(t), t, 0, inf)
ans = 

12sym (1/2)

Для степеней косинуса ошибка колеблется между четными и нечетными степенями:

errors = zeros(1, 20);
for k=1:20 
    errors(k) = double(sum(alpha.*(cos(x).^k)) -int(cos(t)^k*w(t), t, 0, inf));
end
plot(real(errors))

Для просмотра документации необходимо авторизоваться на сайте