Метод Ньютона.Построить график - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д