![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Dex |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Люди я тут новичёк и поэтому сразу не убивайте.
Мне по информатики задали составить программку считающую производную функции по математики я примерно помню как это делается ,а вот чтоб в паскале написать ,мне слабо. Может кто знает где готовую достать ,или сам когда-то писал ,буду очень благодарен за любую помощь. |
Nemo |
![]()
Сообщение
#2
|
Гость ![]() |
Уточни, как будет задаваться функция: табличными значениями или просто, вводится с клавиатуры как строка. В первом случае проблем нет: математики придумали кучу алгоритмов нахождения производной (ее конкретного числового значения), а во втором случае... не завидую.
|
Dex |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Надо будет задавать функцию которой будет считаться производная
Напримен задаётся функция f(x)=3x(в третей)+2x(в квадрате) ,кстати х в третей пишится x^3? и получаем в конце программы результат f'(x)=9x^2+4x это вродибы не так сложно но но я не знаю как с степенью работать и табличные значения как вносить? |
trminator |
![]()
Сообщение
#4
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Подожди. Задается совсем уж произвольная функция (логарифмы там, деления всякие, сложные функции) или только многочлен? С многочленом все намного проще...
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Dex |
![]()
Сообщение
#5
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Логарифмы ,косинусы тоже должны присутствовать все табличные значения
(Sin(x))'=cos(x) (ln(x))'=1/x (cx)'=c итд. Может кто подскажет как это сделать. |
zx1024 |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 119 Пол: Мужской Репутация: ![]() ![]() ![]() |
Разобрать выражение на элементарные ф-ции и подсчитать производную от каждой (по таблице).
В случае сложной ф-ции использовать рекурсию. Надо просто запрограммировать математические правила подсчёта производной. |
trminator |
![]()
Сообщение
#7
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сначала опять-таки придется построить дерево разбора этого выражения, потом с ним работать по правилам... может, так?
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Dex |
![]()
Сообщение
#8
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Не мог бы кто показать на паре примеров как это делается.
например f(x)=3x^3+4 f(x)=Cos(x)/1+sin(x) Странно что готовой программы нету . |
fms |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Женский Репутация: ![]() ![]() ![]() |
странно что не подготовились к Вашему вопросу?
![]() я думаю что если ты поковыряешься в инете.. то найдешь немало вариантов.. попробуй. -------------------- непонимающая..
|
Dex |
![]()
Сообщение
#10
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Я пробывал но ничего толкового не нащёл ,нету табличных значений
Может подскажеш где. |
Dex |
![]()
Сообщение
#11
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Люди куда все делись?
|
oleg309 |
![]()
Сообщение
#12
|
![]() профи ![]() ![]() Группа: Пользователи Сообщений: 109 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спим... ;)
-------------------- Тело, находящееся в состоянии покоя, стремится смотреть телевизор.
|
sca |
![]()
Сообщение
#13
|
Гость ![]() |
а вы не пробовали искать производную исходя из определения?
f'(x)=lim[dx->0] df(x)/dx |
Dex |
![]()
Сообщение
#14
|
![]() Группа: Пользователи Сообщений: 7 Репутация: ![]() ![]() ![]() |
Может проснётесь ,мне до вторника её надо сделать.
Help. |
LinkIn |
![]()
Сообщение
#15
|
Гость ![]() |
Может ты что-то путаешь? ??? Ведь тогда эта прога должна не только
уметь считать производную, но и понимать функции, которые задаются в виде строк. Сложновато для обычной лабы! На странице http://borodingo.narod.ru/done/ есть пример программы на паскале, который наз-ся "Получение формулы производной по формуле функции" может поможет? Конкретная ссылка на скачивание: http://borodingo.narod.ru/done/distrib/Postfix.zip Но, чтобы переписать ее тебе понадобится не одна общая тетрадь! ![]() |
anka |
![]()
Сообщение
#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. |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 18:02 |