Меню сайта
Форма входа
Главная » Статьи » MATLAB » Прикладное программирование

Решение дифференциальных уравнений
%Программа предназначена для решения дифференциальных уравнений любого
%порядка  , записанных в виде системы . В ходе выполнения программы 
%подьзователю предоставляется возможность ввести начальные значения для
% 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)]; 
 
 
Категория: Прикладное программирование | Добавил: nazgull (24.05.2012)
Просмотров: 1443 | Теги: ode45, дифференциальные уравнения в matlab, ode23, дифуры в матлабе, уравнения в матлаб, MatLAB, subplot | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки