ЛЮДИ 1и2 я сделала, осталось про экстреммумы подумать,у кого какие мысли есть киньте пожалуйста и вопрос как увеличить масштаб у графика? у меня отрезок получается [-0.5;0.5] его даже не видно
Client
2.07.2008 22:29
Цитата
проблема в построении графика
Поищи на форуме, есть такая программа.
Цитата
используя метод деления отрезка пополам
Метод половинного деления есть в FAQ'е(если это то что надо)
зайка
2.07.2008 22:35
Цитата(Client @ 2.07.2008 19:29)
Поищи на форуме, есть такая программа.Метод половинного деления есть в FAQ'е(если это то что надо)
метод половинного деления там только для корней а мне надо ещё для экстреммумов
НЕНАШЛА
зайка
2.07.2008 23:35
такой вопрос а как вам показать что я делала? у меня с паскаля не копируется хотябы чтобы показали в чём ошибка
volvo
3.07.2008 0:22
Открой PAS-файл тем же Блокнотом, например, и скопируй... Или просто присоедини сюда сам PAS-файл, не копируя (не в форме быстрого ответа, а после нажатия на кнопку "Ответить")
зайка
4.07.2008 16:14
вот посмотрите что я делала посмотри пожайлуйста в чём ошибка
PROGRAM abc; uses crt; const d1=-2; d2=2;h=0.1; var f1,f2,f3,s,s1,y1:longint; k,n:integer; f,x,a:real; function y(x:real):real; {zadaem funkciyu} var y1:real; procedure fact(n:integer; var f:longint); var i:integer; begin f:=1; if n=0 then f:=1 else for i:=1 to n do f:=f*i; end; procedure step(a:real;n:integer;var s:longint); var i,b:integer; begin s:=1; {здесь выдаёт ошибку №202} for i:=1 to n do s:=s*b;a:=b; end; procedure step1(a,n:integer;var s:longint); var i:integer; begin s:=1; for i:=1 to n do begin if i mod 2=0 then s:=1 else s:=-1; end; end; begin {funkcii} fact(k,f1); fact((19-k),f2); fact((20-2*k),f3); step(a,10-k,s); step1(-1,k,s1); y1:=10*s1*f2*s/(f1*f3); y:=0; for k:=0 to n do y:=y(x)+y1; end;{konec funkcii} begin {osnovnaya} x:=d1; f:=0; writeln('| x | y |'); writeln('|------- |---------------|'); repeat a:=4*x*x; f:=f+y(x); writeln('|',x:7:3,' | ',f:7:3 ,' |'); x:=x+h; until x>d2; writeln('|--------------------------|'); readln; end.
до этого записывала функцию просто тупым умножением квадратов, всё работала, решила через процедуры степени и факториала и всё выдаёт ошибку. глянь пожалуйста. и ещё написала прогу для максимумов и минимумов,(ф-я получается симметричной, т.е. дожно быть 4 экстреммума, а выдаёт только 2)
program extrem; uses crt; var a,b,x1,x2,y1,y2,x,y,e:real; n,i:integer; function f(x:real):real; {zadaem funkciyu} var y1,y2,y3,y4:real; begin {f:=sqr(x)-4*x-5;} y1:=(((sqr(sqr(sqr(4*sqr(x)))))*sqr(4*sqr(x)))/2)-((sqr(sqr(sqr(4*sqr(x)))))*(4*sqr(x))*10)+((sqr(sqr(sqr(4*sqr(x)))))*85); y2:=- (((sqr(sqr(4*sqr(x))))*(sqr(4*sqr(x))*(4*sqr(x))))*400)+(((sqr(sqr(4*sqr(x))))*s
qr(4*sqr(x)))*113.75); y3:=-((sqr(sqr(4*sqr(x))))*(4*sqr(x))*2002)+((sqr(sqr(4*sqr(x))))*2145)-((sqr(4*sqr(x)))*(4*sqr(x))*1320); y4:=((sqr(4*sqr(x)))*825)-(4*sqr(x))*50+1; f:=y1+y2+y3+y4; end; procedure gold1(a,b:real;var x1,y1:real); begin x1:=0.618*a+0.382*b; y1:=f(x1); end; procedure gold2(a,b:real;var x2,y2:real); begin x2:=0.618*b+0.382*a; y2:=f(x2); end; {osnovnaya programma} begin a:=-2; b:=2; e:=0.01; gold1(a,b,x1,y1); gold2(a,b,x2,y2); n:=0; while abs(b-a)>e do begin{minimum} if y1<y2 then begin b:=x2;x2:=x1; y2:=y1; gold1(a,b,x1,y1); n:=n+1; end else begin a:=x1;x1:=x2; y1:=y2; gold2(a,b,x2,y2); end; end;{konec minimuma} x:=(a+B)/2; {for i:=1 to n do} writeln('ymin=',f(x):4 :4,' pri x=',x:4 :4); a:=-2; b:=2; e:=0.01; gold1(a,b,x1,y1); gold2(a,b,x2,y2); n:=0; while abs(b-a)>e do begin{maximum} if y1>y2 then begin { a:=x1;x1:=x2; y1:=y2; gold2(a,b,x2,y2); n:=n+1;} b:=x2;x2:=x1; y2:=y1; gold1(a,b,x1,y1); n:=n+1; end else begin {b:=x2;x2:=x1; y2:=y1; gold1(a,b,x1,y1);} a:=x1;x1:=x2; y1:=y2; gold2(a,b,x2,y2); end; end;{konec maximuma} x:=(a+B)/2; {for i:=1 to n do } writeln('ymax=',f(x):4 :4,' pri x=',x:4 :4); readln; end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.