Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

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