% 近似解待定参数个数取1个
syms a x real
u=a*x;
w=diff(u,a);
du=diff(u,x);
dw=diff(w,x);
I=int(-dw*du+w*x,0,1)+subs(w,x,1);
a=solve(I)
%===================================
%===================================
%近似解待定参数个数取2个
clear
syms a1 a2 x real;
u=a1*x+a2*x^2;
w1=diff(u,a1);
w2=diff(u,a2);
du=diff(u,x);
dw1=diff(w1,x);
dw2=diff(w2,x);
I1=int(-dw1*du+w1*x,0,1)+subs(w1,x,1)*1;
I2=int(-dw2*du+w2*x,0,1)+subs(w2,x,1)*1;
[a1,a2]=solve(I1,I2)
%=================================
%=================================
%近似解待定参数个数取3个
clear
syms a1 a2 a3 x real;
u=a1*x+a2*x^2+a3*x^3;
w1=diff(u,a1);
w2=diff(u,a2);
w3=diff(u,a3);
du=diff(u,x);
dw1=diff(w1,x);
dw2=diff(w2,x);
dw3=diff(w3,x);
I1=int(-dw1*du+w1*x,0,1)+subs(w1,x,1)*1;
I2=int(-dw2*du+w2*x,0,1)+subs(w2,x,1)*1;
I3=int(-dw3*du+w3*x,0,1)+subs(w3,x,1)*1;
[a1,a2,a3]=solve(I1,I2,I3)
%==============================
%比较
x=0:0.1:1;
u0=1.5*x-x.^3/6;
u1=4/3*x;
u2=19/12*x-0.25*x.^2;
u3=1.5*x-x.^3/6;
plot(x,u0,x,u1,x,u2,x,u3);
legend('精确解','近似解参数1 个','近似解参数2 个','近似解参数3 个');
xlabel('x')
ylabel('u')
title('Galerkin法-弱形式')
评论0