Метод Ньютона.Построить график - Pascal
Формулировка задачи:
Я написал программу решения уравнение методом ньютона. Вот только нужно еще построить график на интервале [0;5].
И показать на графике эти точки.
Листинг программы
- program dot;
- uses crt, graph ;
- var le,x:double;
- a,b,e: real;
- function f1(x: double):double; {function}
- begin
- f1:= x*x-14*x+24;
- end;
- function dfdx(x:double): double; {pohidna}
- var dlt:real;
- begin
- dlt:=le-3;
- dfdx:=(f1(x+dlt)-f1(x-dlt))/(2*dlt);
- end;
- BEGIN
- begin
- Clrscr;
- a:=0; b:=5;
- write ('e= '); readln(e);
- clrscr;
- if f1(a)*dfdx(a)>0 then x:=a
- else x:=b;
- while abs(f1(x)/dfdx(x))>e do
- begin
- x:=x-f1(x)/dfdx(x);
- end;
- writeln(' V intervali vid ',a:0:0,' do ',b:0:0,' z pohibkou ',e:0:2);
- writeln (' x= ',x:0:2,' f(x)= ', f1(x):0:2);
- readln
- end;
- END.
Решение задачи: «Метод Ньютона.Построить график»
textual
Листинг программы
- program dot;
- uses crt, graph ;
- function f1(x: double):double; {function}
- begin
- f1:= x*x-14*x+24;
- end;
- function dfdx(x:double): double; {pohidna}
- var dlt:real;
- begin
- dlt:=1e-3;
- dfdx:=(f1(x+dlt)-f1(x-dlt))/(2*dlt);
- end;
- var le,x,x1,a,b,e,mx,my:double;
- g,d,x0,y0,i:integer;
- s:string;
- begin
- Clrscr;
- a:=0; b:=5;
- write ('e= '); readln(e);
- clrscr;
- if f1(a)*dfdx(a)>0 then x1:=a else x1:=b;
- while abs(f1(x1)/dfdx(x1))>e do
- x1:=x1-f1(x1)/dfdx(x1);
- writeln(' V intervali vid ',a:0:0,' do ',b:0:0,' z pohibkou ',e:0:2);
- writeln (' x= ',x1:0:2,' f(x)= ', f1(x1):0:2);
- write('Press Enter');
- readln;
- {переход в графический режим}
- initgraph(g,d,'');
- x0:=50;
- y0:=getmaxY div 2;
- mx:=(getmaxX-x0-30)/b;{масштаб по Х}
- my:=(y0-40)/f1(a);
- line(0,y0,getmaxX,y0);{оси}
- line(x0,0,x0,getmaxY);
- for i:=1 to 6 do{максимальное количество засечек в одну сторону}
- begin
- line(x0-3,y0-round(i*my*5),x0+3,y0-round(i*my*5));{засечки на оси У}
- line(x0-3,y0+round(i*my*5),x0+3,y0+round(i*my*5));
- {подпись оси У}
- str(i*5,s);
- outtextXY(x0-35,y0-round(i*my*5),s);{соответственно засечкам}
- outtextXY(x0-40,y0+round(i*my*5),'-'+s);
- line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); {засечки на оси Х}
- {подпись оси Х}
- str(i,s);
- outtextXY(x0+round(i*mx)+5,y0+10,s);
- end;
- {центр}
- outtextXY(x0-15,y0+10,'0');
- {подписи концов осей}
- outtextXY(getmaxX-10,y0-10,'X');
- outtextXY(x0+5,10, 'Y');
- {график}
- x:=a;
- setcolor(14);
- while x<=b do
- begin
- if x=a then moveto(x0+round(x*mx),y0-round(f1(x)*my))
- else lineto(x0+round(x*mx),y0-round(f1(x)*my));
- x:=x+0.001;
- end;
- {название}
- outtextXY(100,10,'y=x^2-14x+24');
- outtextXY(100,30,'int.[0;5]');
- setcolor(10);
- setfillstyle(1,10);
- fillellipse(x0+round(x1*mx),y0-round(f1(x1)*my),3,3);
- readln
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д