ЛЮДИ 1и2 я сделала, осталось про экстреммумы подумать,у кого какие мысли есть киньте пожалуйста и вопрос как увеличить масштаб у графика? у меня отрезок получается [-0.5;0.5] его даже не видно
Client
2.07.2008 18:29
Цитата
проблема в построении графика
Поищи на форуме, есть такая программа.
Цитата
используя метод деления отрезка пополам
Метод половинного деления есть в FAQ'е(если это то что надо)
зайка
2.07.2008 18:35
Цитата(Client @ 2.07.2008 19:29)
Поищи на форуме, есть такая программа.Метод половинного деления есть в FAQ'е(если это то что надо)
метод половинного деления там только для корней а мне надо ещё для экстреммумов
НЕНАШЛА
зайка
2.07.2008 19:35
такой вопрос а как вам показать что я делала? у меня с паскаля не копируется хотябы чтобы показали в чём ошибка
volvo
2.07.2008 20:22
Открой PAS-файл тем же Блокнотом, например, и скопируй... Или просто присоедини сюда сам PAS-файл, не копируя (не в форме быстрого ответа, а после нажатия на кнопку "Ответить")
зайка
4.07.2008 12: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=0then f:=1elsefor i:=1to 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:=1to n do
s:=s*b;a:=b;
end;
procedure step1(a,n:integer;var s:longint);
var i:integer;
begin
s:=1;
for i:=1to n dobeginif i mod2=0then s:=1else 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:=0to 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 dobegin{minimum}if y1<y2 thenbegin
b:=x2;x2:=x1;
y2:=y1;
gold1(a,b,x1,y1);
n:=n+1;
endelsebegin
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 dobegin{maximum}if y1>y2 thenbegin{ 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;
endelsebegin{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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.