Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AstronomieBiofizicaBiologieBotanicaCartiChimieCopii
Educatie civicaFabule ghicitoriFizicaGramaticaJocLiteratura romanaLogica
MatematicaPoeziiPsihologie psihiatrieSociologie


UTILIZAREA CALCULATOARELOR IN CALCULUL VARIATIONAL

Matematica



+ Font mai mare | - Font mai mic



UTILIZAREA CALCULATOARELOR IN CALCULUL VARIATIONAL



1. Sa se determine minimul expresiei

in multimea functiilor polinomiale de gradul 2 care se anuleaza in x = 0 si x = 1.

Functia de pornire yord1 = alfa * x * (1 - x).

Parametrul alfa se determina prin minimalizarea integralei date.

Solutia analitica de ord I este yord1anal = 5/18 * x * (1 - x).

5/18 = 0.2777777777777

Rezolvare.

Se intocmeste un program in limbajul MathCAD

Se fixeaza la 1 toti indicii

Se stabileste de cate ori se va calcula integrala

Se apreciaza limita inferioara a lui alfa, notata li

Se apreciaza limita superioara a lui alfa, notata ls

Lui i i se atribuie valorile 1, 2,,n

Se stabilesc valorile intermediare ale lui alfa

Se stabilesc valorile intermediare ale lui x

Se defineste functia y de variabila x si parametru alfa

Se calculeaza integrala de n ori, pentru cele n valori ale lui alfa

Se stabileste valoarea minima a integralei

Se afiseaza alaturat valorile integralelor si valorile corespunzatoare ale lui alfa

Rezulta ca valoarea minima a integralei se atinge in intervalul 0.26 - 0.3.

Se reia programul inlocuind li = .26 si ls = .3.

Se reia programul de atatea ori pana cand se obtine pentru alfa aproximatia dorita.

In cazul in care nu se cere afisarea rezultatelor intermediare, lui n i se poate da o valoare mare.

2. Sa se determine minimul expresiei

integrala de la 0 la 1, din

(y¢^2 - y^2 - 2 * x * y) dx,

in multimea functiilor polinomiale de gradul 2

care se anuleaza in x = 0 si x = 1.

Functia de pornire yord1 = alfa * x * (1 - x), unde

alfa se determina prin minimalizarea integralei date

Solutia exacta este y = sin(x)/sin(1) - x

Solutia analitica de ord I este yord1anal = 5/18 * x * (1 - x)

5/18 = 0.27777777777778

Se intocmeste un program in Matlab.

clc, % stergere fereastra de lucru

clear, % stergere variabile si functii

format compact, % afisare compacta a rezultatelor

format long    % format de afisare cu 15 cifre

xinit = [0 x2 1] % x2 se alege din domeniul tehnologic

yinit = [0 y2 0] % y2 se alege din domeniul tehnologic

x2 = .5; y2 = .2;    % valori aproximative

alfaaprox = y2/x2/(1 - x2) % valoare aproximativa a lui alfa

x = 0 : .0001 : 1;    % domeniul de integrare

xinit = 0, xfin = 1, pas = .0001

limi = alfaaprox - 1;    % limita inf. de variatie a lui alfa

lims = alfaaprox + 1;    % limita sup. de variatie a lui alfa

pas = (lims - limi)/20; % pasul

if limi <= 0,

limi = 10^(-10); % din consideratii tehnologice alfa > 0

end

while abs(lims - limi) > 10^(-10) % pana cand

alf = limi : pas : lims;   

% alf ia valorile intre limi si lims cu pasul pas

lim_de_var_ale_alfa = [limi,lims] % afiseaza limitele lui alf

0 for i = 1 : length(alf)    % length(alf) = lung. vect. alf

t1 = [1 0]; t2 = [-1 1]; % t1 = 1 * x + 0, t2 = -1 * x + 1

coef = alf(i) * conv(t1,t2); % coef. polin. y = alf * t1 * t2

deriv = polyder(coef); % derivata lui y

fint1 = conv(deriv,deriv); % yprim^2

fi1 = [0 0 fint1(1) fint1(2) fint1(3) ]; % coef. pol. yprim

fi2 = conv(coef,coef); % coef. pol. y^2

fint3 = 2 * conv([1 0], coef); % coef. lui 2 * x * y de grad 3

fi3 = [0 fint3(1) fint3(2) fint3(3) fint3(4)];% coef. lui 2 * x * y de grad 4

fpar = fi1 - fi2 - fi3; % expresia de sub integrala

vfpar = polyval(fpar,x); % calculul pol. in punctele x

intpar(i) = trapz(x,vfpar); % calculul integ. pentru alf(i)

end

[centru,rang] = min(intpar); % calculul valorii minime si rangul corespunzator

figure,

plot (alf,intpar), % grafic, intpar = intpar(alf)

title ('GRAFICUL INTEGRALEI FUNCTIE DE ALFA')

xlabel ('alfa'), ylabel ('Valoarea integralei') % precizarea etichetelor axelor

grid on    % trasarea unei retele pe grafic

se aleg noi limite de variatie ale lui alf in vecinatatea

valorii de minim aproximativ, in functie de rang

limi = (alf(rang - 1)); % se schimba limita inferioara

lims = (alf(rang + 1)); % se schimba limita superioara

pas = (lims - limi)/20; % se schimba pasul

alf = limi : pas : lims;    % se schimba interv. pentru alf

end

alfafinal = (limi + lims)/2

valoareaintegralei = intpar(length(intpar))

verificare

coef = alfafinal * conv(t1,t2);

xnod = [0 1/4 1/2 3/4 1];    % abscisele nodurilor

disp ('Valorile functiei yord1 si sin(x)/sin(1) - x') % afiseaza

[xnod; polyval(coef,xnod); sin(xnod)/sin(1) - xnod]

% afiseaza valorile nodurilor,

% valorile aproximative si valorile exacte

figure, plot(x,polyval(coef,x)), grid on,

hold on    % suprapune figurile

plot(x,sin(x)/sin(1) - x), grid on

title ('GRAFICUL SOLUTIEI EXACTE SI APROXIMATIVE')

xlabel('X'), ylabel('yexact. si yord1'), grid on

text(.06,.065, 'y = alfa * x * (1 - x)')

alfaaprox = 0.80000000000000

lim_de_var_ale_alfa = 0.00000000010000 1.80000000000000

lim_de_var_ale_alfa = 0.20000000010000 0.40000000010000

lim_de_var_ale_alfa = 0.27000000010000 0.29000000010000

lim_de_var_ale_alfa = 0.27700000010000 0.27900000010000

lim_de_var_ale_alfa = 0.27770000010000 0.27790000010000

lim_de_var_ale_alfa = 0.27777000010000 0.27779000010000

lim_de_var_ale_alfa = 0.27777700010000 0.27777900010000

lim_de_var_ale_alfa = 0.27777770010000 0.27777790010000

lim_de_var_ale_alfa = 0.27777776010000 0.27777778010000

lim_de_var_ale_alfa = 0.27777777110000 0.27777777310000

lim_de_var_ale_alfa = 0.27777777160000 0.27777777180000

alfafinal = 0.27777777171000

valoarea integralei = -0.02314814717078

Valorile functiei yord1 si sin(x)/sin(1) - x

ans =

Columns 1 through 5




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1289
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved