|
Òåêñò ïîäïðîãðàììû è âåðñèé de95r_c.zip de95d_c.zip de91r_c.zip de91d_c.zip de93r_c.zip de93d_c.zip de97r_c.zip de97d_c.zip |
Òåêñòû òåñòîâûõ ïðèìåðîâ tde95r_c.zip tde95d_c.zip tde91r_c.zip tde91d_c.zip tde93r_c.zip tde93d_c.zip tde97r_c.zip tde97d_c.zip |
Âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà
Ðåøàåòñÿ çàäà÷à Êîøè äëÿ ñèñòåìû M îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà
Y ' = F(X,Y) ,
Y = ( y1,...,yM ) , F = ( f1( X, y1,..., yM ),..., fM( X, y1,..., yM ) )
ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà.
Ðåøåíèå âû÷èñëÿåòñÿ â îäíîé òî÷êå XK, êîòîðàÿ ÿâëÿåòñÿ êîíöîì èíòåðâàëà èíòåãðèðîâàíèÿ. Äëÿ âñåõ êîìïîíåíò ðåøåíèÿ îñóùåñòâëÿåòñÿ êîíòðîëü òî÷íîñòè ïî ìåðå ïîãðåøíîñòè, êîòîðûé çàêëþ÷àåòñÿ â ñëåäóþùåì. Åñëè íåêîòîðàÿ êîìïîíåíòà ïðèáëèæåííîãî ðåøåíèÿ ïî àáñîëþòíîé âåëè÷èíå íå ìåíüøå íåêîòîðîé íàïåðåä çàäàííîé êîíñòàíòû P (íàçûâàåìîé ãðàíèöåé ïåðåõîäà), òî êîíòðîëü òî÷íîñòè äëÿ ýòîé êîìïîíåíòû âåäåòñÿ ïî îòíîñèòåëüíîé ïîãðåøíîñòè, èíà÷å - ïî àáñîëþòíîé.
Àðòåìüåâ Ñ.Ñ., Äåìèäîâ Ã.Â. A - óñòîé÷èâûé ìåòîä òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà òî÷íîñòè ðåøåíèÿ çàäà÷è Êîøè äëÿ æåñòêèõ ñèñòåì îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé/_htm_c/ Íåêîòîðûå ïðîáëåìû âû÷èñëèòåëüíîé è ïðèêëàäíîé ìàòåìàòèêè. Íîâîñèáèðñê: "Íàóêà", 1975.
Ñîâðåìåííûå ÷èñëåííûå ìåòîäû ðåøåíèÿ îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé/ Ïîä ðåä. Äæ.Õîëëà è Äæ.Óàòòà. Ì.: "Ìèð", 1979.
int de95r_c (real *f, real *fj, real *fx, integer *m, real *xn,
real *yn, real *xk, real *hmin, real *eps, real *p, real *h__,
real *y, real *r__, integer *ierr)
Ïàðàìåòðû
| f - |
èìÿ ïîäïðîãðàììû âû÷èñëåíèÿ çíà÷åíèé ïðàâîé
÷àñòè äèôôåðåíöèàëüíûõ óðàâíåíèé. Ïåðâûé îïåðàòîð
ïîäïðîãðàììû äîëæåí èìåòü âèä: int f (float *x, float *y, float *dy, int *m). Çäåñü x, y - çíà÷åíèÿ íåçàâèñèìîé è çàâèñèìîé ïåðåìåííûõ, ñîîòâåòñòâåííî. Âû÷èñëåííîå çíà÷åíèå ïðàâîé ÷àñòè äîëæíî áûòü ïîìåùåíî â dy; â ñëó÷àå ñèñòåìû óðàâíåíèé, ò.å. êîãäà m ¹ 1, ïàðàìåòðû y è dy ïðåäñòàâëÿþò îäíîìåðíûå ìàññèâû äëèíîé m (òèï ïàðàìåòðîâ x, y è dy: âåùåñòâåííûé); |
| fj - |
èìÿ ïîäïðîãðàììû âû÷èñëåíèÿ çíà÷åíèé ýëåìåíòîâ ìàòðèöû ßêîáè
¶f / ¶y
ïðàâîé ÷àñòè ñèñòåìû. Ïåðâûé îïåðàòîð ïîäïðîãðàììû äîëæåí èìåòü âèä: int fj (float *x, float *y, float *z, int *m). Çäåñü x, y - çíà÷åíèÿ íåçàâèñèìîé è çàâèñèìîé ïåðåìåííûõ, ñîîòâåòñòâåííî.  ñëó÷àå ñèñòåìû óðàâíåíèé, ò.å. êîãäà m ¹ 1, ïàðàìåòð y ïðåäñòàâëÿåò ñîáîé îäíîìåðíûé ìàññèâ äëèíû m, à ïàðàìåòð z - äâóìåðíûé ìàññèâ ðàçìåðà m*m. Çíà÷åíèÿ ýëåìåíòîâ ìàòðèöû ßêîáè ¶f / ¶y ïðàâîé ÷àñòè ñèñòåìû äîëæíû áûòü ïîìåùåíû â ìàññèâ z, ïðè ýòîì ÷àñòíàÿ ïðîèçâîäíàÿ îò ïðàâîé ÷àñòè i - ãî óðàâíåíèÿ ïî j - îé ïåðåìåííîé y (j) çàïîìèíàåòñÿ â ýëåìåíòå z (i,j) (òèï ïàðàìåòðîâ x, y è z: âåùåñòâåííûé); |
| fx - |
èìÿ ïîäïðîãðàììû âû÷èñëåíèÿ çíà÷åíèé ÷àñòíûõ
ïðîèçâîäíûõ ïî x ïðàâîé ÷àñòè ñèñòåìû
¶f / ¶x. Ïåðâûé
îïåðàòîð ïîäïðîãðàììû äîëæåí èìåòü âèä: int fx (float *x, float *y, float *z1, int *m). Çäåñü: x, y - çíà÷åíèÿ íåçàâèñèìîé è çàâèñèìîé ïåðåìåííûõ, ñîîòâåòñòâåííî.  ñëó÷àå ñèñòåìû óðàâíåíèé, ò.å. êîãäà m ¹ 1, ïàðàìåòðû y è z1 ïðåäñòàâëÿþò ñîáîé îäíîìåðíûå ìàññèâû äëèíîé m. Çíà÷åíèÿ ÷àñòíûõ ïðîèçâîäíûõ ïî x ïðàâîé ÷àñòè ñèñòåìû ¶f / ¶x äîëæíû áûòü ïîìåùåíû â ìàññèâ z1; ïðè ýòîì ÷àñòíàÿ ïðîèçâîäíàÿ îò ïðàâîé ÷àñòè i - ãî óðàâíåíèÿ çàïîìèíàåòñÿ â ýëåìåíòå z1 (i) (òèï ïàðàìåòðîâ x, y è z1: âåùåñòâåííûé); |
| m - | êîëè÷åñòâî óðàâíåíèé â ñèñòåìå (òèï: öåëûé); |
| xn, yn - | íà÷àëüíûå çíà÷åíèÿ àðãóìåíòà è ðåøåíèÿ; â ñëó÷àå ñèñòåìû óðàâíåíèé (ò.å. m ¹ 1) yn ïðåäñòàâëÿåò îäíîìåðíûé ìàññèâ äëèíû m (òèï: âåùåñòâåííûé); |
| xk - | çíà÷åíèå àðãóìåíòà, ïðè êîòîðîì òðåáóåòñÿ âû÷èñëèòü ðåøåíèå çàäà÷è Êîøè (êîíåö èíòåðâàëà èíòåãðèðîâàíèÿ); xk ìîæåò áûòü áîëüøå, ìåíüøå èëè ðàâíî xn (òèï: âåùåñòâåííûé); |
| hmin - | ìèíèìàëüíîå çíà÷åíèå àáñîëþòíîé âåëè÷èíû øàãà, êîòîðîå ðàçðåøàåòñÿ èñïîëüçîâàòü ïðè èíòåãðèðîâàíèè äàííîé ñèñòåìû óðàâíåíèé (òèï: âåùåñòâåííûé); |
| eps - | äîïóñòèìàÿ ìåðà ïîãðåøíîñòè, ñ êîòîðîé òðåáóåòñÿ âû÷èñëèòü âñå êîìïîíåíòû ðåøåíèÿ (òèï: âåùåñòâåííûé); |
| p - | ãðàíèöà ïåðåõîäà, èñïîëüçóåìàÿ ïðè îöåíêå ìåðû ïîãðåøíîñòè ðåøåíèÿ (òèï: âåùåñòâåííûé); |
| h - | âåùåñòâåííàÿ ïåðåìåííàÿ, ñîäåðæàùàÿ íà÷àëüíîå çíà÷åíèå øàãà èíòåãðèðîâàíèÿ; ìîæåò çàäàâàòüñÿ ñ ó÷åòîì íàïðàâëåíèÿ èíòåãðèðîâàíèÿ, ò.å. ïîëîæèòåëüíûì, åñëè xn < xk, îòðèöàòåëüíûì, åñëè xn > xk, èëè áåç âñÿêîãî ó÷åòà â âèäå àáñîëþòíîé âåëè÷èíû; |
| y - | èñêîìîå ðåøåíèå çàäà÷è Êîøè, âû÷èñëåííîå ïîäïðîãðàììîé ïðè çíà÷åíèè àðãóìåíòà xk; äëÿ ñèñòåìû óðàâíåíèé (êîãäà m ¹ 1) çàäàåòñÿ îäíîìåðíûì ìàññèâîì äëèíû m.  ñëó÷àå ñîâïàäåíèÿ çíà÷åíèé ïàðàìåòðîâ xn è xk çíà÷åíèå y ïîëàãàåòñÿ ðàâíûì íà÷àëüíîìó çíà÷åíèþ yn (òèï: âåùåñòâåííûé); |
| r - | îäíîìåðíûé ðàáî÷èé ìàññèâ âåùåñòâåííîãî òèïà äëèíû 3*m*m + 11*m + 1; |
| ierr - | öåëàÿ ïåðåìåííàÿ, çíà÷åíèå êîòîðîé â ðåçóëüòàòå ðàáîòû ïîäïðîãðàììû ïîëàãàåòñÿ ðàâíûì 65, åñëè êàêàÿ - íèáóäü êîìïîíåíòà ðåøåíèÿ íå ìîæåò áûòü âû÷èñëåíà ñ òðåáóåìîé òî÷íîñòüþ eps; â ýòîì ñëó÷àå èíòåãðèðîâàíèå ñèñòåìû ìîæíî ïîâòîðèòü îáðàùåíèåì ê ïîäïðîãðàììå ñ íîâûìè çíà÷åíèÿìè ïàðàìåòðîâ h è hmin. |
Âåðñèè
| de97r_c - |
âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà. Îòëè÷èå ïîäïðîãðàììû de97r_c îò ïîäïðîãðàììû de95r_c ñîñòîèò â òîì, ÷òî ïðè îáðàùåíèè ê ïîäïðîãðàììå de97r_c íå òðåáóåòñÿ çàäàâàòü ïîäïðîãðàììó âû÷èñëåíèÿ ìàòðèöû ßêîáè ñèñòåìû è ïîäïðîãðàììó âû÷èñëåíèÿ ÷àñòíûõ ïðîèçâîäíûõ ïðàâîé ÷àñòè ñèñòåìû ïî x. Âñå ÷àñòíûå ïðîèçâîäíûå îò ïðàâîé ÷àñòè âû÷èñëÿþòñÿ â ïîäïðîãðàììå de97r_c ñ ïîìîùüþ ðàçíîñòíûõ îòíîøåíèé. Ïåðâûé îïåðàòîð ïîäïðîãðàììû de97r_c èìååò âèä: int de97r_c (real *f, integer *m, real *xn, real *yn, real *xk,
real *hmin, real *eps, real *p, real *h__, real *y, real *r__,
integer *ierr)
Ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ ïîäïðîãðàììû de97r_c
îòëè÷àåòñÿ îò ñïèñêà ïàðàìåòðîâ ïîäïðîãðàììû de95r_c
îòñóòñòâèåì ïàðàìåòðîâ fj è fx.
Ïàðàìåòðû ïîäïðîãðàììû de97r_c èìåþò òîò æå ñìûñë, ÷òî
è îäíîèìåííûå ïàðàìåòðû ïîäïðîãðàììû de95r_c;
|
| de91r_c - |
âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ àâòîíîìíîé
æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé
ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ
ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà.
Äàííàÿ ïîäïðîãðàììà ïðåäíàçíà÷åíà äëÿ èíòåãðèðîâàíèÿ
ñèñòåì óðàâíåíèé, â ïðàâûå ÷àñòè êîòîðûõ íå âõîäèò
íåçàâèñèìàÿ ïåðåìåííàÿ x, ò.å. ñèñòåì âèäà
y ' = f (y).
Ïåðâûé îïåðàòîð ïîäïðîãðàììû de91r_c èìååò âèä:
int de91r_c (real *f, real *fj, integer *m, real *xn, real *yn,
real *xk, real *hmin, real *eps, real *p, real *h__, real *y,
real *r__, integer *ierr)
Ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ ïîäïðîãðàììû de91r_c îòëè÷àåòñÿ îò ñïèñêà ïàðàìåòðîâ de95r_c îòñóòñòâèåì ïàðàìåòðà fx. Ïàðàìåòðû ïîäïðîãðàììû de91r_c èìåþò òîò æå ñìûñë, ÷òî è îäíîèìåííûå ïàðàìåòðû ïîäïðîãðàììû de95r_c, êðîìå ïàðàìåòðà r.  ïîäïðîãðàììå de91r_c ïàðàìåòð r ïðåäñòàâëÿåò îäíîìåðíûé âåùåñòâåííûé ðàáî÷èé ìàññèâ äëèíû 3m2 + 8m + 1. |
| de93r_c - |
âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ àâòîíîìíîé
æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé
ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ
ìåòîäîì Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà. Äàííàÿ
ïîäïðîãðàììà ïðåäíàçíà÷åíà äëÿ èíòåãðèðîâàíèÿ ñèñòåì
óðàâíåíèé, â ïðàâûå ÷àñòè êîòîðûõ íå âõîäèò
íåçàâèñèìàÿ ïåðåìåííàÿ x, ò.å. ñèñòåì âèäà
y ' = f (y).
Îòëè÷èå ïîäïðîãðàììû de93r_c îò ïîäïðîãðàììû de95r_c ñîñòîèò
â òîì, ÷òî ïðè îáðàùåíèè ê ïîäïðîãðàììå de93r_c íå
òðåáóåòñÿ çàäàâàòü ïîäïðîãðàììó âû÷èñëåíèÿ ìàòðèöû ßêîáè ñèñòåìû
¶f / ¶y
è ïîäïðîãðàììó âû÷èñëåíèÿ ÷àñòíûõ ïðîèçâîäíûõ
¶f / ¶x.
Âñå ÷àñòíûå ïðîèçâîäíûå îò ïðàâîé
÷àñòè âû÷èñëÿþòñÿ â ïîäïðîãðàììå de93r_c ñ ïîìîùüþ
ðàçíîñòíûõ îòíîøåíèé. Ïåðâûé îïåðàòîð ïîäïðîãðàììû de93r_c èìååò âèä:
int de93r_c (real *f, integer *m, real *xn, real *yn, real *xk,
real *hmin, real *eps, real *p, real *h__, real *y, real *r__,
integer *ierr)
Ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ ïîäïðîãðàììû de93r_c îòëè÷àåòñÿ îò ñïèñêà ïàðàìåòðîâ ïîäïðîãðàììû de95r_c îòñóòñòâèåì ïàðàìåòðîâ fj è fx. Ïàðàìåòðû ïîäïðîãðàììû de93r_c èìåþò òîò æå ñìûñë, ÷òî è îäíîèìåííûå ïàðàìåòðû ïîäïðîãðàììû de95r_c, êðîìå ïàðàìåòðà r.  ïîäïðîãðàììå de93r_c ïàðàìåòð r ïðåäñòàâëÿåò îäíîìåðíûé âåùåñòâåííûé ðàáî÷èé ìàññèâ äëèíû 3m2 + 8m + 1. |
| de95d_c - | âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà ñ ïîâûøåííîé òî÷íîñòüþ. Ïåðâûé îïåðàòîð ïîäïðîãðàììû èìååò òîò æå âèä, ÷òî è â ïîäïðîãðàììå de95r_c; ïðè ýòîì ïàðàìåòðû xn, yn, xk, hmin, eps, p, h, y, r è ïàðàìåòðû x, y, dy, z, z1 â ïîäïðîãðàììàõ f, fj è fx äîëæíû èìåòü òèï double; |
| de97d_c - | âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà ñ ïîâûøåííîé òî÷íîñòüþ. Ïåðâûé îïåðàòîð ïîäïðîãðàììû èìååò òîò æå âèä, ÷òî è â ïîäïðîãðàììå de97r_c; ïðè ýòîì ïàðàìåòðû xn, yn, xk, hmin, eps, p, h, y, r è ïàðàìåòðû x, y, dy â ïîäïðîãðàììå f äîëæíû èìåòü òèï double; |
| de91d_c - | âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ àâòîíîìíîé æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåãðèðîâàíèÿ ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà ñ ïîâûøåííîé òî÷íîñòüþ. Ïåðâûé îïåðàòîð ïîäïðîãðàììû èìååò òîò æå âèä, ÷òî è â ïîäïðîãðàììå de91r_c; ïðè ýòîì ïàðàìåòðû xn, yn, xk, hmin, eps, p, h, y, r è ïàðàìåòðû x, y, dy, z â ïîäïðîãðàììàõ f è fj äîëæíû èìåòü òèï double; |
| de93d_c - | âû÷èñëåíèå ðåøåíèÿ çàäà÷è Êîøè äëÿ àâòîíîìíîé æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà â êîíöå èíòåðâàëà èíòåðãèðîâàíèÿ ìåòîäîì òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà ñ ïîâûøåííîé òî÷íîñòüþ. Ïåðâûé îïåðàòîð ïîäïðîãðàììû èìååò òîò æå âèä, ÷òî è â ïîäïðîãðàììå de93r_c; ïðè ýòîì ïàðàìåòðû xn, yn, xk, hmin, eps, p, h, y, r è ïàðàìåòðû x, y, dy â ïîäïðîãðàììå f äîëæíû èìåòü òèï double. |
Âûçûâàåìûå ïîäïðîãðàììû
| de94r_c - de94d_c | âûïîëíåíèå îäíîãî øàãà ÷èñëåííîãî èíòåãðèðîâàíèÿ æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà ìåòîäîì òèïà Ðîçåíáðîêà ñ îáûêíîâåííîé è ïîâûøåííîé òî÷íîñòüþ. Âûçûâàþòñÿ ïðè ðàáîòå ïîäïðîãðàìì de95r_c è de95d_c ñîîòâåòñòâåííî; |
| de96r_c - de96d_c | âûïîëíåíèå îäíîãî øàãà ÷èñëåííîãî èíòåãðèðîâàíèÿ æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà ìåòîäîì òèïà Ðîçåíáðîêà ñ îáûêíîâåííîé è ïîâûøåííîé òî÷íîñòüþ. Âûçûâàþòñÿ ïðè ðàáîòå ïîäïðîãðàìì de97r_c è de97d_c ñîîòâåòñòâåííî; |
| de90r_c - de90d_c | âûïîëíåíèå îäíîãî øàãà ÷èñëåííîãî èíòåãðèðîâàíèÿ àâòîíîìíîé æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà ìåòîäîì òèïà Ðîçåíáðîêà ñ îáûêíîâåííîé è ïîâûøåííîé òî÷íîñòüþ. Âûçûâàþòñÿ ïðè ðàáîòå ïîäïðîãðàìì de91r_c è de91d_c ñîîòâåòñòâåííî; |
| de92r_c - de92d_c | âûïîëíåíèå îäíîãî øàãà ÷èñëåííîãî èíòåãðèðîâàíèÿ àâòîíîìíîé æåñòêîé ñèñòåìû îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé ïåðâîãî ïîðÿäêà ìåòîäîì òèïà Ðîçåíáðîêà ñ îáûêíîâåííîé è ïîâûøåííîé òî÷íîñòüþ. Âûçûâàþòñÿ ïðè ðàáîòå ïîäïðîãðàìì de93r_c è de93d_c ñîîòâåòñòâåííî; |
| utde20_c - utde21_c | ïîäïðîãðàììû âûäà÷è äèàãíîñòè÷åñêèõ ñîîáùåíèé. Ïîäïðîãðàììà utde20_c âûçûâàåòñÿ ïðè ðàáîòå ïîäïðîãðàìì de91r_c, de93r_c, de95r_c, de97r_c; ïîäïðîãðàììà utde21_c âûçûâàåòñÿ ïðè ðàáîòå ïîäïðîãðàìì de91d_c, de93d_c, de95d_c, de97d_c. |
Çàìå÷àíèÿ ïî èñïîëüçîâàíèþ
|
 îáùåì ñëó÷àå çàäàííàÿ òî÷íîñòü íå ãàðàíòèðóåòñÿ. Ïðè ðàáîòå ïîäïðîãðàììû è åå âåðñèé çíà÷åíèÿ ïàðàìåòðîâ m, xn, yn, xk, hmin, eps, p ñîõðàíÿþòñÿ. Ïðè ðàáîòå ïîäïðîãðàìì f, fj è fx çíà÷åíèÿ ïàðàìåòðîâ m, x, y íå äîëæíû èçìåíÿòüñÿ. Åñëè ïîñëå ðàáîòû ïîäïðîãðàììû íåò íåîáõîäèìîñòè èìåòü íà÷àëüíîå çíà÷åíèå ðåøåíèÿ yn, òî ïàðàìåòðû yn è y ïðè îáðàùåíèè ê íåé ìîæíî ñîâìåñòèòü. Ïðè ýòîì ñëåäóåò èìåòü â âèäó, ÷òî â ñëó÷àå àâàðèéíîãî âûõîäà èç ïîäïðîãðàììû, ò.å. ñî çíà÷åíèåì ierr = 65, çíà÷åíèå ïàðàìåòðà yn áóäåò èñïîð÷åíî.  ïîäïðîãðàììå de95r_c è åå âåðñèÿõ èñïîëüçóåòñÿ îäíîøàãîâûé ìåòîä òèïà Ðîçåíáðîêà ÷åòâåðòîãî ïîðÿäêà òî÷íîñòè. Íà êàæäîì øàãå h èíòåãðèðîâàíèÿ, âûïîëíÿåìîì èç òåêóùåãî óçëà èíòåãðèðîâàíèÿ xn, âû÷èñëÿþòñÿ ÷åòûðå çíà÷åíèÿ ïðàâîé ÷àñòè ñèñòåìû äèôôåðåíöèàëüíûõ óðàâíåíèé. Ñðåäè ýòèõ çíà÷åíèé åñòü îäíî, êîòîðîå äîëæíî âû÷èñëÿòüñÿ ïðè çíà÷åíèè íåçàâèñèìîé ïåðåìåííîé x, ðàâíîì xn - h. Ýòî çíà÷åíèå àðãóìåíòà íàõîäèòñÿ ñëåâà îò òî÷êè xn ïðè h > 0 è ñïðàâà îò òî÷êè xn ïðè h < 0.  ÷àñòíîñòè, ïðè âûïîëíåíèè ïåðâîãî øàãà h èç íà÷àëüíîé òî÷êè xn (íàïîìíèì, ÷òî àáñîëþòíàÿ âåëè÷èíà ïåðâîãî øàã h áåðåòñÿ ðàâíîé àáñîëþòíîé âåëè÷èíå çíà÷åíèÿ, çàäàííîãî ïàðàìåòðîì h ïðè îáðàùåíèè ê ïîäïðîãðàììå, à çíàê ïåðâîãî øàãà îïðåäåëÿåòñÿ ñîîòíîøåíèåì çíà÷åíèé ïàðàìåòðîâ xn è xk) çíà÷åíèå xn - h íå áóäåò ïðèíàäëåæàòü èíòåðâàëó èíòåãðèðîâàíèÿ, îãðàíè÷åííîìó çíà÷åíèÿìè, çàäàííûìè ïàðàìåòðàìè xn è xk ïðè îáðàùåíèè ê ïîäïðîãðàììå de95r_c (èëè åå âåðñèÿìè). Ýòî ñëåäóåò ó÷èòûâàòü ïðè ñîñòàâëåíèè ïîäïðîãðàììû f âû÷èñëåíèÿ ïðàâîé ÷àñòè ñèñòåìû. Åñëè ïðàâàÿ ÷àñòü ñèñòåìû íå îïðåäåëåíà äëÿ x, íå ïðèíàäëåæàùèõ èíòåðâàëó èíòåãðèðîâàíèÿ, òî ïîïûòêà âû÷èñëèòü ïðàâóþ ÷àñòü äëÿ óêàçàííîãî çíà÷åíèÿ àðãóìåíòà x ìîæåò ïðèâåñòè ê àâàðèéíîìó ïðåðûâàíèþ. Åñëè ïðè ðåøåíèè ñèñòåìû äèôôèðåíöèàëüíûõ óðàâíåíèé íå çàäàþòñÿ ïîäïðîãðàììû fj âû÷èñëåíèÿ ìàòðèöû ßêîáè è fx âû÷èñëåíèÿ ÷àñòíûõ ïðîèçâîäíûõ ïî x ïðàâîé ÷àñòè ñèñòåìû (ò.å. ïðîèçâîäèòñÿ îáðàùåíèå ê ïîäïðîãðàììàì de93r_c, de97r_c, de93d_c, de97d_c), òî âñå ÷àñòíûå ïðîèçâîäíûå ïî y è ïî x â ýòèõ ïîäïðîãðàììàõ àïïðîêñèìèðóþòñÿ öåíòðàëüíûìè ðàçíîñòíûìè îòíîøåíèÿìè. Çàìåíà òî÷íûõ çíà÷åíèé ïðîèçâîäíûõ ðàçíîñòíûìè àïïðîêñèìàöèÿìè ìîæåò ïðèâåñòè ê ðîñòó ïîãðåøíîñòè ïðèáëèæåííîãî ðåøåíèÿ ñèñòåìû äèôôåðåíöèàëüíûõ óðàâíåíèé ïî ñðàâíåíèþ ñ òåì, ÷òî áûëî áû, åñëè áû âñå ÷àñòíûå ïðîèçâîäíûå âû÷èñëÿëèñü òî÷íî ñ ïîìîùüþ ïîäïðîãðàìì fj è fx. Äàæå åñëè áóäåò ìàëà ïîãðåøíîñòü àïïðîêñèìàöèè ÷àñòíûõ ïðîèçâîäíûõ (íàïðèìåð, åñëè ïðàâàÿ ÷àñòü ñèñòåìû ÿâëÿåòñÿ ëèíåéíîé ôóíêöèåé ñâîèõ àðãóìåíòîâ, òî ïîãðåøíîñòü àïïðîêñèìàöèè ÷àñòíûõ ïðîèçâîäíûõ ðàâíà íóëþ), ìîæåò îêàçàòüñÿ çíà÷èòåëüíîé âû÷èñëèòåëüíàÿ ïîãðåøíîñòü, îñîáåííî, êîãäà âû÷èñëåíèÿ âûïîëíÿþòñÿ ñ îäèíàðíîé òî÷íîñòüþ. Ïðè ýòîì âû÷èñëèòåëüíàÿ ïîãðåøíîñòü ìîæåò äàæå ïðåâîñõîäèòü âåðõíèé ïðåäåë ïîãðåøíîñòè ïðèáëèæåííîãî ðåøåíèÿ, çàäàííûé ïðè îáðàùåíèè ê ïîäïðîãðàììå ïàðàìåòðîì eps.  ýòîì ñëó÷àå öåëåñîîáðàçíî èñïîëüçîâàòü íå ïîäïðîãðàììû de93r_c, de97r_c, à èõ âåðñèè, âûïîëíÿþùèå âû÷èñëåíèÿ ñ óäâîåííûì ÷èñëîì çíà÷àùèõ öèôð, ò.å. ïîäïðîãðàììû de93d_c, de97d_c. |
Ðåøàåòñÿ çàäà÷à Êîøè
y1' = -100 y1
y2' = -100 y1 - 2 y2 + 20 e - 100 x + 2 e - x cos x
y3' = -100 y1 + 9998 y2 - 9990 y3 - 10 y4 + 20 e - 100 x + 2 e - x cos x
y4' = -100 y1 + 9988 y2 + 20 y3 - 10010 y4 + 20 e - 100 x + 2 e - x cos x
0 £ x £ 10 , y1(0) = 10 , y2(0) = 11 , y3(0) = 111 , y4(0) = 11
Òî÷íîå ðåøåíèå çàäà÷è èìååò âèä:
y1 = 10 e -100 x
y2 = 10 e - 100 x + e - x cos x + e - x sin x
y3 = y2 + 100 e - 10000 x cos 10x
y4 = y3 + 100 e - 10000 x sin 10x
Ìàòðèöà ßêîáè ïðàâîé ÷àñòè ñèñòåìû èìååò âèä:
| -100 0 0 0
| -100 -2 0 0
| -100 9998 -9990 -10
| -100 9988 20 -10010
×àñòíûå ïðîèçâîäíûå ïî x ïðàâîé ÷àñòè ñèñòåìû èìåþò âèä:
| 0
| -2000 e - 100 x - 2 e - x (cos x + sin x)
| -2000 e - 100 x - 2 e - x (cos x + sin x)
| -2000 e - 100 x - 2 e - x (cos x + sin x)
Íèæå ïðèâîäÿòñÿ ôðàãìåíò âûçûâàþùåé ïðîãðàììû äëÿ de95r_c, ïîäïðîãðàììû f, fj, fx è ðåçóëüòàòû ñ÷åòà, ïîëó÷åííûå ïîñëå íåñêîëüêèõ îáðàùåíèé ê ïîäïðîãðàììå de95r_c.
int main(void)
{
/* Builtin functions */
double exp(double), cos(double), sin(double);
/* Local variables */
extern int de95r_c(U_fp, U_fp, U_fp, int *, float *, float *, float *,
float *, float *, float *, float *, float *, float *,
int *);
static float hmin;
static int ierr;
extern int f_c();
static float h__;
static int m;
static float p, r__[93], y[4], y1, y2, y3, y4;
extern int fj_c();
static int ih;
extern int fx_c();
static float xk, xn, yn[4], eps;
m = 4;
xn = 0.f;
yn[0] = 10.f;
yn[1] = 11.f;
yn[2] = 111.f;
yn[3] = 111.f;
hmin = 1e-10f;
eps = .01f;
p = 1e3f;
xk = 10.f;
/* B›—ˆC‹EHˆe TO—HOƒo PE˜EHˆŸ CˆCTEM›: */
y1 = (float)exp((float)(xk * -100.f)) * 10.f;
y2 = y1 + (float)exp((float)(-xk)) * ((float)cos(xk) + (float)sin(xk));
y3 = y2 + (float)exp((float)(xk * -1e4f)) * 100.f *
(float)cos((float)(xk * 10.f));
y4 = y3 + (float)exp((float)(xk * -1e4f)) * 100.f *
(float)sin((float)(xk * 10.f));
printf("\n %16.7e %16.7e ", y1, y2);
printf("\n %16.7e %16.7e \n", y3, y4);
ih = 0;
l10:
++ih;
h__ = .01f;
de95r_c((U_fp)f_c, (U_fp)fj_c, (U_fp)fx_c, &m, &xn, yn, &xk, &hmin, &eps, &p,
&h__, y, r__, &ierr);
printf("\n %7.1e \n", eps);
printf("\n %16.7e %16.7e ", y[0], y[1]);
printf("\n %16.7e %16.7e \n", y[2], y[3]);
printf("\n %16.7e \n", h__);
eps *= .01f;
if (ih < 3) {
goto l10;
}
return 0;
} /* main */
int f_c(float *x, float *y, float *dy, int *m)
{
/* Builtin functions */
double exp(double), cos(double);
/* Local variables */
static float t1;
/* Parameter adjustments */
--dy;
--y;
/* Function Body */
dy[1] = y[1] * -100.f;
t1 = (float)exp((float)(*x * -100.f)) * 20.f +
(float)exp((float)(-(*x))) * 2.f * (float)cos(*x);
dy[2] = dy[1] - y[2] * 2.f + t1;
dy[3] = dy[1] + y[2] * 9998.f - y[3] * 9990.f - y[4] * 10.f + t1;
dy[4] = dy[1] + y[2] * 9988.f + y[3] * 20.f - y[4] * 10010.f + t1;
return 0;
} /* f_c */
int fj_c(float *x, float *y, float *df, int *m)
{
#define df_ref(a_1,a_2) df[(a_2)*4 + a_1]
/* Parameter adjustments */
df -= 5;
--y;
/* Function Body */
df_ref(1, 1) = -100.f;
df_ref(1, 2) = 0.f;
df_ref(1, 3) = 0.f;
df_ref(1, 4) = 0.f;
df_ref(2, 1) = -100.f;
df_ref(2, 2) = -2.f;
df_ref(2, 3) = 0.f;
df_ref(2, 4) = 0.f;
df_ref(3, 1) = -100.f;
df_ref(3, 2) = 9998.f;
df_ref(3, 3) = -9990.f;
df_ref(3, 4) = -10.f;
df_ref(4, 1) = -100.f;
df_ref(4, 2) = 9988.f;
df_ref(4, 3) = 20.f;
df_ref(4, 4) = -10010.f;
return 0;
} /* fj_c */
int fx_c(float *x, float *y, float *dx, int *m)
{
/* Builtin functions */
double exp(double), cos(double), sin(double);
/* Parameter adjustments */
--dx;
--y;
/* Function Body */
dx[1] = 0.f;
dx[2] = (float)exp((float)(*x * -100.f)) * -2e3f -
(float)exp((float)(-(*x))) * 2.f * ((float)cos(*x) +
(float)sin(*x));
dx[3] = dx[2];
dx[4] = dx[2];
return 0;
} /* fx_c */
Ðåçóëüòàòû:
y1 y2
0.000000000000+00 -6.279230870976-05
y3 y4
-6.279230870976-05 -6.279230870976-05
ïîñëå ïåðâîãî îáðàùåíèÿ ê ïîäïðîãðàììå -
EPS = 1.0-02
y(1) y(2)
7.146873880164-13 -6.764660892966-05
y(3) y(4)
-6.764660892122-05 -6.764660892966-05
H = 2.560000000001+00
ïîñëå âòîðîãî îáðàùåíèÿ ê ïîäïðîãðàììå -
eps = 1.0-04
y(1) y(2)
6.621227792960-20 -6.330159900469-05
y(3) y(4)
-6.330159900392-05 -6.330159900414-05
h = 2.560000000001+00
ïîñëå òðåòüåãî îáðàùåíèÿ ê ïîäïðîãðàììå -
eps = 1.0-06
y(1) y(2)
0.000000000000+00 -6.286382905407-05
y(3) y(4)
-6.286382905418-05 -6.286382905407-05
h = 1.280000000001+00
ïîñëå ÷åòâåðòîãî îáðàùåíèÿ ê ïîäïðîãðàììå -
eps = 1.0-08
y(1) y(2)
0.000000000000+00 -6.279451115976-05
y(3) y(4)
-6.279451115976-05 -6.279451116020-05
h = 3.200000000002-01