%Программа предназначена для решения дифференциальных уравнений любого %порядка , записанных в виде системы . В ходе выполнения программы %подьзователю предоставляется возможность ввести начальные значения для % y , 1 и 2 производной y , а также значения констант c b aph xx , % соответственно . % Уравнения для решения представленно в функции diff_3. % Решение производится методом Рунге-Кутта 2-3 порядка точности. clc; clear; warning off; global aph; global xx, global b; fprintf('Сейчас будет произведен ввод значений .'); fprintf(' Если хотите использовать значеня по умолчанию - нажмите ENTER после приглашения ко вводу.'); y0=input('\n Введите у(0) (по умолчанию 1):'); % ввод всего что было написано выше if isempty(y0) y0 = 1; end; y0p=input('\n Введите у*(0) (по умолчанию 2):'); if isempty(y0p) y0p = 2; end; y0pp=input('\n Введите у**(0) (по умолчанию 1:'); if isempty(y0pp) y0pp = 1; end; c=input('\n Введите с (по умолчанию 2):'); if isempty(c) c = 2; end; b=input('\n Введите константу b (по умолчанию 3): '); if isempty(b) b = 3; end; aph=input('\n Введите константу alpha (по умолчанию 2):'); if isempty(aph) aph = 2; end; xx=input('\n Введите константу хх (по умолчанию 1):'); if isempty(xx) xx = 1; end; [y,X]=ode23('diff_3',0,c,[y0 y0p y0pp]); % вычисление y' y'' y''' ... Q=cat(2,y,X); % склейка массива времени и массива значений % для красивого вывода
fprintf('\n T Y1 Y2 Y3 ','');%красивый вывод Q [sizearray,buf]=size(Q); clear buf; for i=1:sizearray , qq1(i)=Q(i,1); qq2(i)=Q(i,2); qq3(i)=Q(i,3); qq4(i)=Q(i,4); end;
SUBPLOT(3,1,1); plot(qq1,qq2,'b'); grid on;
SUBPLOT(3,1,2); plot(qq1,qq3,'g'); grid on;
SUBPLOT(3,1,3); plot(qq1,qq4,'r'); grid on;
function dxdy = diff_3(y,x); global aph; global xx; global b; dxdy=[x(3);x(2);b*exp(aph*xx)-9.*x(3)-1.65.*x(2)+x(1)];
|