IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> график, корни и экстреммумы функции. проблема, надо срочно
зайка
сообщение 2.07.2008 18:02
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: татьяна

Репутация: -  0  +


в общем есть огромная функция 10й степени. это ладно я её задала. дальше были задания
1. составить таблицу значений на отрезке [a,b] и шагом h и построить её график. в общем проблема в построении графика этой фунции(понятия не имею как это делается)
2. найти ВСЕ корни используя метод деления отрезка пополам. Находит только один корень,т.к. при условии
y(a)*y©<0 идёт деление только в одну сторону, при том в сторону меньшую(находит этот корень). ВОПРОС: как отправить деление в другую сторону,т.е. цикл в цикле(глючит), т.к. есть 4 корня.
3. найти все относительные (локальные) экстреммумы (в какой точке достигается и чему равняется), используя метод деления отрезка пополам или метод золотого сечения. честно скажу понятия не имею как это делатьsad.gif


ЛЮДИ 1и2 я сделала, осталось про экстреммумы подумать,у кого какие мысли есть киньте пожалуйста
и вопрос как увеличить масштаб у графика? у меня отрезок получается [-0.5;0.5] его даже не видноsad.gif

Сообщение отредактировано: зайка - 2.07.2008 22:55
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 2.07.2008 18:29
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
проблема в построении графика
Поищи на форуме, есть такая программа.
Цитата
используя метод деления отрезка пополам
Метод половинного деления есть в FAQ'е(если это то что надо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
зайка
сообщение 2.07.2008 18:35
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: татьяна

Репутация: -  0  +


Цитата(Client @ 2.07.2008 19:29) *

Поищи на форуме, есть такая программа.Метод половинного деления есть в FAQ'е(если это то что надо)

метод половинного деления там только для корней а мне надо ещё для экстреммумов

НЕНАШЛАsad.gif

Сообщение отредактировано: зайка - 2.07.2008 19:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
зайка
сообщение 2.07.2008 19:35
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: татьяна

Репутация: -  0  +


такой вопрос а как вам показать что я делала? у меня с паскаля не копируетсяsad.gif хотябы чтобы показали в чём ошибка

Сообщение отредактировано: зайка - 2.07.2008 19:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.07.2008 20:22
Сообщение #5


Гость






Открой PAS-файл тем же Блокнотом, например, и скопируй... Или просто присоедини сюда сам PAS-файл, не копируя (не в форме быстрого ответа, а после нажатия на кнопку "Ответить")
 К началу страницы 
+ Ответить 
зайка
сообщение 4.07.2008 12:14
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: татьяна

Репутация: -  0  +


вот посмотрите что я делала
посмотри пожайлуйста в чём ошибка

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.


Сообщение отредактировано: volvo - 28.11.2009 11:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 17.07.2025 21:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"