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