Punerea în aplicare a 2a metoda de Taylor în Ordinul Scilab
rftg.development.googlepages.com
Data fondarii: aprilie 9, 2007 Version: v0.02 - 13/MAI/2008 Autor: Filipe Teixeira Ricardo Gomes
NOT? LEGAL?
Acest document a fost elaborat de Ricardo Teixeira Filipe Gomes, care a fost rezerv? toate drepturile. © 2008 Ricardo Teixeira Filipe Gomes Acest document este disponibil pentru consultare ?i de a folosi fac? în conformitate cu toate drepturile de autor ?i / sau de proprietate intelectual?. Copia sau par?ial, prin orice mijloace, de texte ?i imagini de pe acest document este interzis? în mod expres, decât dac? respect? drepturile de autor ?i / sau de proprietate intelectual?, citând documentul este pentru corespunz?tor, inclusiv ?i imperterivelmente o trimitere clar? la site-ul web al autorului: "rftg.development.googlepages.com." De materiale con?inute este doar o informare cu caracter general, bazate pe experien?e personale ?i nu caut? s? influen?eze fel de cititor special cu privire la orice problem?. Con?inutul acestui document sunt oferite ca un avantaj pentru cititorii ?i const? numai de non-informa?iile obligatorii. Con?inutul acestui document sunt furnizate "ca atare" ?i nu ofer? nici o garan?ie pe ea. Autorul documentul nu î?i asum? nici o r?spundere pentru orice daune care pot s? apar?, pentru c? cineva a se bazeaz? pe informa?iile con?inute de acesta, deoarece aceste informa?ii sunt doar pentru informare, nu promit sau o garan?ie c? sunt corecte, complete ?i actualizate. Acela?i lucru se aplic? la orice con?inut de referin?? în aceea?i. Orice litigii care decurg din sau legate de utilizarea acestui document, sau referitoare la drepturile de autor ?i / sau de materiale de proprietate intelectual? care sunt parte a acestui document trebuie s? fie reglementate de legea portughez? ?i sub rezerva competen?a instan?elor judec?tore?ti din Portugalia. De lectur? a acestui document necesit? utilizarea sa ?i de acceptare a acestor condi?ii.
© 2008 Filipe Teixeira Ricardo Gomes. rftg.development.googlepages.com
Institutul Politehnic din Porto, Institutul de Inginerie din Porto
Departamentul de Inginerie Electrica Licen?iat în inginerie electrica, Sisteme de automatizare ?i de ramur? Disciplina "Matematica aplicata" II
Punerea în aplicare a metodei de Taylor Scilab din Ordinul 2a
09.04.2007
Personal didactic / Advisor: Prof.. Jose Magalhaes munca efectuat? de c?tre: Filipe Teixeira Ricardo Gomes
Nu fi folosite pentru c? a bibliotecii simbolic Scilab este necesar de a cere utilizatorului s? derivat de 1 ?i 2a, cu toate c? nu este important pentru demonstrarea în cauz?, deoarece inten?ia este de a dovedi validitatea ?i de precizie de cre?tere, metoda Taylor, pentru a 2a privind metoda de Euler (de la 1 la clas?) în rezolvarea ecuatiilor diferentiale. Formul? general? de aplicare a metodei de a 2a Taylor a fost pus în aplicare pentru:
Deoarece func?ia a dou? variabile, pentru a fi achieved''and trebuie s? rula?i urm?toarele calcule:
y =''
d 2 DF ?i dx dy = ? F = x * 2 + dx dx ? y dx dx
La care de fapt va solicita utilizatorului s? derivat de la 1 la func?ia de
? ? dy F ? ? ? ? ? ? F = F (x) ?i 2a ? e derivate par?iale, în scopul de a 'x' nu ? ? ? ?i în scopul de "?i" ? ? ? y ?. ? ? ? x dx ? ? ? ? ?
Atunci ai vedea codul de dezvoltat:
/ / (C) 2008 Ricardo Gomes - Toate drepturile rezervate / / http://rftg.development.googlepages.com / / Punerea în aplicare a metodei de Taylor pentru 2a / / v0.01 09.04.2007 clar / ?terge toate variabilele definite
g = Intrare ( "Ce este în func?ie efective (numai în scopul de a teoretic)?", "s"); g1 = Intrare ( "Ce 1st derivat din func?ie (intr? atât de clar)?", "s"); g2 = de intrare ( "Ce 2a derivate par?iale de la func?ia x (intr? atât de clar)?", "s"); g3 = Intrare ( "Ce 2a derivate par?iale în func?ie de ?i în (insera atât de clar)?", "s" ); X0 = input ( 'Care este valoarea ini?ial? de x? "); XF = input (' Care este valoarea final? a pertendido x?"); Y0 = input ( 'Care este valoarea ini?ial? de y? ") H = Intrare ( "Ce pas de repetare h? '); / / Parametrii de test utilizate pentru a / / g =' exp (x ^ 2) ', / / g1 =" 2 * x * y "; / / g2 =" 2 * Y "; / / g3 * x =" 2 "; / / x0 = 0; / / y0 = 1, / / XF = 2; / / h = 0.2;
/ / Func?ii: func?ia afar? = f (x) = evstr afar? (g) în func?ie endfunction = f1 (x, y) = evstr afar? (G1) endfunction în func?ie F2 = (x, y) = evstr afar? (G2) endfunction în func?ie f3 = (x, y) = evstr afar? (G3) endfunction
/ / Valorile ini?iale x (1) = x0; y (1) = y0; / / calcula lungimea de vectori (de date) de a prezenta c_vect = (XF-x0) / h;
Pasul //*************************** h ******************* ******** / / Calculeaz? num?rul de Repet?ri n_iter = (XF - x0) / h / /, în acest caz, echivaleaz? cu "c_vect" pentru i = 1: n_iter x (i +1) = x (i) + h, ?i (i +1) = y (i) + h * f1 (x (i) ?i (i)) + ((h ^ 2) / 2) * (F2 (x (i) , ?i (i)) + f3 (x (i) ?i (i)) * f1 (x (i) ?i (i))); sfâr?itul / / copie a vectorului de ie?ire xsaida = x, y = y1 ; //*********************************************** ****************
Pasul //*************************** h / 2 ***************** ******** / / Calculeaz? num?rul de Repet?ri n_iter = (XF - x0) / (h / 2) pentru i = 1: n_iter x (i +1) = x (i) + (h / 2), y (i +1) = y (i) + (h / 2) * f1 (x (i) ?i (i)) + (((h / 2) ^ 2) / 2) * (F2 (x (i) ?i (i)) + f3 (x (i) ?i (i)) * f1 (x (i) ?i (i))); sfâr?itul / / copie a vectorului de ie?ire y2 ( 1) = y0; pentru i = 1: c_vect y2 (i +1) = y (2 * i + 1); sfâr?itul //******************** ******************************************* //***** ********************** Pasul h / 4 ************************ * / / Calculeaz? num?rul de Repet?ri n_iter = (XF - x0) / (h / 4) pentru i = 1: n_iter x (i +1) = x (i) + (h / 4);
?i (i +1) = y (i) + (h / 4) * f1 (x (i) ?i (i)) + (((h / 4) ^ 2) / 2) * (F2 (x ( i) ?i (i)) + f3 (x (i) ?i (i)) * f1 (x (i) ?i (i))); sfâr?itul / / copie a vectorului de ie?ire Y4 (1) = y0; pentru i = 1: c_vect Y4 (i +1) = y (4 * i + 1); sfâr?itul //*********************** ****************************************
//************************** Calculul EC1 ******************** **** EC1 (1) = 0 pentru i = 1: c_vect EC1 (i +1) = y2 (i +1) - y1 (i +1); sfâr?itul //********* ************************************************** ****
//************************** Calculul EC2 ******************** **** EC2 (1) = 0 pentru i = 1: c_vect EC2 (i +1) = Y4 (i +1) - y2 (i +1); sfâr?itul //********* ************************************************** ****
//*********************** Calcularea Motiv ********************** Motive (1) = 0 pentru i = 1: c_vect dac? EC2 (i +1) == 0 motive (i +1) = 0; altceva motive (i +1) = EC1 (i +1) / EC2 (i 1) sfâr?itul sfâr?itul //****************************************** ********************* //******************* De calcul a real solu?ie **** ******************** Pentru i = 1: c_vect 1 yreal (i) = f (xsaida (i)); sfâr?itul //****** ************************************************** ************ Printf ( "\ n \ n \ n") printf ("********************** *********** \ N ") printf (" Tabelul metoda Taylor 2a * Pentru * \ n ") printf ("****************** *************** \ N ") printf (" \ parametri sunt prezentate, respectiv: \ n ") printf (" \ NX; ?i (x), ?i pentru h, ?i s? h / 2, ?i pentru h / 4; Eroare 1; Eroare 2; Motiv \ n \ n ") = Tabelul [xsaida yreal y1 y2 Y4 EC1 EC2 motive] printf (" \ n \ nFim. \ n ")
Rularea de aplicare în Scilab:
-> Scipad () -> Ce este în func?ie efective (numai în scopul de a teoretic)? -> Exp (x ^ 2) Ce 1st derivat din func?ie (intr? atât de clar)? -> 2 * x * y Ce 2a derivate par?iale de la func?ia x (intr? atât de clar)? -> 2 * y Ce 2a derivate par?iale în func?ie de ?i în (insera atât de clar)? -> 2 x * Care este valoarea ini?ial? de x? -> 0 Care este valoarea final? a pertendido x? -> 2 Care este valoarea ini?ial? de y? -> 1, care pas de repetare h? -> 0.2
* ********************************* Tabelul 2a metoda Taylor pentru ********** * *********************** De parametri sunt prezentate, respectiv: x, y (x), ?i pentru h, ?i s? h / 2, ?i pentru h / 4; Eroare 1; Eroare 2; Motiv Tabelul 0. 0.2 0.4 0.6 0.8 1. 1.2 1.4 1.6 1.8 2. Final. = 1. 1.0408108 1.1735109 1.4333294 1.8964809 2.7182818 4.2206958 7.0993271 12.935817 25.533722 54.59815 1. 1.04 1.168128 1.4167056 1.8541843 2.6166249 3.9772699 6.5036318 11.42558 21.534934 43.483338 1. 1.040502 1.1718627 1.4284046 1.8839578 2.6878302 4.1464242 6.9133307 12.451365 24.211098 50.794026 1. 1.0407196 1.1730583 1.4319937 1.8930814 2.7099647 4.2002253 7.0474891 12.799052 25.154888 53.490859 0. 0.000502 0.0037347 0.0116989 0.0297735 0.0712052 0.1691543 0.4096990 1.0257847 2.6761647 7.3106883 0. 0.0002176 0.0011956 0.0035891 0.0091236 0.0221345 0.0538011 0.1341584 0.3476866 0.9437900 2.6968328 0. 2,3069436 3,1236791 3,259548 3,2633545 3,2169335 3,1440693 3,053845 2,9503143 2,8355509 2,7108422
Comparativ cu cifrele ob?inute prin metoda de Euler (de la clasa 1) (a se vedea mai jos) pute?i observa c? a existat o cre?tere a precizie de calcul, datorit? aplic?rii metodei de Taylor, pentru a 2a, deoarece nu a existat o reducere semnificativ? de eroare de analitice cu privire la valoare.
Metoda lui Euler: -> scipad () -> Care este func?ia (intr? atât de explicite) -> 2 * x * y Care este valoarea ini?ial? de x? -> 0 Care este valoarea ini?ial? de y? -> 1, care pas de repetare h? -> 0.2 Care este valoarea final? a pertendido x? -> 2 ie?ire = 0. 0.2 0.4 0.6 0.8 1. 1.2 1.4 1.6 1.8 2. 1. 1. 1,08 1,2528 1,553472 2,050583 2,8708163 4,2488081 6,6281406 10,870151 18,696659 1. 1,02 1,124448 1,3358442 1,7056059 2,3346334 3,4179032 5,340132 8,8859797 15,717521 29,498643 1. 1.0302757 1.1482993 1.3824406 1.7951229 2.5106623 3.7769489 6.1035986 10.582204 19.660012 39.092999 0. 0,02 0,044448 0,0830442 0,1521339 0,2840503 0,5470870 1,091324 2,2578391 4,8473703 10,801984 0. 0.0102757 0.0238513 0.0465964 0.0895170 0.1760290 0.3590457 0.7634665 1.6962242 3.9424907 9.5943562 0. 1,94633 1,8635484 1,7822037 1,699497 1,6136569 1,5237253 1,4294326 1,3310971 1,2295198 1,1258686