|
Главная -> Справочник по алгоритмам 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 4p=-3p-8p + 4 2p=-5p --г-y->+-о-У"~ 4p-+3p -8p- - „ I 2рЧЗр-р-1 -{/iH--To--{/2 В этих формулах p=(x -хс) г и x = xo+ph. Вычисление 1/(х) по последней формуле реализовано программой 4.32, в которой ординаты у2, У-\, Уо, У] и у2 обозначены как А, В, С, D и Е. Программа 4.32. Формулы численного дифференцирования для узлов у(х) существенно проще приведенных, так как в узлах Р принимает фиксированные значения. Особенно простыми являются формулы для центрального узла (Р = 0) (см. табл. 4.1).Эти формулы удобны для численного дифференцирования таблично заданных функций в точке х=хп. Частные производные функции ряда переменных /(Х, JC2, .... х„) вычисляются по приведенным выще формулам, если задавать приращение одно:й из jiepeMCHHbix и оставлять неизменными (равными заданным значениям) остальные переменные. Анализ чувствительности функции f{xi, Х2..... х„) к изменению ее параметров х,. 100 110 10 PRINTВЫЧИСЛЕНИЕ ПЕРВОЙ ПРОИЗВОДНОЙ/ТнБЛИЧНО ЗнДйННОй 20 PRINTN=3-5 ОРДИНАТАМИ ФУНКЦИИ ПРИ РАВНОМЕРНОМ 30 PRINTРАСПОЛОЖЕНИИ УЗЛОВ ИНТЕРПОЛЯЦИИs PRINT" 40 INPUTВВЕДИТЕ X0=W!INPUTВВЕДИТЕ ШАГ Н=Н 50 INPUTЗАДАЙТЕ ЧИСЛО ОРДИНАТ Н=Н 60 IF N=3 GOTO 100 re IF N=4 GOTO 110 80 IF N=5 GOTO 120 INPUTПОВТОРИТЕ ВВОД N=N:GOTO 66 INPUTBBEAHTE ОРДИНАТЫ V-l, VO, VI A, B..C:GOTO 130 INPUTВВЕДИТЕ ОРДИНАТЫ V-bVO/VI/V2A,B.-C.,IisGOTO 130 INPUT ВВЕДИТЕ ОРДИНАТЫ V-1V- Ь V0, V1V2 А.» В, С, В.. E INPUTBBEAHTE :»:=Xs LETF-tX-MVH 140 IF N=4 GOTO 180 150 IF N=5 GOTO 210 160 LETF=<;CP-.5>жА-2жржВ+<;р+. SwO/H 170 PRINTDVVDy,= F: GOTO 130 180 LETF= t - С Зжр*Р-6жР+г ) т-Ь+ < ЗжРжР-4жр- l)wBy2> 190 иЕтЕ=<;-<зжржр-гжр-г>жсг+<зжр*р-п*Вь> 200 LETF=*;F+E)/-H:G0T0 170 210 LETF= ( < < гжр-3 ) жр-1 > жр+1 ) *А>--12 220 1£ТР=Р-«;<;(4жр-3>жР-8>жр+4>жВ--6 230 ЬЕТР=р+<гжржр-5)жржс/-г 240 LETF=F-<;< <;4жР+3>жр-8>жр-4>жП-6 250 LETF=F+< ( (2жр+3>жр-Пжр-1 >жЕ.1г 260 LETF=F>-H:G0T0 178: END П р" и м е p. Найти производную у{х) в точке лг = 0,51 функции у(х), заданной при ,vii = 0,5 и /г = 0,02 пятью значениями у1:у-} = = 0,35889029. у , = 0,35553253, у о = = 0,35206533, 4(1=0,34849251 и ;У2 = 0,344818. Введя эти данные, получим у(0,51)= = -0,1786491875. Х2, .... х„ основан на вычислении абсолютного приращения функции по формуле .V(.V..Vo, ...:.v„) = .V., + ... + Ах„, Таблица 4.1 Формулы численного дифференцирования (производные в центральных узлах)
Где коэффициенты df/dxi являются абсолютными коэффициентами чувствительности к изменению параметра jc,. Применяют и относительные коэффициенты чувствит1ельности ит -МП. (4.24) dXi/x,. Axi/Xi С их помощью легко вычисляется относительное приращение функции при заданных относительных изменениях параметров (переменных) Axi/Xio: д/ .. • (, Axi Ах-, , „ Ахп Вычисление трех частных производных и относительных коэффициентов чувствительности функции f{xi, Х2.....Хп) ряда переменных можно организовать следующим образом. 1. Будем считать переменные х,. лгг, .... Хп переменными массива Х{1) и организуем ввод числя переменных Л и начальных значений переменных xw, хю, х„о. 2. Вводим приращение Ах = И. 3. Организуем цикл вычислений частных производных по каждой переменной с управляющей переменной 2, .... N. Внутри цикла задаем Х1=(хю-2Н), (хю - К)..... (а-,( + 2Л) (для 5 узлов) и для этих значений Xi, обращаясь к подпрограмме вычисления f(xi. Х2.....х„), находим ординаты \.2~У-2, / 1=1/ ....., /2=1/8- После этого вычисляем производные )(х1в)у(хц, f"(xm)=y"(xia), f"{Xif,)=y"{xm) по формулам табл. 4.1 и коэффициенты Si (4.24) и выводим их на печать. 4. После выхода из цикла идем к п 2 н повторяем вычисления (если это необходимо). При yV=l по этому алгоритму вычисляются три производные и коэффициент S функции одной переменной f{x). Программа 4.33. Пример. Найти три производные функ-ции ндрмального распределения i{x)=f{x) = - е " /-\l2n в точце Хс=0,5. Подпрограмма вычисления f {х) при л:=Х(1) записывается со строки 400. Задав .Н = 0,001, получим Выдачу в виде D1F/DX1 = -1,760326635- Ю", D2F/DX2= -2,640406667- Ю", D3F/DX3 = 4,845-10-, S=-2,500000002 .10-, F(XI0)=3,3520653268-10. Точные значения производных и функции f(xo): Л. dx = -0,1760326633, i-=-0,2640489951, -=.= 0,48408982, . • /(xc)=0,3520653267. • Если значения хю, хю, х„о сильно различаются, то для повышения точности численного дифференцирования целесообразно задавать не абсолютные приращения Axi - h, а относительные p=Axi/Xio. Тогда при вычислениях п. 3 в описанном выше алгоритме нужно задавать абсциссы (л:,( -2рдг,(1), (хт-рхт), .... (Xi»-\-2pxia). Кроме того, в этом случае S,==(dUldxi)lp. Программа 4.34. Работу этой программы можно проверить по примеру, приведенному выше для программы 4.33 (при р = 0,002 получим аналогичные результаты). Подобные программы могут быть составлены и для численного дифференцирования аналитически заданных функций по 7 точкам. 10 PRINTВЫЧИСЛЕНИЕ ТРЕХ ЧАСТНЫХ ПРОИЗВОДНЫХ И 20 PRINTОТНОСИТЕЛЬНОГО КОЭФФИЦИЕНТА ЧУВСТВИТЕЛЬНОСТИ 30 PRINTФУНКЦИИ F<XI) РЯДА ПЕРЕМЕННЫХ/ ЗАДАННОЙ 40 PRINTS ОРДИНАТАМИ-ПОДПРОГРАММА СО СТРОКИ 400 50 INPUTВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ N=N 60 DIM X<N)fA<N)/B<N)/C<N)/S<N)!FOR 1=1 ТО N 70 PRINT!2.0!ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ Х<1) 80 INPUT Х<1>: NEXT I . 90 1НРиТЗАДАйТЕ АБСОЛЮТНОЕ ПРИРАЩЕНИЕ Х<1> Н=Н 100 FOR 1=1 ТО N!LETX<0)=X<I) 110 LETX<I)=X<0)-2*H!GOSUB 400:LETF2=F!6OSUB 400!LETF1=F 120 GOSUB 400:LETF0=F!GOSUB 400:LETE1=F:GOSUB 400:LETE2=F 130 LETX< I )=X<0): LETA< I )=<-E2-b8*El-8*Fl-HF2)/12/H 140 LETSCI)=A<I)*Xa)/F0 150LETBa)=<-E2-H6*El-30*F0-H6*Fl-F2)/12/H/H 160 LETC<I)=<E2-2*El-b2*Fl-F2)/2/H/H/H!NEXT I 208 FOR 1=1 TO Н:РР1НТ!2.0!ДЛЯ ПЕРЕМЕННОЙ X<I) 210 PRINT!F1.9!D1F/DX1=A<I) 220 PRINTD2F/DX2=B<I):PRINTD3F/DX3=C<I) 230 PRINTS=S<I):NEXT I 240 PRINTЗНАЧЕНИЕ ФУНКЦИИ F<XI0)=F0:GOTO 90 400 LETF=EXP<-X< 1 )2/2)/SeR<2*#PI) 410 LETX<I)=X<I)-hH!RETURH:END Программа 4.35. 18 PRINTВЫЧИСЛЕНИЕ ТРЕХ ЧАСТНЫХ ПРОИЗВОДНЫХ и 20 PRINTОТНОСИТЕЛЬНОГО КОЭФФИЦИЕНТА ЧУВСТВИТЕЛЬНОСТИ 30 PRINTФУНКЦИИ F<XI) РЯДА ПЕРЕМЕННЫХ/ ЗАДАННОЙ 40 PRINTАНАЛИТИЧЕСКИ-ПОДПРОГРАММА СО СТРОКИ 408 50 ШРиТВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ N=N 60 DIM X(N)/A<N)/B<N)/C<N)/S<N)!FOR 1=1 ТО N 70 PRINT!2.0!ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ Х(1) 80 INPUT Ха)! NEXT I 98 INPUTЗАДАЙТЕ ОТНОСИТЕЛЬНОЕ ПРИРАЩЕНИЕ Xd) Р=Р 100 FOR 1=1 ТО N!LETX<8)=X<I)!LETH=X<8)*P 110 LETX<:i)=X<0)-3*H!6OSUB 488!LETF3=F 120 GOSUB 480!LETF2=F!GOSUB 400!LETF1=F!&OSUB 4e0!LETE0=F 130 GOSUB 400!LETE1=F!GOSUB 400!LETE2=F!GOSUB 480!LETE3=F 140 LETAa)=<E3-9*E2+45*El-45*Fl+9*F2-F3V60/H 158 LETB<I)=2*E3-27*E2+278*E1-498*E8 168 LETB a >=< В < I) +278*F 1 -27!*F2+2!*F3 ) / 18e/< H*H ) 178 LETCa)=<:8*E2-E3-13*El+13«Fl-8*F2+F3)/8>-4H"3) 188 L£TS<I)=A<I)*X<e)/E0!LETXa)=X<0):NEXT I 200 FOR 1=1 TO N!PRINT!2.0!ДЛЯ ПЕРЕМЕННОЙ Х<Г) 210 PRINT<F1.9!DlF/DXl=Aa) 220 PRINTIGF✓ГХ2=B<I)!PRINTГЗР/ПХЗ»C<I> 230 PRINTS=Sa)!NEXT I 248 PRINTЗНАЧЕНИЕ ФУНКЦИИ F<XI0>=E0!GOTO 98 488 LETF=EXP ( -X < 1) -2/2 ) /SOR < 2*#P I) 410 LETXa)=Xa)+H!RETURN!END Пример. Используя данные програм- S=-2,500000004.10 , мы 4.33, получим F{XIO) = 3,3520653268 -10-. D1F/DX1 = -1,760326636-10"", В этой программе H=consL В приведеи- D2F/DX2=-2,640489378-10~, ной ниже программе задается Р = Дл:,/дг;с = D3F/DX3 = 4.840943756-10-, =const. le PRIHTе:ычисление трех частных производных и 26 PRIHTOTHOCHTEftoHOro коэффициента чувствительности зе PRINTфункции роа) ряда переменных заданной 40 PRINTAHAлитически-подпрограмма со строки 400 45 PRINTпри задании относительного изменения переменных 50 INPUTBBEAHTE число переменных N=N 60 DIM XCN>/A<N)..B<:N)..CaOrSCN>sF0R 1=1 то N 70 PRINT!2.0!введите начальное значение XCIJ 80 INPUT х<1>: NEXT I 40 INPUTзадайте относительное приращение хп) р=р 166 FOR 1=1 то N:LETX<0)=X<DsLETH=P»X<0) 110 LETX<I)=X<0>-2*H:&OSUB 400:LETF2=F!GOSUB 400:LETF1=F 120 GOSUB 408!LETF0=F:GOSUB 480:LETE1=F!GOSUB 40esLETE2=F 130 LETX(I)=X<0)iLETAa>=(-E2+8»E 1 -8»Fl*¥Z)X2уИ 140 LETS<I)=A<I)*X<I)/F8 150 LETBt I )=<-Е2+16жЕ1-30жР0+1бжР1-Р2V12-H/H 160 LETC<I)=<E2-2i*El+2»Fl-F2>/£/H/H/H!NEXT I 206 FOR 1=1 TO №РК1НТ!2.0!для переменной х<1> 210 PRINT!F1.4iDlF/DXl=A*;i) 220 PRINTD2F---DX2=Ba>:PRINTD3F>-DX.3=Ca> 230 PRINTS=S*;i)!NEXT I 240 PRINTзначение функции F<XI8>=F0!GOTO Эе 480 LETF=EXPС-X< 1) -2--2>-SORС2»#PI > 410 LETX< I )=XCn+H: RETURN! END 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 0.0171 |
|