Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 09. 10. 2012 22:34

sanvop
Zelenáč
Příspěvky: 6
Pozice: student
Reputace:   
 

Numerický výpočet differenciální rovnice 3.řádu

Ahoj,

mám příklad:

http://forum.matweb.cz/upload3/img/2012-10/14523_1.jpg

Substituci provedu takto:

http://forum.matweb.cz/upload3/img/2012-10/14576_2.jpg

Nahradím derivace diferencemi takto:

http://forum.matweb.cz/upload3/img/2012-10/14628_3.jpg

Může mi někdo prosím poradit, jak spočítám tuto soustavu v MATLABu ? Chtěch bych demonstrovat grafy pro různě zvolené h.

Offline

 

#2 10. 10. 2012 13:44

Tomas.P
Příspěvky: 648
Reputace:   22 
 

Re: Numerický výpočet differenciální rovnice 3.řádu

↑ sanvop:
Řešil bych to takto:

Code:

>> clear all
>> h=0.5

h =

    0.5000

>> n=10

n =

    10

>> x(1)=0

x =

     0

>> y(1)=0

y =

     0

>> x(2)=0

x =

     0     0

>> y(2)=0

y =

     0     0

>> x(3)=0

x =

     0     0     0

>> y(3)=0

y =

     0     0     0
>> for i=1:n,
y(i+3)=y(i+2)+y(i+1)+y(i)+h*[y(i+2)-y(i+1)-y(i)+((y(i)+y(i+1)-y(i))^2)+x(i)];
x(i+3)=x(i+2)+x(i+1)+x(i)+h;
end;
>> [x' y']

ans =

         0         0
         0         0
         0         0
    0.5000         0
    1.0000         0
    2.0000         0
    4.0000    0.2500
    7.5000    0.8750
   14.0000    2.4688
   26.0000    6.6484
   48.0000   18.4419
   88.5000   61.3223
  163.0000  287.5803

>> plot(x,y)
>> grid on
>> xlabel('x')
>> ylabel('y')

http://forum.matweb.cz/upload3/img/2012-10/69182_Graf.jpg

Offline

 

#3 12. 10. 2012 14:53

sanvop
Zelenáč
Příspěvky: 6
Pozice: student
Reputace:   
 

Re: Numerický výpočet differenciální rovnice 3.řádu

Děkuji za odpověď.

je správné i toto řešení ?



clc
clear all

n=input('Zadej počet iterací n (vychozi hodnota 2000 (dej ENTER)): ');
if isempty(n)
    n = 2000;
end;
h=input('Zadej h (vychozi hodnota 0.001 (dej ENTER)): ');
if isempty(h)
    h = 0.001;
end;
%podminky
    y(1)=0;
    z(1)=0;
    t(1)=0;
    x(1)=0;
for n=1:n
   
    %rovnice
    t(n+1) = (t(n) + (y(n) + z(n))^2 + x(n)) * h + t(n);
    z(n+1) = t(n) * h + z(n);
    y(n+1) = z(n) * h + y(n);
    x(n+1) = x(n) + h;
   
end;

plot(x,y);
hold on
plot(x,y);
hold off
%xlim([0 2]);
%ylim([-2.5 2.5]);

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson