function pvextrcond_2_restr_integral clc,clear all disp('Se rezolva problema variationala de extrem conditionat cu 2 restrictii de tip integral') syms x y z Dy D2y Dz D2z lambda1 lambda2 % variabilele F=Dy*Dz; % integrandul x1=0;y1=0;z1=0;x2=1;y2=0;z2=1; % conditiile la extremitati F1=y; J1=1;F2=z; J2=0; % restrictiile de tip integral disp('Datele initiale:') fprintf(['Functia integrand ' 'F(x,y,y'',z,z'')=%s\n'],char(F)) disp('Conditiile la extremitatea de stanga:') fprintf('y(%d)=%d; z(%d)=%d\n',x1,y1,x1,z1) disp('Conditiile la extremitatea de dreapta:') fprintf('y(%d)=%d; z(%d)=%d\n',x2,y2,x2,z2) disp('Conditiile de tip integral:') fprintf('Int(%s,''x'',%d,%d)=%d\n',char(F1),x1,x2,J1) fprintf('Int(%s,''x'',%d,%d)=%d\n',char(F2),x1,x2,J2) L=F+lambda1*F1+lambda2*F2; % functia lui Lagrange fprintf('L(x,y,y'',lambda1,lambda2)=%s\n',char(L)) dLdy=diff(L,y); dLdy1=diff(L,Dy); d_dLdy1_dx=diff(dLdy1,x); d_dLdy1_dy=diff(dLdy1,y); d_dLdy1_dy1=diff(dLdy1,Dy); d_dLdy1_dz=diff(dLdy1,z); d_dLdy1_dz1=diff(dLdy1,Dz); dLy1dx=d_dLdy1_dx+d_dLdy1_dy*Dy+d_dLdy1_dy1*D2y+d_dLdy1_dz*Dz+d_dLdy1_dz1*D2z; dLdz=diff(L,z);dLdz1=diff(L,Dz); d_dLdz1_dx=diff(dLdz1,x); d_dLdz1_dy=diff(dLdz1,y); d_dLdz1_dy1=diff(dLdz1,Dy); d_dLdz1_dz=diff(dLdz1,z); d_dLdz1_dz1=diff(dLdz1,Dz); dLz1dx=d_dLdz1_dx+d_dLdz1_dy*Dy+d_dLdz1_dy1*D2y+d_dLdz1_dz*Dz+d_dLdz1_dz1*D2z; EulerYL=simple(dLdy-dLy1dx); EulerZL=simple(dLdz-dLz1dx); dEuYL=[char(EulerYL) '=0']; % ecuatia intai a SEEL asociat functionalei lui Lagrange dEuZL=[char(EulerZL) '=0']; % ecuatia intai a SEEL asociat functionalei lui Lagrange fprintf('EEL pentru problema asociata de extrem neconditionat:\n%s\n%s\n',dEuYL,dEuZL) SolL=dsolve(dEuYL,dEuZL,'x'); % se rexolva prin metoda exacta SEEL if length(SolL)~=1 error('Nu sunt solutii sau sunt mai multe!'); else SolYL=SolL.y; SolZL=SolL.z; disp('Solutia generala a SEEL:') fprintf('y(x)=%s\nz(x)=%s\n',char(SolYL),char(SolZL)) end dydx=diff(SolYL,x); dzdx=diff(SolZL,x); % dy/dx F1_yz=subs(F1,{y,Dy,z,Dz},{SolYL,dydx,SolZL,dzdx}); F2_yz=subs(F2,{y,Dy,z,Dz},{SolYL,dydx,SolZL,dzdx}); intF1=vpa(int(F1_yz,x,x1,x2),14); % se calculeaza integrala intF2=vpa(int(F2_yz,x,x1,x2),14); disp('Membrii stangi ai restrictiilor de tip integral:') disp(char(intF1)) disp(char(intF2)) SolYLleft=vpa(subs(SolYL,x,x1),14); SolYLright=vpa(subs(SolYL,x,x2),14); LeftYL=[char(SolYLleft) '=' char(sym(y1))]; RightYL=[char(SolYLright) '=' char(sym(y2))]; SolZLleft=vpa(subs(SolZL,x,x1),14); SolZLright=vpa(subs(SolZL,x,x2),14); LeftZL=[char(SolZLleft) '=' char(sym(z1))]; RightZL=[char(SolZLright) '=' char(sym(z2))]; intF1J1=[char(intF1) '=' char(sym(J1))]; intF2J2=[char(intF2) '=' char(sym(J2))]; disp('Sistemul de ecuatii in raport cu C1,C2,C3,C4,lambda1,lambda2') fprintf('%s\n',LeftYL,RightYL,intF1J1,LeftZL,RightZL,intF2J2) ConL=solve(LeftYL,RightYL,intF1J1,LeftZL,RightZL,intF2J2,'C2,C3,lambda2,C1,C4,lambda1'); C1=vpa(ConL.C1,14); C2=vpa(ConL.C2,14);C3=vpa(ConL.C3,14); C4=vpa(ConL.C4,14); lambda1=vpa(ConL.lambda1,14); lambda2=vpa(ConL.lambda2,14); % multiplicatorii Lagrange Sol141Y=vpa(eval(SolYL),14); Sol141Z=vpa(eval(SolZL),14); % solutia analitica disp('Componentele extremalei:') fprintf('y(x)=%s\nz(x)=%s\n',char(Sol141Y),char(Sol141Z)) disp('Multiplicatorii Lagrange') fprintf('lambda1=%s\nlambda2=%s\n',char(lambda1),char(lambda2)) F141=subs(F,{y,z,Dy,Dz},{Sol141Y,Sol141Z,diff(Sol141Y,x),diff(Sol141Z,x)}); J141c=eval(int(F141,x,x1,x2)) xpl=linspace(x1,x2); y141=subs(Sol141Y,x,xpl); z141=subs(Sol141Z,x,xpl); plot(xpl,y141,'-.b',xpl,z141,'--g') set(get(gcf,'CurrentAxes'),'FontName','Times New Roman','FontSize',11) title('\bfProblema variationala de extrem conditionat cu restrictii de tip integral') xlabel('\itx') ylabel('\ity\rm(\itx\rm)') legend('y(x)','z(x)',0) grid on box on figure plot3(xpl,y141,z141,'-r') % se deseneaza graficul 3D set(get(gcf,'CurrentAxes'),'FontName','Times New Roman','FontSize',11) title('\bfGraficul 3D') xlabel('\itx') ylabel('\ity\rm(\itx\rm)') zlabel('\itz\rm(\itx\rm)') view(205,30) % selectia punctului de vizualizare grid on box on end