| imho.ws |
![]() |
|
|
|
# 1 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Задачка по численному анализу
Цитирую:
Составить программу вычисления производной функции, заданной набором экспериментальных значений xi и yi; имитируя их по формуле y=2*x^2+3*x-5. Провести приближение функции y(x) полиномом второй степени на всем интервале х. Экспериментальные точки строить при 999<=x<=1000 c шагом 0.1 Производную y'(x) напечатать в тех же точках х Конец цитаты. Язык: Паскаль Есть идеи?
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 2 | ||
|
::VIP::
Регистрация: 02.12.2001
Адрес: Hohland
Сообщения: 2 260
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
С точки зрения программирования - лехко!
Над матчастью только подумай (я матан еще года 4 назад сдал+забыл) А с матчастью, кстати, непонятно. Исходя из условия: Цитата:
Цитата:
__________________
sapienti sat. |
||
|
|
|
|
# 4 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
denver
как я понимаю есть некая функция, которую мы имитируем выражением y=2*x^2+3*x-5. Добавлено через 1 минуту: YAS я его седня открыл... :-)
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 5 | |
|
::VIP::
Регистрация: 02.12.2001
Адрес: Hohland
Сообщения: 2 260
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
dr-evil
Цитата:
Сорри с матаном я не помогу. А программировать тут и нечего. Добавлено через 3 минуты: хотя может только алгоритмы относятся к прогаммированию, скорее всего алгоритмы вычисления производной и приближения есть у Кнута.
__________________
sapienti sat. |
|
|
|
|
|
# 6 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
denver
если есть инф по теме... то плз линки... или выкройки.... мне энто сдавать придется....
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 8 |
|
Full Member
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
dr-evil :
Заглянул я в книгу по численным методам, а там... Короче, понял я одно, где начинаются формулы, там заканчивается смысл. Тем неменее попытка не пытка. Для начала разберемся, что все-таки требуется в задании. Я понял так: Заполнить массив значениями полученными по формуле: y=2*x^2+3*x-5 , по полученным значениям, затем получить приблизительный вид функции y(x) и найти ее производные в каждой точке из диаппазона от 999 до 1000. Но тогда вопрос зачем все это делать, если функция итак известна? Т.е., почему бы просто не взять производную от y=2*x^2+3*x-5: dy=2*2*x+3 и вывести ее значения в каждой точке x на заданном интервале. Если нужна такая программа, то пожалуста: i:=999; c:=1; while i<>1000 do begin x[c]:=i; y[c]:=2*sqr(x[c])+3*x[c]-5; dy[c]:=2*2*x[c]+3; writeln('x:',x[c],'y(x):'y[c],'dy(x):',dy[c]); i:=i+0.1; inc(c); end; Если все-таки первый вариант нужен, то как будет время, можно будет подумать, это не должно быть слишком сложно. Насчет линков, пока что, нашлось только это : http://www.num-meth.srcc.msu.su http://www.srcc.msu.su/num-anal/index.htm
__________________
Старые игры раздают здесь |
|
|
|
|
# 9 |
|
Full Member
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Заглянув в эту книгу еще раз, вот что я там нашел:
"Если функция задана таблично, то для нахождения ее производной необходимо построить какой-нибудь интерполяционный многочлен..." Пусть это будет например, dY[k](x)=(Y[k+1] - Y[k-1])/(2*h). Тогда, программа будет выглядеть так: {заполняем таблицу значениями функции} k:=998; c:=1; h:=0.1; while k<>1001 do begin y[c]:=2*sqr(x)+3*x-5; k:=k+h; inc(c); end; {находим полином в каждой точке, это и будет искомая производная} for j:=1 to c-1 do begin dy[c]:=(y[c+1]-y[c-1])/(2*h); writeln(dy[c]); end; Вот оказывается как все просто. "Повысить точность можно использовав более сложный интерполяционный многочлен Лагранжа ".
__________________
Старые игры раздают здесь |
|
|
|
|
# 10 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
YAS
Политех питерский, результат ждут в виде проги =) CEO пасиба, стало яснее
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 11 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
CEO
увы нужен только первый вариант
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 12 |
|
Full Member
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
dr-evil :так, яже, вроде и описал в следующем посте первый вариант. Хотя, я в этих численных методах слаб, не нужно мне это пока открыл книгу почитал, ну ни написал как понял, может я и не прав конечно, но больше ничем помочь не могу, извини, может кто-нибудь другой.
__________________
Старые игры раздают здесь |
|
|
|
|
# 13 |
|
Full Member
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Совершенно случайно нашел сайт с исходниками по численным методам, там похоже есть ответы на любые вопросы по данной теме:
http://alglib.manual.ru/
__________________
Старые игры раздают здесь |
|
|
|
|
# 14 | |
|
Junior Member
Регистрация: 13.09.2002
Сообщения: 105
![]() ![]() |
Re: Задачка по численному анализу
Цитата:
http://alglib.manual.ru/functions/in...n/lagrange.php То получится что произведение в средней точке вычисляется приближенно по формуле y`(x[n])= (y[n+1]-y[n-1])/(x[n+1]-x[n-1]), где x[n-1], x[n], x[n+1] и y[n-1], y[n], y[n+1] соответствующие последовательные значения. В данном случае т.к. исходная функция сама является полиномом второй степени, то в результате должна получатся точная производная, если функция более сложная то некое приближение. Думаю дальше программу составить уже несложно, но если что пиши. |
|
|
|
|
|
# 15 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
короче препод кое-что разъяснил и выдал....
что нужно получив точки (xi, yi) по ним получить коэффициенты квадратного уравнения.... и все энто методом наименьших квадратов.... вот... если кому не в лом, объясните доступно что есть этот метод, как его применить в условиях данной задачи, и хотелось бы алгоритм этих действий.
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 16 |
|
Junior Member
Регистрация: 23.12.2003
Адрес: Israel
Сообщения: 102
![]() ![]() |
не "уравнения" а полинома формы: р(х)=а0+а1*х+а2*х*х, где а0,а1,а2 коеффициенты то есть числа которые надо наити, тут я говорю о полиноме 2 степени его форму и привел. Метод наименьших квадратов - метод найти ети коеффициенты так чтобы квадраты ошибок(квадрат разницы между данными Y что препод тебе дал и Y посчитанными из нашего полинома р(х)) были минимальны.
Решается задача в 2 хода: 1) составляется система линейных уравнений минимизируяшая ети квадраты; 2) решая ету систему любым (если не оговорено специально) методом получаем ети коеффициенты. 1) входные данные:вектора х и y состояшие из w елементов, форма полинома который приблизит ети вектора р(х)=а0+а1*х+а2*х*х (тут 2й степени вполне хватит) система уравнений для етого случая: w*А0+Б1*А1+Б2*А2 = С1 Б1*А0+Б2*А1+Б3*А3 = С2 Б2*А0+Б3*А1+Б4*А3=С3 где:w - кол-во елементов в х или y Б1 = х1+х2+х3+...+хw ,сумма всех елементов х (учитывая знаки) Б2 =х1*х1+х2*х2+х3*х3+...+хw*хw , сумма квадратов елементов в х Б3 = х1*х1*х1+х2*х2*х2...+хw*хw*хw , сумма кубов в х Б4 = х1^4+х2^4+...+хw^4 , сумма 4х степеней в х С1 = y1+y2+y3+...yw , summa vsex chisel v y C2 = x1*y1+x2*y2+...xw*yw C3 = x1*x1*y1+x2*x2*y2+...xw*xw*yw А0,А1,А2 те самые коеффицииенты в полином. 2) Решив ету систему получаешь А0,А1,А2 подставляешь их в формулу р(х) и дальше для 999<х<1000 с шагом считаешь значения р и сравниваешь с данными преподом значениями Y. Производную тебе уже сказали СЕО. С Паскалем помочь не могу забыл со школы на прочь. Но вообше, етот способ есть в Матлабе в одной функции: p = polyfit(x,y,n) где р ето вектор етих самых коеффизиентов. Eсли будут вопросы по нумерике спрашивай. Последний раз редактировалось Aluf; 03.01.2004 в 15:49. |
|
|
|
|
# 17 |
|
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Aluf
с паскалем нет проблем у меня. =) огромное пасиба. 5! домой приеду попробую....
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! |
|
|
|
|
# 18 |
|
Junior Member
Регистрация: 23.12.2003
Адрес: Israel
Сообщения: 102
![]() ![]() |
Пожалуста,u
не забудь потом проверить результат на Matlab или Mathcad, если нет ни того ни другого можешь послать мне текст фаил с х и y dannymi в две строки я проверю на Матлаб yuriz at inbox.ru Последний раз редактировалось Aluf; 03.01.2004 в 15:58. |
|
|