Chương 8: phương trình vi phân thường

Màu nền
Font chữ
Font size
Chiều cao dòng

1.    Chương trình tìm y = f(x) trong khoảng [0,10] thỏa mãn pt vi phân

2.    Dx/dt = 2t^3-3y+5yz, dy/dt = ty+2xzt, dz/dt = 3x^2-txz trong khoảng t[2,15] với x(2) = 1,5; y(2) = 2,34; z(2) = 3.33

3.    Vẽ đồ thị 3 hàm y,g,h trên cùng một hệ trục tọa độ bằng 3 màu đỏ,xanh biển,xanh lá- 22

4.    Dx/dt = 3t^3-2y+tyz, dy/dt = 2txy+5txz, dz/dt = -3tx^2 + xz trong khoảng t[1,10] với x(1) = -1,10; y(1) = 2,33; z(1) = 5.33

Hàm nội trú

Bài 1:dùng phương pháp Euler giải gần đúng bài toán Cauchy

Bài 2:pp Hiện ẩn hình thang tính gần đúng hàm chop bởi bài toán cauchy

Bài 3: pp Hiện ẩn trung điểm

Bài 4:pp Runge-Kutta

========================

A –       M – file

1.     Chương trình tìm y = f(x) trong khoảng [0,10] thỏa mãn pt vi phân

Y’’’’+2y’’’.y’.y-4y’’+3xy-6=0

Y’’’(0)=y’’(0)=1;y’(0)=y(0)=0,5

Vẽ đồ thị của y’’ đối với y và y’ dươi dạng đường cong 3d

function yp = f1(x, y)

    yp(1) = y(2);

    yp(2) = y(3);

    yp(3) = y(4);

    yp(4) = -2*y(4)*y(2)*y(1) + 4*y(3) - 3*x*y(1) + 6;

    yp = yp.';

end

function [x,y] = VIIIA1()

    Xspam = [0 10];

    y0 = [0.5 0.5 1 1];

    Opt = odeset('reltol', 1.e-4, 'abstol', [1.e-6 1.e-6 1.e-6 1.e-6]);

    [x,y] = ode45('f1', Xspam, y0, Opt);

    plot3(y(:,1), y(:,2), y(:,3));

    xlabel('Y-Axist');  ylabel('dY-Axist');  zlabel('d2Y-Axist');

end

2.     Dx/dt = 2t^3-3y+5yz, dy/dt = ty+2xzt, dz/dt = 3x^2-txz trong khoảng t[2,15] với    x(2) = 1,5; y(2) = 2,34; z(2) = 3.33

function yp =f2(t,y)

    yp(1) = 2*t^3 - 3*y(2) + 5*y(2)*y(3);

    yp(2) = t*y(2) + 2*y(1)*y(3)*t;

    yp(3) = 3*y(1)^2 - t*y(1)*y(3);

    yp = yp.';

end

function [x,y] = VIIIA2()

    clear;

    Xspan = [2 15];

    y0 = [1.5 2.34 3.33];

    Opt = odeset('reltol', 1.e-3, 'abstol', [1.e-6 1.e-6 1.e-6]);

    [x,y] = ode45('f2', Xspan, y0, Opt);

    plot3(y(:,1), y(:,2), y(:,3));

    xlabel('X-Axist');ylabel('Y-Axist'); zlabel('Z-Axist')

end

3.     Vẽ đồ thị 3 hàm y,g,h trên cùng một hệ trục tọa độ bằng 3 màu đỏ,xanh biển,xanh lá

function [x,y] = VIIIA3()

    clear;

    Xspam = [1 10];

    y0 = [3.0 2.0 1.0];

    Opt = odeset('reltol', 1.e-5, 'abstol', [1.e-8 1.e-8 1.e-8]);

    [x, y] = ode45('f3', Xspam, y0, Opt);

    plot(x, y(:,1),'r',x, y(:, 2), 'b', x,y(:,3), 'g');

    xlabel('X-Axist');

    ylabel('Y-Axist');

    legend('Ham y', 'Ham g', 'Ham h');

end

4.     Dx/dt = 3t^3-2y+tyz, dy/dt = 2txy+5txz, dz/dt = -3tx^2 + xz trong khoảng t[1,10] với x(1) = -1,10; y(1) = 2,33; z(1) = 5.33

function x = VIIIA5()

Xpan = [0 20];

y0 = [1 1.2 5];

Opt = odeset('reltol',1e-4,'abstol',[1e-6 1e-6 1e-6]);

[x,y] = ode45('F',Xpan,y0,Opt);

plot(x,y(:,1),'r',x,y(:,2),'b',x,y(:,3),'g');

xlabel('x_axis');

ylabel('y,g,h_axist');

legend('Ham Y','Ham G','Ham H');

grid on;

B – Hàm nội trú

Bài 1:dùng phương pháp Euler giải gần đúng bài toán Cauchy

>> h = 0.02;

>> x = [1:h:5];

>> n = length(x);

>> u(1) = 1;

>> for k=1:n-1

    u(k+1)=u(k)+h*F1(x(k),u(k));

end

 Bài 2:pp Hiện ẩn hình thang tính gần đúng hàm cho bởi bài toán cauchy

>> h = 0.05;

>> x = [0:h:2];

>> n = length(x);

>> u(1)=5;

>> for k=1:n-1

    u(k+1)=u(k)+h*F2(x(k),u(k));

    u(k+1)=u(k)+h/2*F2(F2(x(k),u(k)),F2(x(k+1),u(k+1)));

   end   

 Bài 3: pp Hiện ẩn trung điểm

>>h = 0.1;

>>x = [0:h:10];

>>n = length(x);

>>u(1)=2;

>>for k=1:n-1

    u(k+1) = u(k)+h/2*F3(x(k),u(k));

    u(k+1) = u(k)+h*F3(x(k)+h/2,u(k+1));

  end   

Bài 4:pp Runge-Kutta

>>h = 0.1;

>>x = [0:h:10];

>>n = length(x);

>>u(1)= 0;

>>for k=1:n-1

    k1 = h*F4(x(k),u(k));

    k2 = h*F4(x(k)+h/2,u(k)+k1/2);

    k3 = h*F4(x(k)+h/2,u(k)+k2/2);

    k4 = h*F4(x(k)+h,u(k)+k3);

    u(k+1) = u(k)+1/6*(k1+2*k2+2*k3+k4);

  end

- 24

Bạn đang đọc truyện trên: Truyen2U.Pro

#leez