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

Решение нелинейных систем уравнений
%               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]; 


Категория: Прикладное программирование | Добавил: nazgull (24.05.2012)
Просмотров: 5108 | Теги: GRID, MatLAB, fsolve, title, нелинейные системы уравнений в матл | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки