Порядок выполнения работы. 1. Изучить метод решения нелинейных уравнений, соответствующий Вашему варианту.
1. Изучить метод решения нелинейных уравнений, соответствующий Вашему варианту. 2. Разработать программу для решения данного нелинейного уравнения. 3. Решить нелинейное уравнение с точностью e = 0,0001.
Варианты заданий
Листинг программы program horda; uses crt; var xn,xk,x,prib: real; fx,mm,e,tz,h,fpr,min,max,zz: real; Label Met1;
Function Fun(fx:real):real; Begin Fun:=2*cos(fx)-7*fx; end;
Function Pr1(x:real):real; Begin Pr1:=-2*sin(x)-7; end;
Begin clrscr; e:=0.0001; Writeln ('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'); Writeln ('Определение корней нелинейного уравнения метод хорд'); Writeln ('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'); Writeln; Met1: Writeln ('Введите начальное значение диапазона:'); Readln (xn); Writeln ('Введите конечное значнеие диапазона:'); Readln (xk); if xk<xn then begin writeln ('Не правильный диапазон. Повторите попытку'); Goto Met1; end; {Определение min и Max} h:=(xk-xn)/10000; max:=abs(Pr1(xn)); min:=abs(Pr1(xn)); tz:=xn; while tz<=xk do begin fpr:=abs(Pr1(tz)); if max<fpr then max:=fpr; if min>fpr then min:=fpr; tz:=tz+h; end; writeln ('Максимальное значение первой производной = ',max:5:4); writeln ('Минимальное значение первой производной = ',min:5:4); if Fun(xk)*Fun(xn)<0 then begin Prib:=abs(Fun(xk)-Fun(xn)); writeln; writeln (' x | Приближение "e"'); writeln ('___________________________'); while abs(prib)>=e do begin zz:=x; x:=xn-(fun(xn)/(fun(xk)-fun(xn)))*(xk-xn); prib:=((max-min)/min)*abs(x-xn); if fun(xn)*fun(x)<0 then xk:=x; if fun(x)*fun(xk)<0 then xn:=x; writeln (zz:5:4, ' | ', prib:5:5); end; Writeln; Writeln ('** Проверка **'); Writeln ('Значение заданной функции при приближении <=0.0001 при х= ',zz:5:4,' равно ',fun(x):4:3); end else Writeln ('Корней в выбранном диапазоне нет'); end.
|