% nsu_main Главный файл программы. % nsu_main - главный файл программы. Выполняет подготовительную работу и % вызывает меню программы. Подготовительная работа заключается в % следующем: очистка глобального пространства имен для предотвращения % конфликтов имен переменных,отключение всех предупреждающих сообщений, % объявление глобальных переменных и вывод инструкций пользователю. % % Отключение всех предупреждающих сообщений выполняется командой % "warning off". Для справки наберите в командном окне "help warning" % % Описание программы. % lab5_main Вычисляет точное значение для Х и У в нелинейной системе % уравнений описанной в скипт - файле nsu . % Система состоит из двух уравнений : % X=sin(X+2)-1.5; % Y=0.5-cos(Y-2); % Значение начальной точки - решения хранятся в xx. % Решение систему уравнений осуществляется с помошью функции fsolve % для справки наберите help fsolve. % % % Пользователю предоставляется возможность указать х0 и y0 - начальные % приближение для Х и Y . % % После вычисления X и Y программа по команде пользователя выводит % графическое решение . % % При завершении программы освобождается память из - под переменных % с помощью фунции clear (для справки - help clear). % % Для вызова программы наберите в коммандном окне nsu_main clear all; %Очистка рабочего пространства от всех предыдущих переменных. warning off;%Отключение предупреждающих сообщений. fprintf('\n Данная программа предназначена для вычисления систем нелинейных уравнений\n'); fprintf('\n Введите x0 и y0 '); x0=input('\n x0 (допустимые значения от -2 до 2)='); %Ввод первого приближения для х while ((x0<-2)||(x0>2)), x0=input('\n x0 (допустимые значения от -2 до 2)='); end; y0=input('\n y0 (допустимые значения от -2 до -1)='); %Ввод первого приближения для y while ((y0<-2)||(y0>-1)), y0=input('\n x0 (допустимые значения от -2 до -1)='); end; xx=[x0,y0]; F=fsolve(@nsu_func,xx); %Вычисление решения системы уравнений fprintf('\n x= %-12.14f',F(1)); fprintf('\n y= %-12.14f',F(2)); fprintf('\n Введите 1 для вывода графика решения системы или 2 для выхода из программы'); ans=input('\n Ваш выбор: '); while not(ans==1) & not(ans==2), fprintf('\n Введенное значение не корректо повторите ввод'); fprintf('\n Введите 1 для вывода графика решения системы или 2 для выхода из программы'); ans=input('\n Ваш выбор: '); end; if ans==1 , Y=[-20:0.01:20]; % Задание массива Y для отображения графика X=[-20:0.01:20]; % Задание массива Х для отображения графика a=sqrt((1-2*Y.^2)/0.5)-F(1); % Первое уравнение из исходной системы в виде х=f(y) b=(atan(X.^2)-0.3)./X-F(2); % Второе уравнение из исходной системы в виде y=f(x) subplot(2,1,1); plot(Y,a,'g'); % Построение графика первого уравнения с решением для х grid on; % Наложение сетки на график title('Answer X');%заголовок графика для х xlabel('y'); % добавление текста к оси y ylabel('a'); % добавление текста к оси a subplot(2,1,2); plot(X,b); % Построения графика второго уравнения с решением для y grid on; % Наложение сетки на график title('Answer Y');%заголовок графика для y xlabel('x'); % добавление текста к оси x ylabel('b'); % добавление текста к оси b end clear all; % Очистка памяти по завершении программы clc;
function F=nsu_func(x) F=[tan(x(1)*x(2)+0.3)-x(1)^2; 0.5*x(1)^2+2*x(2)^2-1];
|