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

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

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

> Программа считающая производную функции
Dex
сообщение 9.12.2003 14:58
Сообщение #1





Группа: Пользователи
Сообщений: 7

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


Люди я тут новичёк и поэтому сразу не убивайте.
Мне по  информатики задали составить программку считающую производную функции
по математики я примерно помню как это делается ,а вот чтоб в паскале написать ,мне
слабо.
Может кто знает где готовую достать ,или сам когда-то писал ,буду очень благодарен за любую помощь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 15)
Nemo
сообщение 9.12.2003 15:21
Сообщение #2


Гость






Уточни, как будет задаваться функция: табличными значениями или просто, вводится с клавиатуры как строка. В первом случае проблем нет: математики придумали кучу алгоритмов нахождения производной (ее  конкретного числового значения), а во втором случае... не завидую.
   
 К началу страницы 
+ Ответить 
Dex
сообщение 9.12.2003 21:29
Сообщение #3





Группа: Пользователи
Сообщений: 7

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


Надо будет задавать функцию которой будет считаться производная
Напримен задаётся функция
f(x)=3x(в третей)+2x(в квадрате) ,кстати х в третей пишится x^3?
и получаем в конце программы результат
f'(x)=9x^2+4x
это вродибы не так сложно но но я не знаю как с степенью работать
и табличные значения как вносить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
trminator
сообщение 10.12.2003 9:05
Сообщение #4


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

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


Подожди. Задается совсем уж произвольная функция (логарифмы там, деления всякие, сложные функции) или только многочлен? С многочленом все намного проще...


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dex
сообщение 10.12.2003 19:40
Сообщение #5





Группа: Пользователи
Сообщений: 7

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


Логарифмы ,косинусы  тоже должны присутствовать все  табличные значения
(Sin(x))'=cos(x)
(ln(x))'=1/x
(cx)'=c
итд.
Может кто подскажет как это сделать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zx1024
сообщение 10.12.2003 20:19
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 119
Пол: Мужской

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


Разобрать выражение на элементарные ф-ции и подсчитать производную от каждой (по таблице).
В случае сложной ф-ции использовать рекурсию.
Надо просто запрограммировать математические правила подсчёта производной.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
trminator
сообщение 10.12.2003 21:00
Сообщение #7


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

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


Сначала опять-таки придется построить дерево разбора этого выражения, потом с ним работать по правилам... может, так?


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dex
сообщение 11.12.2003 5:52
Сообщение #8





Группа: Пользователи
Сообщений: 7

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


Не мог бы кто показать на паре примеров как это делается.
например
f(x)=3x^3+4
f(x)=Cos(x)/1+sin(x)
Странно что готовой программы нету .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
fms
сообщение 11.12.2003 9:44
Сообщение #9


Бывалый
***

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

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


странно что не подготовились к Вашему вопросу? smile.gif
я думаю что если ты поковыряешься в инете.. то найдешь немало вариантов.. попробуй.


--------------------
непонимающая..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dex
сообщение 11.12.2003 12:55
Сообщение #10





Группа: Пользователи
Сообщений: 7

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


Я пробывал но ничего толкового не нащёл ,нету табличных значений
Может подскажеш где.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dex
сообщение 13.12.2003 10:49
Сообщение #11





Группа: Пользователи
Сообщений: 7

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


Люди куда все делись?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
oleg309
сообщение 13.12.2003 11:38
Сообщение #12


профи
**

Группа: Пользователи
Сообщений: 109
Пол: Мужской

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


Спим... ;)


--------------------
Тело, находящееся в состоянии покоя, стремится смотреть телевизор.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sca
сообщение 13.12.2003 17:19
Сообщение #13


Гость






а вы не пробовали искать производную исходя из определения?

f'(x)=lim[dx->0] df(x)/dx
 К началу страницы 
+ Ответить 
Dex
сообщение 13.12.2003 17:54
Сообщение #14





Группа: Пользователи
Сообщений: 7

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


Может проснётесь ,мне до вторника её надо сделать.
Help.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
LinkIn
сообщение 13.12.2003 19:14
Сообщение #15


Гость






Может ты что-то путаешь? ???  Ведь тогда эта прога должна не только
уметь считать производную, но и понимать функции, которые задаются в виде строк. Сложновато для обычной лабы!
На странице  http://borodingo.narod.ru/done/ есть пример программы
на паскале, который наз-ся "Получение формулы производной по формуле функции" может поможет? Конкретная ссылка на скачивание: http://borodingo.narod.ru/done/distrib/Postfix.zip
Но, чтобы переписать ее тебе понадобится не одна общая тетрадь! smile.gif
 К началу страницы 
+ Ответить 
anka
сообщение 28.12.2003 21:12
Сообщение #16


Гость






переделай чуть чуть, она больше делает чем надо=)

Код

program task3(input,output);
var x,xn,xk,dx,h,hv:real;
k:integer;
function f(x:real):real;
begin f:=x*x*x-3*x;end;
function fpr1(x:real):real;
begin fpr1:=3*x*x-3;end;
function fpr2(x:real):real;
begin fpr2:=3*x*x-3; end;
function fprL(x,h:real):real;
begin fprL:=(f(x+h)-f(x))/h; end;
function fprR(x,h:real):real;
begin fprR:=(f(x)-f(x-h)); end;
function y4(x:real):real;
begin y4:=(fprL(x,h)+fprR(x,h))/2; end;
function fpr(x:real):real;
begin if x>=0 then fpr:=fpr1(x) else fpr:=fpr2(x); end;
procedure prmax(y6,y7,x:real;var max,xmax,ymax:real);
begin
   if max<=y6 then begin max:=y6; xmax:=x; ymax:=f(x);end;
   if max<=y7 then begin max:=y7; xmax:=x; ymax:=f(x);end;
end;
procedure main(xn,xk,dx,h:real);
  var
   i:integer;
   y,max,xmax,ymax,y5,y6,y7:real;
 begin
   writeln('pri h= ',h:5:5);
   i:=0;x:=xn;
   max:=abs(fprL(xn,h)-fpr(xn));
   xmax:=xn; ymax:=f(x);
   writeln(' x  y y1=f`L y2=f`R y3=f` y4=(f`L+f`R)/2 |y4-y3| |y1-y3| |y2-y3|');
   while(i<100) and (x<=xk+dx/2) do
   begin
      y5:=abs(y4(x)-fpr(x));
      y6:=abs(fprL(x,h)-fpr(x));
      y7:=abs(fprR(x,h)-fpr(x));
      writeln(' ',x:2:1,' ',f(x):1:2,' ',fprL(x,h):1:2,' ',fprR(x,h):1:2,' ',fpr(x):1:2,y4(x):1:2,y5:1:2,y6:1:2,y7:1:2);
      prmax(y6,y7,x,max,xmax,ymax);
      x:=x+dx;
      i:=i+1;
    end;
   writeln('maksimalnoe otklonenie=',max:5:2,'pri x=',xmax:5:2,'y=',
   ymax:5:2);
    end;
     begin
      write('Vvedite xn,xk,dx,h');
      readln(xn,xk,dx,hv);
      k:=1;
      repeat
       case k of
        1:begin h:=dx/10; k:=k+1; main(xn,xk,dx,h) end;
        2:begin h:=dx/100; k:=k+1; main(xn,xk,dx,h); end;
        3:begin h:=hv; k:=k+1; main(xn,xk,dx,h); end;
     end;
     until k>3;
     readln;
     end.
 К началу страницы 
+ Ответить 

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

 



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