clc,clear all disp('Se rezolva problema lui Dido') % x2=3; l=4; % x2=3.5; l=7.5; x2=3.5; l=5; % x2=6; l=10*asin(3/5); fprintf('Extremitatea de dreapta x2=%d\n',x2) fprintf('Lungimea funiei l=%d\n',l) s{1}='function y = MyFunc(x)'; s{2}='R=x(1); alpha=x(2); y=x;'; s{3}=['y(1)=R*alpha-(' char(sym(l)) ');']; s{4}=['y(2)=2*R*sin(alpha/2)-(' char(sym(x2)) ');']; filename=fullfile(pwd,'MyFunc.m'); disp(['Textul fisierului ' filename ':']) fprintf('%s\n',s{:}); fid=fopen(filename,'w'); fprintf(fid,'%s\n',s{:}); fclose(fid); xinit=[x2/2;pi]; % aproximatia initiala options=optimset('fsolve'); % optiunile implicite options=optimset(options,'Display','off','MaxIter',1000,'TolX',1e-8); [xzero,fval,exitflag]=fsolve('MyFunc',xinit,options); if exitflag>0, disp('S-a determinat solutia'); elseif exitflag<0, disp('Solutia nu a fost determinata - nu avem convergenta'); else disp(['Au fost efectuate un numar maxim admisibil de iteratii ' ... ' - convergenta e lenta']); end R=xzero(1); alpha=xzero(2); disp('Se determina solutia sistemului:') fprintf('R=%12.6f\nalpha=%12.6f\n',R,alpha) x0=x2/2; y0=(R^2-x0^2)^0.5; if alpha