![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Теперь рассмотрим еще одну программу по той же задаче.Содержание книги
Поиск на нашем сайте
Для построения графика (рис.3.6.1) необходимо выбрать исходную величину-аргумент (будет отображаться по горизонтальной оси), диапазон и шаг ее изменения, а также величину-функцию, зависящую от аргумента (вертикальная ось). Построенный график покажет, как будет изменяться зависимая величина при изменении аргумента (при этом значения всех остальных исходных величин, которые были введены в окна ввода исходных величин будут оставаться неизменными) – рис. 3.6.2.Для построения трехмерного графика также надо выбрать необходимые данные. По умолчанию стоит ноль (0) в окошке ввода номера аргумента. Пока там ноль, программа будет строить двумерный график.
Рис.3.6.1. Ввод исходных данных и вычисление результатов.
Рис.3.6.2. Построение графиков (в данном случае открыт из файла). При нажатии на кнопку xa (T, t) открывается график (рис.3.6.3) зависимости концентрации реагента А от температуры и времени.
Рис.3.6.3. Кнопка xa (T, t) открывает график концентрации А(T, t). При нажатии на кнопку xb (T, t) открывается график (рис.3.6.4) зависимости концентрации реагента B от температуры и времени.
Рис.3.6.4. Кнопка xb (T, t) открывает график концентрации B (T, t). При нажатии на кнопку xc (T, t) открывается график (рис.3.6.5) зависимости концентрации реагента C от температуры и времени.
Рис.3.6.5. Кнопка xc (T, t) открывает график концентрации C (T, t). При нажатии на кнопку xd (T, t) открывается график (рис.3.6.6) зависимости концентрации реагента D от температуры и времени.
Рис.3.6.6. Кнопка xd (T, t) открывает график концентрации D (T, t). Если ввести в окошко возле кнопки Граф 1-12 число 1, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.7) зависимости концентраций всех пяти реагентов от времени при самой низкой температуре.
Рис.3.6.7. Концентрации от времени при самой низкой температуре. Если ввести в окошко возле кнопки Граф 1-12 число от 1 до 10, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.8) зависимости концентраций всех пяти реагентов от времени при температуре между самой низкой и самой высокой по правилу наименьшаяТ+номерГрафика*(наибольшаяТ-наименьшаяТ)/9.
Рис.3.6.8. Концентрации от времени при самой высокой температуре.
Если ввести в окошко возле кнопки Граф 1-12 число 11, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.9) зависимости концентраций всех пяти реагентов от времени при температуре оптимальной (с наибольшим выходом целевого продукта С) и в течение оптимального времени.
Рис.3.6.9. Концентрации от времени при оптимальных параметрах. Если ввести в окошко возле кнопки Граф 1-12 число 12, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.10) зависимости концентраций целевого продукта С от времени при десяти разных температурах от наименьшей до наибольшей
Рис.3.6.10. Концентрации С от времени при разных температурах. Функция VvodIshodnDannih описанная ниже, обеспечивает считывание значений исходных данных из соответствующих «окон» ввода в интерфейсе, показанном выше на рис.3.6.1, тэги окон ввода (элементов типа EditText) – это edit1, …, edit16. %Программа расчета максимального выхода продукта C в%изотермическом периодическом реакторе со стехиометрической схемой%реакций A - B (k1); A - D (k2); A - D (k3); B - C (k4); C - D (k5); function VvodIshodnDannih(hObject, eventdata, handles) global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; %Концентрация реагента А в долях в реакции A-P-S (мольные доли) xa0=str2double(get(handles.edit1,'String')); %Базоваятемпература (С) TR=str2double(get(handles.edit9,'String')); %Константы скоростей реакций %а) Первая реакция - k1: %a.1) предэкспоненциальныймножитель (c^(-1)) A1=str2double(get(handles.edit2,'String')); %a.2) экспоненциальныймножитель (С) E1=str2double(get(handles.edit10,'String')); %b) Вторая реакция - k2: %b.1) предэкспоненциальный множитель (c^(-1)) A2=str2double(get(handles.edit3,'String')); %b.2) экспоненциальныймножитель (С) E2=str2double(get(handles.edit11,'String')); %с) Третья реакция - k3: %с.1) предэкспоненциальный множитель (c^(-1)) A3=str2double(get(handles.edit4,'String')); %с.2) экспоненциальныймножитель (С) E3=str2double(get(handles.edit12,'String')); %d) Четвертая реакция - k4: %d.1) предэкспоненциальный множитель (c^(-1)) A4=str2double(get(handles.edit5,'String')); %d.2) экспоненциальныймножитель (С) E4=str2double(get(handles.edit13,'String')); %e) Пятая реакция - k5: %e.1) предэкспоненциальный множитель (c^(-1)) A5=str2double(get(handles.edit6,'String')); %e.2) экспоненциальныймножитель (С) E5=str2double(get(handles.edit14,'String')); %Нижняя граница изменения температуры в реакторе (C) T_a=str2double(get(handles.edit7,'String')); %Верхняя граница изменения температуры в реакторе (C) T_b=str2double(get(handles.edit15,'String'));
%Левая граница изменения времени пребывания в реакторе (с) t_a=str2double(get(handles.edit8,'String')); %Правая граница изменения времени пребывания в реакторе (с) t_b=str2double(get(handles.edit16,'String')); end ФункцияVivodArgumentovNaEkran_model1_stat_tau, описанная ниже, обеспечивает вывод на экран, переменные выводятся в окна с тэгамиedit1, …, edit16, то есть те же самые, которые служат для ввода исходной информации, и в соответствии с пояснениями (названиями вводимых параметров), написанными на панели интерфейса (рис.3.6.1) рядом с окнами ввода исходных значений. function VivodArgumentovNaEkran(hObject, eventdata, handles) global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; %vivod argumentov na ekran %Концентрация реагента А в долях в реакции A-P-S (мольные доли) S=sprintf('%g',xa0); set(handles.edit1,'String',S); %Базовая температура (С) S=sprintf('%g',TR); set(handles.edit9,'String',S); %Константы скоростей реакций %а) Первая реакция - k1: %a.1) предэкспоненциальный множитель (c^(-1)) S=sprintf('%g',A1); set(handles.edit2,'String',S); %a.2) экспоненциальный множитель (С) S=sprintf('%g',E1); set(handles.edit10,'String',S); %b) Вторая реакция - k2: %b.1) предэкспоненциальный множитель (c^(-1)) S=sprintf('%g',A2); set(handles.edit3,'String',S); %b.2) экспоненциальный множитель (С) S=sprintf('%g',E2); set(handles.edit11,'String',S); %с) Третья реакция - k3: %с.1) предэкспоненциальный множитель (c^(-1)) S=sprintf('%g',A3); set(handles.edit4,'String',S); %с.2) экспоненциальный множитель (С) S=sprintf('%g',E3); set(handles.edit12,'String',S); %d) Четвертая реакция - k4: %d.1) предэкспоненциальный множитель (c^(-1)) S=sprintf('%g',A4); set(handles.edit5,'String',S); %d.2) экспоненциальный множитель (С) S=sprintf('%g',E4); set(handles.edit13,'String',S); %e) Пятая реакция - k5: %e.1) предэкспоненциальный множитель (c^(-1)) S=sprintf('%g',A5); set(handles.edit6,'String',S); %e.2) экспоненциальный множитель (С) S=sprintf('%g',E5); set(handles.edit14,'String',S); %Нижняя граница изменения температуры в реакторе (C) S=sprintf('%g',T_a); set(handles.edit7,'String',S); %Верхняя граница изменения температуры в реакторе (C) S=sprintf('%g',T_b); set(handles.edit15,'String',S); %Левая граница изменения времени пребывания в реакторе (с) S=sprintf('%g',t_a); set(handles.edit8,'String',S); %Правая граница изменения времени пребывания в реакторе (с) S=sprintf('%g',t_b); set(handles.edit16,'String',S); end ФункцияVivodResultNaEkran_model1_stat_tau выводит результаты вычислений в окна вывода на панели «Результаты вычислений» (рис.3.6.1) с тэгамиedit17, …,edit25, то есть пронумерованными подряд. Вывод происходит в окна в соответствии с подписями рядом с ними (рис.3.6.1) с названиями выводимых расчетных параметров (результатов вычислений). function VivodResultNaEkran(hObject, eventdata, handles) global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; %vivod resultatov na ekran %Оптимальные значения режимных параметров реактора S=sprintf('%g',T_opt); set(handles.edit17,'String',S); S=sprintf('%g',t_opt); set(handles.edit18,'String',S); S=sprintf('%g',phi_p_max); set(handles.edit19,'String',S); %Выходные концентрации после максимального времени S=sprintf('%g',xa_last); set(handles.edit22,'String',S); S=sprintf('%g',xb_last); set(handles.edit23,'String',S); S=sprintf('%g',xc_last); set(handles.edit24,'String',S); S=sprintf('%g',xd_last); set(handles.edit25,'String',S); end
function dy = difpravreactor(t,y) global k1 k2 k3 k4 k5; dy=zeros(4,1); dy(1)=-(k1+k2+k3)*y(1); dy(2)=k1*y(1)-k4*y(2); dy(3)=k4*y(2)-k5*y(3); dy(4)=(k2+k3)*y(1)+k5*y(3); end Функцияpushbutton18_Callback вызывается при нажатии на кнопку «xa (T, t)»с тэгомpushbutton18, открывается график (рис.3.6.3) зависимости концентрации реагента А от температуры и времени. function pushbutton18_Callback(hObject, eventdata, handles) global Mas_xa_T_t Arg_Mas_xa_T_t; xl=Arg_Mas_xa_T_t(1); xr=Arg_Mas_xa_T_t(2); yl=Arg_Mas_xa_T_t(3); yr=Arg_Mas_xa_T_t(4); hx=Arg_Mas_xa_T_t(5); hy=Arg_Mas_xa_T_t(6); [x,y]=meshgrid(xl:hx:xr,yl:hy:yr); meshc(x,y,Mas_xa_T_t); xlabel('T (C)'); ylabel('t (сек)'); zlabel('xa (мольн.доли)'); title('Зависимость концентрации А от температуры и времени'); end Функцияpushbutton19_Callback вызывается при нажатии на кнопку «xb (T, t)»с тэгомpushbutton19, открывается график (рис.3.6.4) зависимости концентрации реагента B от температуры и времени.
function pushbutton19_Callback(hObject, eventdata, handles) global Mas_xb_T_t Arg_Mas_xb_T_t; xl=Arg_Mas_xb_T_t(1); xr=Arg_Mas_xb_T_t(2); yl=Arg_Mas_xb_T_t(3); yr=Arg_Mas_xb_T_t(4); hx=Arg_Mas_xb_T_t(5); hy=Arg_Mas_xb_T_t(6); [x,y]=meshgrid(xl:hx:xr,yl:hy:yr); meshc(x,y,Mas_xb_T_t); xlabel('T (C)'); ylabel('t (сек)'); zlabel('xb (мольн.доли)'); title('Зависимость концентрации B от температуры и времени'); end Функцияpushbutton20_Callback вызывается при нажатии на кнопку «xc (T, t)»с тэгомpushbutton20, открывается график (рис.3.6.5) зависимости концентрации реагента C от температуры и времени. function pushbutton20_Callback(hObject, eventdata, handles) global Mas_xc_T_t Arg_Mas_xc_T_t; xl=Arg_Mas_xc_T_t(1); xr=Arg_Mas_xc_T_t(2); yl=Arg_Mas_xc_T_t(3); yr=Arg_Mas_xc_T_t(4); hx=Arg_Mas_xc_T_t(5); hy=Arg_Mas_xc_T_t(6); [x,y]=meshgrid(xl:hx:xr,yl:hy:yr); meshc(x,y,Mas_xc_T_t); xlabel('T (C)'); ylabel('t (сек)'); zlabel('xс (мольн.доли)'); title('Зависимость концентрации C от температуры и времени'); end Функцияpushbutton21_Callback вызывается при нажатии на кнопку «xd (T, t)»с тэгомpushbutton21, открывается график (рис.3.6.6) зависимости концентрации реагента D от температуры и времени. function pushbutton21_Callback(hObject, eventdata, handles) global Mas_xd_T_t Arg_Mas_xd_T_t; xl=Arg_Mas_xd_T_t(1); xr=Arg_Mas_xd_T_t(2); yl=Arg_Mas_xd_T_t(3); yr=Arg_Mas_xd_T_t(4); hx=Arg_Mas_xd_T_t(5); hy=Arg_Mas_xd_T_t(6); [x,y]=meshgrid(xl:hx:xr,yl:hy:yr); meshc(x,y,Mas_xd_T_t); xlabel('T (C)'); ylabel('t (сек)'); zlabel('xd (мольн.доли)'); title('Зависимость концентрации D от температуры и времени'); end Функцияpushbutton22_Callbackвызываетсянажатиемкнопки «Граф 1-12» стэгомpushbutton22, она считывет номер графика из окна стэгомedit26 рядом с кнопкой«Граф 1-12». Затемфункцияpushbutton22_Callback действует в зависимости от введенного в окно рядом с кнопкой значения. Если ввести в окошко возле кнопки Граф 1-12 число 1, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.7) зависимости концентраций всех пяти реагентов от времени при самой низкой температуре. Если ввести в окошко возле кнопки Граф 1-12 число от 1 до 10, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.8) зависимости концентраций всех пяти реагентов от времени при температуре между самой низкой и самой высокой по правилу наименьшаяТ+номерГрафика*(наибольшаяТ-наименьшаяТ)/9. Если ввести в окошко возле кнопки Граф 1-12 число 11, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.9) зависимости концентраций всех пяти реагентов от времени при температуре оптимальной (с наибольшим выходом целевого продукта С) и в течение оптимального времени. Если ввести в окошко возле кнопки Граф 1-12 число 12, то, если после этого нажать кнопку Граф 1-12, построится график (рис.3.6.10) зависимости концентраций целевого продукта С от времени при десяти разных температурах от наименьшей до наибольшей.
functionpushbutton22_Callback(hObject, eventdata, handles) global xa0 t_a t_b T_a T_b TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 k1 k2 k3 k4 k5; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global Mas_xa_T_t Arg_Mas_xa_T_t; global Mas_xb_T_t Arg_Mas_xb_T_t; global Mas_xc_T_t Arg_Mas_xc_T_t; global Mas_xd_T_t Arg_Mas_xd_T_t; global Mas_Graf_11 n_11; nGraf=str2double(get(handles.edit26,'String')); xl=Arg_Mas_xd_T_t(1); xr=Arg_Mas_xd_T_t(2); yl=Arg_Mas_xd_T_t(3); yr=Arg_Mas_xd_T_t(4); hx=Arg_Mas_xd_T_t(5); hy=Arg_Mas_xd_T_t(6); nx=round((xr-xl)/hx); ny=round((yr-yl)/hy); for j=1:nx+1 for i=1:ny+1 MGraf(i,1)=Mas_xa_T_t(i,j); MGraf(i,2)=Mas_xb_T_t(i,j); MGraf(i,3)=Mas_xc_T_t(i,j); MGraf(i,4)=Mas_xd_T_t(i,j); end%for i MasGraf(:,:,j)=MGraf; end%for j if nGraf<11 MGraf=MasGraf(:,:,nGraf); t=[yl:hy:yr]; t=t'; xa=MGraf(:,1); xb=MGraf(:,2); xc=MGraf(:,3); xd=MGraf(:,4); plot(t,xa,'-',t,xb,'-.',t,xc,'--',t,xd,'.'); title('концентрации --А, -.-.B, - -С,....D'); xlabel('t (сек)'); ylabel('концентрации мольн.доли.'); grid on; end%if if nGraf==11 t=Mas_Graf_11(:,1); xa=Mas_Graf_11(:,2); xb=Mas_Graf_11(:,3); xc=Mas_Graf_11(:,4); xd=Mas_Graf_11(:,5); plot(t,xa,'-',t,xb,'-.',t,xc,'--',t,xd,'.'); title('концентрации при T opt, t opt --А, -.-.B, - -С,....D'); xlabel('t (сек)'); ylabel('концентрации мольн.доли.'); grid on; end%if nGraf==11 if nGraf==12 t=[yl:hy:yr]; t=t'; ii=0; for j=1:nx+1 ii=ii+1; for i=1:ny+1 xc_T_t(i)=Mas_xc_T_t(i,j); end%for i switch ii case 1 ssr='-*'; case 2 ssr='-+'; case 3 ssr='-o'; case 4 ssr='-v'; case 5 ssr='-'; case 6 ssr='-.'; case 7 ssr='--'; case 8 ssr='--.'; case 9 ssr='.'; case 10 ssr='-'; otherwise ssr='--'; end%switch if j==1 else hold on; end%if plot(t,xc_T_t,ssr); title('Выход целевого продукта С при разных температурах T1-* T2-+ T3-o T4-v T5- T6-. T7-- T8--. T9. T10-'); xlabel('t (сек)'); ylabel('Выход С (мол.дол.) в периодическом реакторе'); grid on; end% for j end%if nGraf==12 VivodArgumentovNaEkran(hObject, eventdata, handles); VivodResultNaEkran(hObject, eventdata, handles); end Функцияmodel_nGraf вызывается (другой функциейReshitZadachu) для формирования данных для графика концентраций реагентов от времени при заданной температуре и продолжительности реакции. Функцияmodel_nGrafне считывает данных из графического интерфейса и не выводит данных в интерфейс. Вызов функцииmodel_nGraf осуществляется в процессе подготовки данных для графика группы концентраций при оптимальной тмпературе и времени. Они выводятся описанной выше функциейpushbutton22_Callback, если ввести в окошко возле кнопки Граф 1-12 число 12 и после этого нажать кнопку Граф 1-12, то построится график (рис.3.6.10) зависимости концентраций целевого продукта С от времени при десяти разных температурах от наименьшей до наибольшей. function [Mas_Graf,n]=model_nGraf(T,t_b) global xa0 t_a TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 k1 k2 k3 k4 k5; k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); [t,y]=ode45(@difpravreactor,[t_a t_b],[xa0 0 0 0]); n=length(t); for i=1:n for j=1:5 if j==1 Mas_Graf(i,j)=t(i); else Mas_Graf(i,j)=y(i,j-1); end%if end%for j end%for i end Функцияmodel_Concentr вызывается (другой функциейReshitZadachu) для формирования данных для графика концентраций реагентов от времени при заданной температуре и продолжительности реакции. Функцияmodel_Concentr не считывает данных из графического интерфейса и не выводит данных в интерфейс. Вызов функцииmodel_Concentr осуществляется в процессе подготовки данных о концентрациях компонентов в зависимости от температуры и продолжительности реакции. Эти данные впоследствии, независимо от функцииReshitZadachu, выводятся описанными выше функциямиpushbutton18_Callback, …,pushbutton21_Callbackпри нажатии на кнопки«xa (T, t)», …, «xd (T, t)».
function [VectorConcentr]=model_Concentr(t0b,x0a,x0b,x0c,x0d,t0a) global k1 k2 k3 k4 k5; [t,y]=ode45(@difpravreactor,[t0a t0b],[x0a x0b x0c x0d]); n=length(t); xa=y(n,1); xb=y(n,2); xc=y(n,3); xd=y(n,4); VectorConcentr=[xa,xb,xc,xd]; end ФункцияReshitZadachu имеет центральное (наиглавнейшее) значение в ходе решения поставленной задачи (об отыскании результатов исходя из известных начальных данных). ФункцияReshitZadachu получает в качестве аргумента функции векторVectorArg который содержит все основные исходные данные, последовательно расположенные как элементы вектора. ФункцияReshitZadachu возвращает (ее возвращаемым значением является) вектор результатовVectorRes, который содержит вычисляемые результаты, которые в дальнейшем другими функциями будут выводиться в качестве результатов в окнах интерфейса и сохраняться в файл (ниже будет описано). Кроме того, функцияReshitZadachu вызывает описанную выше функцию model_Concentr и описанную выше функциюmodel_nGraf. Вызов функцииmodel_Concentr осуществляется в процессе подготовки данных о концентрациях компонентов в зависимости от температуры и продолжительности реакции. Эти данные впоследствии, независимо от функцииReshitZadachu, выводятся описанными выше функциямиpushbutton18_Callback, …,pushbutton21_Callbackпри нажатии на кнопки«xa (T, t)», …, «xd (T, t)». Вызов функцииmodel_nGraf осуществляется в процессе подготовки данных для графика группы концентраций при оптимальной тмпературе и времени. Они выводятся описанной выше функциейpushbutton22_Callback, если ввести в окошко возле кнопки Граф 1-12 число 12 и после этого нажать кнопку Граф 1-12, то построится график (рис.3.6.10) зависимости концентраций целевого продукта С от времени при десяти разных температурах от наименьшей до наибольшей. Также функцияReshitZadachu находит данные о концентрациицелевого продукта С от времени и температуры и находит оптимальные параметры. function [VectorRes]=ReshitZadachu(VectorArg) %Программа расчета максимального выхода продукта C в%изотермическом периодическом реакторе со стехиометрической схемой%реакций A - B (k1); A - D (k2); A - D (k3); B - C (k4); C - D (k5); global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global Mas_xa_T_t Arg_Mas_xa_T_t; global Mas_xb_T_t Arg_Mas_xb_T_t; global Mas_xc_T_t Arg_Mas_xc_T_t; global Mas_xd_T_t Arg_Mas_xd_T_t; global Mas_Graf_11 n_11; global k1 k2 k3 k4 k5; xa0=VectorArg(1); TR=VectorArg(2); A1=VectorArg(3); E1=VectorArg(4);A2=VectorArg(5); E2=VectorArg(6); A3=VectorArg(7); E3=VectorArg(8); A4=VectorArg(9); E4=VectorArg(10); A5=VectorArg(11); E5=VectorArg(12); T_a=VectorArg(13); T_b=VectorArg(14); t_a=VectorArg(15); t_b=VectorArg(16); disp('podgotovka dannih dlya 3D grafikov koncentracij pri zadannih temperaturah'); %podgotovka dannih dlya 3D grafikov koncentracij pri zadannih temperaturah xl=T_a; xr=T_b; yl=t_a; yr=t_b; hx=(xr-xl)/9; hy=(yr-yl)/99; Arg_Mas_xa_T_t=[T_a,T_b,t_a,t_b,hx,hy]; Arg_Mas_xb_T_t=[T_a,T_b,t_a,t_b,hx,hy]; Arg_Mas_xc_T_t=[T_a,T_b,t_a,t_b,hx,hy]; Arg_Mas_xd_T_t=[T_a,T_b,t_a,t_b,hx,hy]; for i=1:10 if i==1 x(i)=xl; else x(i)=x(i-1)+hx; end%if T=x(i); k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); for j=1:100 if j==1 y(j)=yl; t0a=yl; t0b=yl; x0a=xa0; x0b=0; x0c=0; x0d=0; VectorConcentr=[xa0,0,0,0]; else y(j)=y(j-1)+hy; t0b=y(j); [VectorConcentr]=model_Concentr(t0b,x0a,x0b,x0c,x0d,t0a); end%if Mas_xa_T_t(j,i)=VectorConcentr(1); Mas_xb_T_t(j,i)=VectorConcentr(2); Mas_xc_T_t(j,i)=VectorConcentr(3); Mas_xd_T_t(j,i)=VectorConcentr(4); t0a=t0b; x0a=VectorConcentr(1); x0b=VectorConcentr(2); x0c=VectorConcentr(3); x0d=VectorConcentr(4); end% for j end%for i %%%%%%%%%%%%%%%%%% disp('poisk maximuma koncentracii C'); %poisk maximuma koncentracii C xmax=T_a; ymax=t_a; MaxC=Mas_xc_T_t(1,1); for i=1:10 for j=1:100 MasXc(j,i)=Mas_xc_T_t(j,i); if MaxC<MasXc(j,i) MaxC=MasXc(j,i); xmax=x(i); ymax=y(j); end%if end%for j end%for i disp('utochnenije maximuma'); %utochnenije maximuma hx=(T_b-T_a)/9; hy=(t_b-t_a)/99; xl=xmax-hx xr=xmax+hx yl=ymax-hy yr=ymax+hy MaxC hx=(xr-xl)/99; hy=(yr-yl)/9; for i=1:100 if i==1 x(i)=xl; else x(i)=x(i-1)+hx; end%if T=x(i); k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); for j=1:10 if j==1 y(j)=yl; t0a=t_a; t0b=yl; x0a=xa0; x0b=0; x0c=0; x0d=0; else y(j)=y(j-1)+hy; t0b=y(j); end%if if y(j)==t_a VectorConcentr=[xa0,0,0,0]; else [VectorConcentr]=model_Concentr(t0b,x0a,x0b,x0c,x0d,t0a); end%if MasXa(j,i)=VectorConcentr(1); MasXb(j,i)=VectorConcentr(2); MasXXc(j,i)=VectorConcentr(3); MasXd(j,i)=VectorConcentr(4); t0a=t0b; x0a=VectorConcentr(1); x0b=VectorConcentr(2); x0c=VectorConcentr(3); x0d=VectorConcentr(4); end%for j end%for i %%%%%%%%%%%% xmax=xl; ymax=yl; MasXXc MaxC=MasXXc(1,1); for i=1:100 for j=1:10 if MaxC<MasXXc(j,i) MaxC=MasXXc(j,i); xmax=x(i); ymax=y(j); end%if end%for j end%for i T_opt=xmax; t_opt=ymax; MaxC %%%%%%%%%%%%%%%% disp('podgotovka dannih dlya grafika gruppi koncentracij pri optimalnoj temperature i vremeni'); %podgotovka dannih dlya grafika gruppi koncentracij pri optimalnoj temperature i vremeni [Mas_Graf_11,n_11]=model_nGraf(T_opt, t_opt); Mas_Graf_11 n_11 disp('vihodnije koncentracij pri optimalnoj temperature i vremeni'); %vihodnije koncentracij pri optimalnoj temperature i vremeni T=T_opt; k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); [VectorConcentr]=model_Concentr(t_opt,xa0,0,0,0,t_a); xa_last=VectorConcentr(1); xb_last=VectorConcentr(2); xc_last=VectorConcentr(3); xd_last=VectorConcentr(4); phi_p_max=xc_last/xa0; %%%%%%%%%%%%%%%%%% VectorRes=[T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last]; end ФункцияReshitZadachuG аналогична описанной выше функции ReshitZadachu, однаков отличие от нее предназначена для многократного вызова при расчете точек, например, для трехмерного графика. function [VectorRes]=ReshitZadachuG(VectorArg) %Программа расчета максимального выхода продукта C в%изотермическом периодическом реакторе со стехиометрической схемой%реакций A - B (k1); A - D (k2); A - D (k3); B - C (k4); C - D (k5); global k1 k2 k3 k4 k5; xa0=VectorArg(1); TR=VectorArg(2); A1=VectorArg(3); E1=VectorArg(4); A2=VectorArg(5); E2=VectorArg(6); A3=VectorArg(7); E3=VectorArg(8); A4=VectorArg(9); E4=VectorArg(10); A5=VectorArg(11); E5=VectorArg(12); T_a=VectorArg(13); T_b=VectorArg(14); t_a=VectorArg(15); t_b=VectorArg(16); disp('podgotovka dannih dlya 3D grafikov koncentracij pri zadannih temperaturah'); %podgotovka dannih dlya 3D grafikov koncentracij pri zadannih temperaturah xl=T_a; xr=T_b; yl=t_a; yr=t_b; hx=(xr-xl)/9; hy=(yr-yl)/99; for i=1:10 if i==1 x(i)=xl; else x(i)=x(i-1)+hx; end%if T=x(i); k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); for j=1:100 if j==1 y(j)=yl; t0a=yl; t0b=yl; x0a=xa0; x0b=0; x0c=0; x0d=0; VectorConcentr=[xa0,0,0,0]; else y(j)=y(j-1)+hy; t0b=y(j); [VectorConcentr]=model_Concentr(t0b,x0a,x0b,x0c,x0d,t0a); end%if MasxaTt(j,i)=VectorConcentr(1); MasxbTt(j,i)=VectorConcentr(2); MasxcTt(j,i)=VectorConcentr(3); MasxdTt(j,i)=VectorConcentr(4); t0a=t0b; x0a=VectorConcentr(1); x0b=VectorConcentr(2); x0c=VectorConcentr(3); x0d=VectorConcentr(4); end% for j end%for i %%%%%%%%%%%%%%%%%% disp('poisk maximuma koncentracii C'); %poisk maximuma koncentracii C xmax=T_a; ymax=t_a; MaxC=MasxcTt(1,1); for i=1:10 for j=1:100 MasXc(j,i)=MasxcTt(j,i); if MaxC<MasXc(j,i) MaxC=MasXc(j,i); xmax=x(i); ymax=y(j); end%if end%for j end%for i disp('utochnenije maximuma'); %utochnenije maximuma hx=(T_b-T_a)/9; hy=(t_b-t_a)/99; xl=xmax-hx; xr=xmax+hx; yl=ymax-hy; yr=ymax+hy; hx=(xr-xl)/99; hy=(yr-yl)/9; for i=1:100 if i==1 x(i)=xl; else x(i)=x(i-1)+hx; end%if T=x(i); k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); for j=1:10 if j==1 y(j)=yl; t0a=t_a; t0b=yl; x0a=xa0; x0b=0; x0c=0; x0d=0; else y(j)=y(j-1)+hy; t0b=y(j); end%if if y(j)==t_a VectorConcentr=[xa0,0,0,0]; else [VectorConcentr]=model_Concentr(t0b,x0a,x0b,x0c,x0d,t0a); end%if MasXa(j,i)=VectorConcentr(1); MasXb(j,i)=VectorConcentr(2); MasXXc(j,i)=VectorConcentr(3); MasXd(j,i)=VectorConcentr(4); t0a=t0b; x0a=VectorConcentr(1); x0b=VectorConcentr(2); x0c=VectorConcentr(3); x0d=VectorConcentr(4); end%for j end%for i %%%%%%%%%%%% xmax=xl; ymax=yl; MaxC=MasXXc(1,1); for i=1:100 for j=1:10 if MaxC<MasXXc(j,i) MaxC=MasXXc(j,i); xmax=x(i); ymax=y(j); end%if end%for j end%for i Topt=xmax; topt=ymax; %%%%%%%%%%%%%%%% disp('podgotovka dannih dlya grafika gruppi koncentracij pri optimalnoj temperature i vremeni'); %podgotovka dannih dlya grafika gruppi koncentracij pri optimalnoj temperature i vremeni disp('vihodnije koncentracij pri optimalnoj temperature i vremeni'); %vihodnije koncentracij pri optimalnoj temperature i vremeni T=Topt; k1=A1*exp(-E1*(1/T-1/TR)); k2=A2*exp(-E2*(1/T-1/TR)); k3=A3*exp(-E3*(1/T-1/TR)); k4=A4*exp(-E4*(1/T-1/TR)); k5=A5*exp(-E5*(1/T-1/TR)); [VectorConcentr]=model_Concentr(topt,xa0,0,0,0,t_a); xalast=VectorConcentr(1); xblast=VectorConcentr(2); xclast=VectorConcentr(3); xdlast=VectorConcentr(4); phipmax=xclast/xa0; %%%%%%%%%%%%%%%%%% VectorRes=[Topt topt phipmax xalast xblast xclast xdlast] end ФункцияPostrGraficстроитграфик, онаиспользуетимя (порядковыйномерподписанныйусоответствующегоокнавинтерфейсе) NameArgаргумента (отображаемогопогоризонтальнойоси), используетимя (порядковыйномерподписанныйусоответствующегоокнавинтерфейсе) NameVarзависимой переменной (отображаемойповертикальнойоси), шкалу по горизонтальной оси отзначенияLeftNameVar до значенияRightNameVar с шагомStepGr (шаг отображается в разметке горизонтальной оси и в шаге между точками графика). Кроме того, функция подготавливает подписи к горизонтальной оси и к вертикальной оси и размещает их в соответствующих двух массивах. В каждом из массивов подписи из одинакового количества символов, включая пробелы. Последняя подпись в каждом массиве на один символ длиннее. Затем функция подготавливает подпись к горизонтальной оси, учитывая, что длина подписи принимается тринадцать символов (последняя подпись в массиве делается на один знак длиннее). Функция выбирает подпись - элемент массива с номером NameArg. Также функция PostrGrafic подготавливает подпись к вертикальной оси, учитывая, что длина подписи принимается семнадцать символов (последняя подпись в массиве делается на один знак длиннее).Функция выбирает подпись - элемент массива с номером NameVar. Затем функция PostrGrafic подписывает оси подготовленными для этого подписями. КаквидноизтекстаArray_3D=0; zLlabel=0; NumberSteps_3D=0; LeftNameArg_3D=0; StepGr_3D=0; RightNameArg_3D=0;функция PostrGrafic присваивает значения равные нулю переменным, связанным с построением трехмерного графика. Это обеспечивает согласованную работу с некоторыми другими функциями (будут описаны ниже). function PostrGrafic(hObject, eventdata, handles) global NameVar LeftNameVar RightNameVar NameArg StepGr LeftNameArg_3D StepGr_3D RightNameArg_3D NameArg_3D; global k1Array v1Array Array_3D xLlabel yLlabel zLlabel NumberSteps NumberSteps_3D; global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global k1 k2 k3 k4 k5; VectorArg=[xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b]; VectorArg(NameArg)=LeftNameVar; k1Array(1)=LeftNameVar; [VectorRes]=ReshitZadachuG(VectorArg); v1Array(1)=VectorRes(NameVar); for i=2:NumberSteps+1 k1Array(i)=k1Array(i-1)+StepGr; VectorArg(NameArg)=k1Array(i); [VectorRes]=ReshitZadachuG(VectorArg); v1Array(i)=VectorRes(NameVar); end plot(k1Array,v1Array,'o-'); set(gca,'XGrid','on'); set(gca,'YGrid','on'); %podpisi k osyam TextVectorArg=[' xa0(мол.д.) ',' TR(C) ',' A1(1/сек) ',' E1(С) ',' A2(1/сек) ',' E2(С) ',' A3(1/сек) ',' E3(С) ',' A4(1/сек) ',' E4(С) ',' A5(1/сек) ',' E5(С) ',' T a(С) ',' T b(С) ',' t a(сек) ',' t b(сек) ']; TextVectorRes=[' T opt(C) ',' t opt(сек) ',' phi p max ',' xa last(мол.д.) ',' xb last(мол.д.) ',' xc last(мол.д.) ',' xd last(мол.д.) ']; xLlabel=' '; for i=((NameArg-1)*13+1):(NameArg*13+1) xLlabel=strcat(xLlabel,TextVectorArg(i)); end yLlabel=' '; for i=((NameVar-1)*17+1):(NameVar*17+1) yLlabel=strcat(yLlabel,TextVectorRes(i)); end xlabel(xLlabel); ylabel(yLlabel); Array_3D=0; zLlabel=0; NumberSteps_3D=0; LeftNameArg_3D=0; StepGr_3D=0; RightNameArg_3D=0; end ФункцияPostrGrafic_3Dстроиттрехмерныйграфик. Функция использует для третьей оси (второй оси в горизонтальной плоскости) значение NameArg_3Dкак имя (номер указанный в подписях к элементам интерфейса) переменной по третьей оси (второй аргумент при построении графика зависимости от двух аргументов), шкалу по третьей оси от LeftNameArg_3D доRightNameArg_3D с шагом StepGr_3D. В конце работы функция присваиваетv1Array=0; для совместимости с некоторыми другими функциями (будут описаны ниже) function PostrGrafic_3D(hObject, eventdata, handles) global NameVar LeftNameVar RightNameVar NameArg StepGr LeftNameArg_3D StepGr_3D RightNameArg_3D NameArg_3D; global k1Array v1Array Array_3D xLlabel yLlabel zLlabel NumberSteps NumberSteps_3D; global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global k1 k2 k3 k4 k5; VectorArg=[xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b]; for i=1:NumberSteps+1 if i==1 k1Array(i)=LeftNameVar; else k1Array(i)=k1Array(i-1)+StepGr; end%if VectorArg(NameArg)=k1Array(i); for j=1:NumberSteps_3D+1 if j==1 z1Array(j)=LeftNameArg_3D; else z1Array(j)=z1Array(j-1)+StepGr_3D; end%if VectorArg(NameArg_3D)=z1Array(j); [VectorRes]=ReshitZadachuG(VectorArg); Array_3D(j,i)=VectorRes(NameVar); end%for j end%for i [x,y]=meshgrid(LeftNameVar:StepGr:RightNameVar,LeftNameArg_3D:StepGr_3D:RightNameArg_3D); %x %числостолбцов=NumberSteps+1 числострок=NumberSteps_3D+1 %y %числостолбцов=NumberSteps+1 числострок=NumberSteps_3D+1 %Array_3D %числостолбцов=NumberSteps+1 числострок=NumberSteps_3D+1 meshc(x,y,Array_3D); %podpisi k osyam TextVectorArg=[' xa0(мол.д.) ',' TR(C) ',' A1(1/сек) ',' E1(С) ',' A2(1/сек) ',' E2(С) ',' A3(1/сек) ',' E3(С) ',' A4(1/сек) ',' E4(С) ',' A5(1/сек) ',' E5(С) ',' T a(С) ',' T b(С) ',' t a(сек) ',' t b(сек) ']; TextVectorRes=[' T opt(C) ',' t opt(сек) ',' phi p max ',' xa last(мол.д.) ',' xb last(мол.д.) ',' xc last(мол.д.) ',' xd last(мол.д.) ']; xLlabel=' '; for i=((NameArg-1)*13+1):(NameArg*13+1) xLlabel=strcat(xLlabel,TextVectorArg(i)); end yLlabel=' '; for i=((NameArg_3D-1)*13+1):(NameArg_3D*13+1) yLlabel=strcat(yLlabel,TextVectorArg(i)); end zLlabel=' '; for i=((NameVar-1)*17+1):(NameVar*17+1) zLlabel=strcat(zLlabel,TextVectorRes(i)); end xlabel(xLlabel); ylabel(yLlabel); zlabel(zLlabel); v1Array=0; end Функцияpushbutton13_Callbackвызываетсяпринажатиикнопкиинтерфейсаснадписью«ПОСТРОИТЬ ГРАФИК». Необходимо присвоить этой кнопке тэгpushbutton13 при создании интерфейса. Функция считывает значения переменных из окон интерфейса. NameVarиз окна «номер зависимой переменной» с тэгом edit31,LeftNameVarиз окна «минимальное значение аргумента» с тэгомedit29,RightNameVarиз окна «максимальное значение аргумента» с тэгомedit30,NameArgиз окна «номер аргумента» с тэгомedit28,StepGrиз окна«шаг аргумента» с тэгомedit32, а также с панели для построения трехмерного графика «Объемный график»считывает NameArg_3Dиз окна «номер аргумента» с тэгомedit33,LeftNameArg_3Dиз окна «минимальный» с тэгомedit34,RightNameArg_3Dиз окна «максимальный» с тэгомedit36,StepGr_3Dиз окна «шаг» с тэгомedit35. Необходимо присвоить этим окнам соответствующие тэги. Если NameArg_3Dравеннулю, то вызывается функцияPostrGrafic для построения плоского графика. По умолчанию в окне панели для построения трехмерного графика «Объемный график» NameArg_3D«номер аргумента» (рис.3.6.1) стоит ноль. Его надо указать при создании интерфейса как значение ‘String’. Если NameArg_3Dне равеннулю, то вызывается функцияPostrGrafic_3D для построения трехмерного графика. function pushbutton13_Callback(hObject, eventdata, handles) global PG; if PG==1 else clear global; end%if global NameVar LeftNameVar RightNameVar NameArg StepGr LeftNameArg_3D StepGr_3D RightNameArg_3D NameArg_3D; global k1Array v1Array Array_3D xLlabel yLlabel zLlabel NumberSteps NumberSteps_3D; global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global k1 k2 k3 k4 k5; NameVar=str2double(get(handles.edit31,'String')); LeftNameVar=str2double(get(handles.edit29,'String')); RightNameVar=str2double(get(handles.edit30,'String')); NameArg=str2double(get(handles.edit28,'String')); StepGr=str2double(get(handles.edit32,'String')); VvodIshodnDannih(hObject, eventdata, handles); NumberSteps=round((RightNameVar-LeftNameVar)/StepGr); NameArg_3D=str2double(get(handles.edit33,'String')); if NameArg_3D==0 PostrGrafic(hObject, eventdata, handles); else LeftNameArg_3D=str2double(get(handles.edit34,'String')); RightNameArg_3D=str2double(get(handles.edit36,'String')); StepGr_3D=str2double(get(handles.edit35,'String')); NumberSteps_3D=round((RightNameArg_3D-LeftNameArg_3D)/StepGr_3D); PostrGrafic_3D(hObject, eventdata, handles); end%if end Функцияpushbutton3_Callbackвызываетсякнопкой «ВЫЧИСЛИТЬ». Необходимо этой кнопке присвоить тэгpushbutton3. Она обеспечивает вызов функцииVvodIshodnDannih, то есть ввод исходных данных из окон интерфейса, вызов функцииReshitZadachu, то есть вычисление, и вызов функцииVivodResultNaEkran, то естьвывод результатов в окна интерфейса. function pushbutton3_Callback(hObject, eventdata, handles) global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global Mas_xa_T_t Arg_Mas_xa_T_t; global Mas_xb_T_t Arg_Mas_xb_T_t; global Mas_xc_T_t Arg_Mas_xc_T_t; global Mas_xd_T_t Arg_Mas_xd_T_t; % global Mas_nGraf Arg_nGraf; global Mas_Graf_11 n_11; global k1 k2 k3 k4 k5; VvodIshodnDannih(hObject, eventdata, handles); VectorArg=[xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b]; [VectorRes]=ReshitZadachu(VectorArg); T_opt=VectorRes(1); t_opt=VectorRes(2); phi_p_max=VectorRes(3); xa_last=VectorRes(4); xb_last=VectorRes(5); xc_last=VectorRes(6); xd_last=VectorRes(7); VivodResultNaEkran(hObject, eventdata, handles); end Функцияpushbutton2_Callbackвызываетсякнопкой «ВЫЧИСЛИТЬИСОХРАНИТЬ», необходимоприсвоитьэтойкнопкетэгpushbutton2, онаобеспечиваетвычислениерезультатовисохранениевфайл. function pushbutton2_Callback(hObject, eventdata, handles) global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global Mas_xa_T_t Arg_Mas_xa_T_t; global Mas_xb_T_t Arg_Mas_xb_T_t; global Mas_xc_T_t Arg_Mas_xc_T_t; global Mas_xd_T_t Arg_Mas_xd_T_t; global Mas_Graf_11 n_11; %Vichislit resultati pushbutton3_Callback(hObject, eventdata, handles); %otkrit fail dlya zapisi [f,p]=uiputfile('C:\MATLAB701\work\OptimHTP_S1_6Res.txt','Окновыбора'); KudaZapisat=strcat(p,f); f=fopen(KudaZapisat,'wt'); %gotovim dannije dlja avtomaticheskogo schitivanija VectorArg=[xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b]; VectorRes=[T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last]; for i=1:7 fprintf(f,'%g\t',VectorRes(i)); end fprintf(f,'\n'); for i=1:16 fprintf(f,'%g\t',VectorArg(i)); end fprintf(f,'\n'); for i=1:100 for j=1:10 fprintf(f,'%g\t',Mas_xa_T_t(i,j)); end end fprintf(f,'\n'); for i=1:6 fprintf(f,'%g\t',Arg_Mas_xa_T_t(i)); end fprintf(f,'\n'); for i=1:100 for j=1:10 fprintf(f,'%g\t',Mas_xb_T_t(i,j)); end end fprintf(f,'\n'); for i=1:6 fprintf(f,'%g\t',Arg_Mas_xb_T_t(i)); end fprintf(f,'\n'); for i=1:100 for j=1:10 fprintf(f,'%g\t',Mas_xc_T_t(i,j)); end end fprintf(f,'\n'); for i=1:6 fprintf(f,'%g\t',Arg_Mas_xc_T_t(i)); end fprintf(f,'\n'); for i=1:100 for j=1:10 fprintf(f,'%g\t',Mas_xd_T_t(i,j)); end end fprintf(f,'\n'); for i=1:6 fprintf(f,'%g\t',Arg_Mas_xd_T_t(i)); end fprintf(f,'\n'); fprintf(f,'%g',n_11); fprintf(f,'\n'); for i=1:n_11 for j=1:5 fprintf(f,'%g\t',Mas_Graf_11(i,j)); end end fprintf(f,'\n'); %sohranit v fail resultati vichislenij fprintf(f,'\nOptimHTP_S1_6 \n'); fprintf(f,'RESULTATI VICHISLENIY\n'); TextString=strcat(' T opt(C) ',' t opt(сек) ',' phi p max ',' xa last(мол.д.) ',' xb last(мол.д.) ',' xc last(мол.д.) ',' xd last(мол.д.) '); fprintf(f,TextString); fprintf(f,'\n'); for i=1:7 fprintf(f,'%g\t',VectorRes(i)); end %sohranit v fail ishodnije argumenti fprintf(f,'\nARGUMENTI VICHISLENIY\n'); TextString=strcat(' xa0(мол.д.) ',' TR(C) ',' A1(1/сек) ',' E1(С) ',' A2(1/сек) ',' E2(С) ',' A3(1/сек) ',' E3(С) ',' A4(1/сек) ',' E4(С) ',' A5(1/сек) ',' E5(С) ',' T a(С) ',' T b(С) ',' t a(сек) ',' t b(сек) '); fprintf(f,TextString); fprintf(f,'\n'); for i=1:16 fprintf(f,'%g\t',VectorArg(i)); end fclose(f); end Функция pushbutton14_Callbackвызывается кнопкой «ОТКРЫТЬ ИЗ ФАЙЛА», необходимо этой кнопке присвоить тэгpushbutton14, функция обеспечивает открытие из файла исходных данных и результатов и вывод их в окна интерфейса. Графиконанестроит. function pushbutton14_Callback(hObject, eventdata, handles) clear global; global xa0 TR A1 E1 A2 E2 A3 E3 A4 E4 A5 E5 T_a T_b t_a t_b; global T_opt t_opt phi_p_max xa_last xb_last xc_last xd_last; global Mas_xa_T_t Arg_Mas_xa_T_t; global Mas_xb_T_t Arg_Mas_xb_T_t; global Mas_xc_T_t Arg_Mas_xc_T_t; global Mas_xd_T_t Arg_Mas_xd_T_t; global Mas_Graf_11 n_11; %Otkrit is faila [f,p]=uigetfile('C:\MATLAB701\work\OptimHTP_S1_6Res*.txt','Окновыбора'); OtkudaChitat=strcat(p,f); f=fopen(OtkudaChitat,'rt'); %chitat is faila for i=1:7 VectorRes(i)=fscanf(f,'%g',1); end for i=1:16 VectorArg(i)=fscanf(f,'%g',1); end for i=1:100 for j=1:10 Mas_xa_T_t(i,j)=fscanf(f,'%g',1); end end for i=1:6 Arg_Mas_xa_T_t(i)=fscanf(f,'%g',1); end for i=1:100 for j=1:10 Mas_xb_T_t(i,j)=fscanf(f,'%g',1); end end for i=1:6 Arg_Mas_xb_T_t(i)=fscanf(f,'%g',1); end for i=1:100 for j=1:10 Mas_xc_T_t(i,j)=fscanf(f,'%g',1); end end for i=1:6 Arg_Mas_xc_T_t(i)=fscanf(f,'%g',1); end for i=1:100 for j=1:10 Mas_xd_T_t(i,j)=fscanf(f,'%g',1); end end for i=1:6 Arg_Mas_xd_T_t(i)=fscanf(f,'%g',1); end n_11=fscanf(f,'%g',1); for i=1:n_11 for j=1:5 Mas_Graf_11(i,j)=fscanf(f,'%g',1); end end fclose(f); T_opt=VectorRes(1); t_opt=VectorRes(2); phi_p_max=VectorRes(3); xa_last=VectorRes(4); xb_last=VectorRes(5); xc_last=VectorRes(6); xd_last=VectorRes(7); xa0=VectorArg(1); TR =VectorArg(2); A1=VectorArg(3); E1=VectorArg(4); A2=VectorArg(5); E2=VectorArg(6); A3=VectorArg(7); E3=VectorArg(8); A4=VectorArg(9); E4=VectorArg(10); A5=VectorArg(11); E5=VectorArg(12); T_a=VectorArg(13); T_b=VectorArg(14); t_a=VectorArg(15); t_b=VectorArg(16); %vivod na ekran VivodArgumentovNaEkran(hObject, eventdata, handles); VivodResultNaEkran(hObject, eventdata, handles); end Функцияpushbutton8_Callbackвызываетсяпринажатиинакнопку «ПОСТРОИТЬГРАФИКИСОХРАНИТЬ», необходимоэтойкнопкеприсвоитьтэгpushbutton8, фу<
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2021-01-08; просмотров: 86; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.129.55 (0.016 с.) |