% Fisier MATLAB 1.3.1.m de tip script in care se rezolva problema formulata % in exemplul 1.3.1 clc, clear all disp('Se afla extremalele admisibile ale functionalei din exemplul 1.3.1') syms x y Dy D2y % se descriu variabilele simbolice F=y^2+Dy^2+2*y*exp(x); % F=x^2+y^2+Dy^2; % functia integrand x1=0;y1=0;x2=1;y2=0; % x1=-1; y1=1; x2=1; y2=2; % conditiile la extremitati disp('Datele initiale:') fprintf(['Functia integrand ' 'F(x,y,y'')=%s\n'],char(F)) fprintf('Conditia la extremitatea de stanga: y(%d)=%d\n',x1,y1) fprintf('Conditia la extremitatea de dreapta: y(%d)=%d\n',x2,y2) dFdy=diff(F,y); % se calculeaza derivata partiala Fy dFdy1=diff(F,Dy); % se calculeaza derivata partiala Fy' fprintf('Fy=%s\n',char(dFdy)) fprintf('Fy''=%s\n',char(dFdy1)) d_dFdy1_dx=diff(dFdy1,x); % Fxy'x d_dFdy1_dy=diff(dFdy1,y); % Fyy' d_dFdy1_dy1=diff(dFdy1,Dy); % Fy'y' dFy1dx=d_dFdy1_dx+d_dFdy1_dy*Dy+d_dFdy1_dy1*D2y; % derivata functiei compuse fprintf('dFy''/dx=%s\n',char(dFy1dx)) Euler=simple(dFdy-dFy1dx); % membrul stang al ecuatiei Euler-Lagrange (EEL) deqEuler=[char(Euler) '=0']; % egalam cu zero fprintf('Ecuatia Euler-Lagrange:\n%s\n',deqEuler) Sol=dsolve(deqEuler,'x'); % se rezolva EEL if length(Sol)~=1 % sau nu sunt solutii sau sunt mai multe error('Sau nu sunt solutii sau sunt mai multe!'); else disp('Solutia generala a EEL:') fprintf('y(x)=%s\n',char(Sol)) end SolLeft=subs(Sol,x,x1); % se substituie x1 SolRight=subs(Sol,x,x2); % se substituie x2 EqLeft=[char(SolLeft) '=' char(sym(y1))]; % =y1 EqRight=[char(SolRight) '=' char(sym(y2))]; % =y2 disp('Constantele se determina folosind conditiile la extremitati:') fprintf('%s\n',EqLeft,EqRight) Con=solve(EqLeft,EqRight,'C2,C3'); % se rezolva sistemul C2=Con.C2; C3=Con.C3; % solutiile obtinute se atribuie constantelor simbolice C2 si C3 Sol21=vpa(eval(Sol),14); % se substituie valorile determinate C2,C3 in solutia generala disp('Ecuatia extremalei admisibile:') fprintf('y(x)=%s\n',char(Sol21)) xpl=linspace(x1,x2); % se definesc abscisele punctelor prin care se va trasa graficul y21=subs(Sol21,x,xpl); % se definesc ordonatele punctelor prin care se va trasa graficul figure plot(xpl,y21,'-m') % se deseneaza graficul set(get(gcf,'CurrentAxes'),'FontName','Times New Roman','FontSize',11) % ylim([-0.3 0.1]) % da=daspect; da(1:2)=min(da(1:2)); daspect(da); % scara egala title('\bf Exemplul 1.3.1') xlabel('\itx') ylabel('\ity\rm(\itx\rm)') grid on, box on