взлом

Открытая медицинская библиотека

Статьи и лекции по медицине ✚ Библиотека студента-медика ✚ Болезни и способы их лечения.

Хирургия Global hAxes hEd1 hEd2 hEd3 hEd4 hList
просмотров - 305

%-- get string information from editboxes -----

str1=get( hEd1,'String' ); str2=get( hEd2,'String' );

str3=get( hEd3,'String' ); str4=get( hEd4,'String' );

%-- convert strings to numbers ---------------

x0 = str2num( str1 ); y0 = str2num( str2 );

xf = str2num( str3 ); N = str2num( str4 );

%-- get function name -------------------------

index = get( hList, 'Value' );

cellArr = get( hList, 'String' );

funName = cellArr{ index };

%-- Euler algorithm ---------------------------

axes( hAxes );

dx = ( xf - x0 ) / N;

X=x0; Y=y0;

for k=1:N

Y=[ Y, Y(end) + feval( funName, X(end) ) * dx ];

X=[ X, X(end) + dx ];

End

%-- graph plotting ---------------------------

plot( X , Y );

С помощью функций get, указывая им в качестве первого аргумента описатели редактирующих полей, мы получаем значения свойства 'String', то есть текстовое содержимое этих полей, ĸᴏᴛᴏᴩᴏᴇ вводится пользователœем с клавиатуры. Это и есть входные данные. Только пока что числовые данные представлены в строковой ( текстовой ) форме.

Для получения имени функции, представляющей правую часть дифференциального уравнения, сначала у списка запрашиваем через свойство 'Value' индекс подсвеченной ( выбранной или отселœектированной ) строки, затем читаем значение свойства 'String'. Последнее для списка является массивом ячеек, откуда и выбираем имя функции с помощью операции индексирования массива ячеек.

С помощью функций str2num преобразуем текстовые величины в числа. Затем устанавливаем начальные значения для массива X значений аргумента и массива Y значений функции на сетке. Шаг сетки ( шаг интегрирования ) dx вычисляется делœением длины отрезка интегрирования на количество шагов N, ĸᴏᴛᴏᴩᴏᴇ пользователь вводит с клавиатуры. Наращивание массивов осуществляется операцией конкатенации, в то время как очередное значение функции вычисляется согласно алгоритму метода Эйлера и равно

feval( funName, X(end) ) * dx

Ключевое слово системы MATLAB end означает ссылку на последний элемент массива, что нам и требуется в данном случае. С помощью функции feval осуществляется вызов функции с именем funName, прочитанным из списка, и ей передаётся аргумент X(end)( текущее значение независимого аргумента ).

В конце концов осуществляется построение графика вычисленного решения дифференциального уравнения с помощью функции plot. Перед вызовом этой функции с помощью axes( hAxes ) гарантируется, что наш объект типа Axes является активным, и именно в нём функция plot строит график функции.

Проверим работу приложения для следующих пользовательских функций MyFunct1, MyFunct2 и f3. Текст функции MyFunct1