Новичок
Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.10.2006
Репутация: нет Всего: нет
|
вот листинг решения уравнения, по этому уравнению нужно выводить график, не подскажите как это сделать? что-то с графиками совсем не дружу... помогите пожалуйста... | Код | Program Lab14; Uses Crt; Const Xmin=-900; Xmax=-0.9491; Hmin=0.00001; Hmax=0.1; Rmin=0.00001; Rmax=0.01; Emin=0; Emax=0.00001; Nmax=100; vvodX='Введите первоначальное значение аргумента x<-0.9491:'; vvodH='Задайте шаг изменения аргумента H<0.00001...0.1>:'; vvodR='Введите погрешность вычислений R<0.00001...0.01>:'; vvodE='Введите допустимое значение функции, близкое к нулю E<0...0.00001>:'; Var x,x1,A,B,H,R,R1,E:Real; n,g:Integer; l:string;
Procedure OTXY(x,y:Integer;St:String;Color:Byte); begin TextColor(Color); GotoXY(x,y); Write(St); end;
Procedure kontrol(str:String; Min,Max:real; Var c:real); var flag:boolean; Begin Flag:=false; Repeat TextColor(15); Write(str);
{$I-} Readln©; {$I+} if IORESULT<>0 then begin Sound(880); Delay(250); Nosound; OTXY(25,10,'ВВЕДЕН НЕДОСТУПНЫЙ СИМВОЛ!',12); Delay(1000); ClrScr; end else if (C<Min) or (C>Max) then begin Sound(880); Delay(250);Nosound; OTXY(25,10,'ВВЕДЕНО НЕДОПУСТИМОЕ ЗНАЧЕНИЕ!',12); Delay(1000); ClrScr; end else Flag:=true; Until Flag=true; end;
Function f(xx:Real):Real; Begin f:=(exp(xx)-exp(-xx))/2-xx*xx+2; end;
Procedure Poisk_x(z,step:Real; Var A1,B1:real); Var F1,F2,z2:Real; begin F1:=f(z); z2:=z+step; F2:=f(z2); while f1*f2>=0 do begin z:=z2; F1:=F2; z2:=z+step; F2:=f(z2); end; write('f1*f2=',f1*f2:0:10); A1:=z; write('a1=',a1:0:5); B1:=z2; writeln('b1=',b1:0:5); end;
BEGIN ClrScr; kontrol(vvodX,Xmin,Xmax,x); kontrol(vvodH,Hmin,Hmax,h); kontrol(vvodR,Rmin,Rmax,R); kontrol(vvodE,Emin,Emax,E); Poisk_x(x,h,A,B); IF f(A)*f(B)>0 then begin OTXY(25,10,'Корень отсутствует!Нажми любую клавишу...',12); readkey;exit; end; n:=0; repeat n:=n+1; x1:=A-f(A)*(B-A)/(f(b)-f(A)); if f(A)*f(x1)>0 then A:=1 else B:=x1; if f(x1)<E then begin TextColor(12); l:='Вычисление функции закончено из-за превышения допустимого значения функции'; end; if abs(B-A)<=R then begin TextColor(12); l:='Вычисление функции закончено из-за превышения абсолютной погрешности результата'; end; until (n<Nmax) or (f(x1)>E) or(abs(B-A)<=R); R1:=R;g:=0; repeat R1:=R1*10; g:=g+1; until R1>1; Writeln(1); Write('При x=', x1:0:g-1);Write(' Значение функции f=', f(x1):0:10); Writeln(',а количество итераций n=',n);readkey; End.
|
Это сообщение отредактировал(а) Exception - 9.12.2006, 17:07
|