Stránky: 1
Ahoj,
mám příklad:
Substituci provedu takto:
Nahradím derivace diferencemi takto:
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
↑ sanvop:
Řešil bych to takto:
>> 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')
Offline
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
Stránky: 1