%EQ2GRSTABALL_WHILE Script per la risoluzione di un'equazione % di secondo grado (solo soluzioni reali) % con i coefficienti a, b e c generici e ripete il calcolo % automaticamente fino ad interruzione manuale % FORMULE STABILI % Settare il formato di visualizzazione format long e % Scrivere a video "Risoluzione di un'equazione di secondo grado" fprintf('Risoluzione di un''equazione di secondo grado (formule stabili) \n') var_termina = 0; while var_termina == 0 % Chiedere all'utente di inserire i coeficienti a, b, c dell'equazione fprintf('Inserire i coefficienti dell''equazione di secondo grado \n') a = input('a = '); b = input('b = '); c = input('c = '); % Controllare le varie combinazioni di coefficient nulli possibili if a == 0 if b == 0 if c == 0 disp('L''equazione e` indeterminata!') % equazione indeterminata else disp('L''equazione e` impossibile!') % equazione impossibile end else x1 = -c/b; disp('L''equazione ha una sola soluzione reale:') fprintf(' x1 = %1.4e \n', x1) % eq. di grado 1 (x1 unica soluzione) end else %CALCOLO DELLE RADICI % calcolo del discriminante delta delta = b^2 -4*a*c; fprintf('Il discriminante vale %1.1f \n', delta) % se delta<0 nessuna soluzione reale (scriverlo a video) if delta < 0 disp('Nessune soluzione reale ') % se delta = 0 due soluzioni reali coincidenti(scriverle a video) elseif delta == 0 disp('Due soluzioni reali coincidenti') x1 = -b/(2*a); x2 = x1; fprintf('x1 = x2 = %1.0e \n', x1) else if b == 0 x1 = sqrt(-c/a); % SE b == 0 LE FORMULE SI SEMPLIFICANO x2 = -x1; % SE b == 0 LE FORMULE SI SEMPLIFICANO else x1 = (-b - sign(b)*sqrt(delta))/(2*a); x2 = c/(a*x1); end fprintf(' x1 = %1.4e \n', x1) fprintf(' x2 = %1.4e \n', x2) end end var_termina = input('Se vuoi terminare scrivi 1, altrimenti scrivi 0. '); end