представляет собой вектор-столбец символических решений. К сожалению, в данной версии Matlab невозможно вывести в выходной файл эти решения. Кроме того, функцию solve компилятор отказывается переводить при создании exe-файла.
% M-файл find_all_roots_sym.m function find_all_roots_sym % Cчитываемизвходногофайлафункцию [FI,mes] = fopen('roots.in','rt'); F = fgetl(FI); fclose(FI); % Ивыводимкорнифункции r = solve(sym(F)); pretty(r);
Итак, пользователю всё равно нужно будет запускать Matlab и открывать M-файл. Пользователю было бы удобно, чтобы это делалось «за один раз». Т.е. решение системы нелинейных уравнений должно проходить в 2 этапа:
Главное окно программы:
Для решения задачи следует в поле «известные переменные» отметить известные переменные. При каждом изменении таблица, содержащая план решения будет пересчитываться. В левом нижнем поле будет выводится количество переменных получаемых на каждом шаге вычислений.
Пример создания M-файла для предметной области «Квадрат»
Квадрат: S-площадь, a-сторона, diag-диагональ
F1 S-a^2=0
F2 2*a^2-diag^2=0
Для хранения описания формул и переменных предметной области был разработан простейший текстовый формат файла (для этого формата используется расширение .sem.). В первой строке файла записывается M-количество переменных. Далее идут M строк с описаниями переменных в формате:
<имя переменной> - <описание переменной>
Затем указано N-количество уравнений. Все уравнения должны быть в виде . Имя переменной должно состоять из букв и цифр, при этом на первой позиции обязательно должна быть буква.
Создадим описание предметной области «квадрат» в виде .sem файла в любом текстовом редакторе и сохраним файл под именем «квадрат.sem»:
3
S - площадь
a - сторона
diag - диагональ
2
S-a^2=0
2*a^2-diag^2=0
Выберем в главном окне программы пункт меню «Загрузить». При этом появится окно, как показано на рисунке:
Выберем файл «квадрат.sem» и нажмём клавишу «Открыть». После успешного открытия файла появится окно, как показано на рисунке:
Нажмём клавишу «OK». В главном окне программы мы сможем просмотреть описание предметной области «квадрат». Вид главного окна программы показан на рисунке:
Т.к. ничего нельзя вычислить, алгоритм останавливается на первом шаге. Предположим, что нам известна площадь квадрата . Наведём на нёё правую курсор мыши и нажмём левую кнопку мыши. При этом будет создан план расчёта остальных переменных.
Мы видим, что сначала из первого уравнения можно вычислить сторону квадрата . А затем из второго уравнения – диагональ квадрата .
Выберем пункт меню «Создать M-файл решения». При этом появится окно, позволяющее выбрать имя для создаваемого файла.
Выберите имя файла и нажмите «Сохранить». При успешном сохранении появится следующее окно:
Нажмите «OK». Теперь можно посмотреть содержимое созданного файла:
% Файл сгенерирован программой FSS.EXE
function gen1 % === Известные переменные === S = ; % Укажите значение S % === Вычисляем новую переменную 'a' === F = sym('S-a*a'); % Уравнение F1 % Подставляем известные переменные F = subs(F,'S',S); % Решаем систему и выводим ответ a = max(double(solve(F))); disp('a='); disp(a); % === Вычисляем новую переменную 'diag' === F = sym('2*a^2-diag^2'); % Уравнение F2 % Подставляем известные переменные F = subs(F,'a',a); % Решаем систему и выводим ответ diag = max(double(solve(F))); disp('diag='); disp(diag);
Следует заметить, что конкретное значение площади не указано. Это сделано намеренно. Конкретное значение переменных можно поставить после открытия этого файла в Matlab. Можно также исследовать решения при различных значениях известных переменных.
Запустим Matlab и откроем полученный файл.
Указываем значение S=100. И запускаем программу на выполнение (F5).
В главном окне Matlab появляется решение системы:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.