Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » SAS IML. Использование языка SAS IML. Основы IML

SAS IML. Использование языка SAS IML. Основы IML (Лекции 2013), страница 2

PDF-файл SAS IML. Использование языка SAS IML. Основы IML (Лекции 2013), страница 2 (ППП СОиАД) (SAS) Пакеты прикладных программ для статистической обработки и анализа данных (63181): Лекции - 10 семестр (2 семестр магистратуры)SAS IML. Использование языка SAS IML. Основы IML (Лекции 2013) - PDF, страница 2 (63181) - СтудИзба2020-08-25СтудИзба

Описание файла

Файл "SAS IML. Использование языка SAS IML. Основы IML" внутри архива находится в папке "Лекции 2013". PDF-файл из архива "Лекции 2013", который расположен в категории "". Всё это находится в предмете "(ппп соиад) (sas) пакеты прикладных программ для статистической обработки и анализа данных" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

At least2147483647 more bytes required.• Память выделяется частями (extent). Сначала SAS пытаетсявыделить всё больше и больше extent’ов. Памятьсжимается (избавляемся от промежуточных временныхпеременных). Когда мы достигаем ограничения, выдаетсяошибка.• Освобождение памяти:FREE A B C; *удаляет из памяти матрицы A,B,C;FREE /; *удаляются все матрицы;FREE / A B; *удаляются все матрицы, кроме A и B;25Работа с памятью• Изменение настроек собственно PROC IML для работы спамятью делается опциями worksize= и symsize= (послекоторых указывается лимит памяти в килобайтах):PROC IML <SYMSIZE=n1> <WORKSIZE=n2> ;• Worksize= память для хранения содержимого матриц• Symsize= память для хранения таблицы с именами матриц• Команда для вывода отладочной информации о кол-веextents, памяти, кол-ве сжатий:show space;• Команда для вывода информации о созданных ихранящихся в памяти переменных:show names;26Матричные преобразования• Разложение SVD:proc iml;A={1 2 3,4 5 6,8 9 10,11 12 13};CALL SVD( u, q, v, A ) ;/*check decomposition*/print A ,,(u*diag(q)*T(v)) ;quit;• Разложение Холецкого:Матрица А – симметричная и положительно определённая.proc iml;A={10 0 0,0 1 2,0 2 9};u=ROOT(A) ;/*check decomposition*/print A ,,(T(u)*u) ;quit;27Матричные преобразования• QR- разложение:CALL QR( q, r, piv, lindep, a <, ord> <, b> ) ;proc iml;A={1 2 3,4 5 6,7 8 9};call qr(q,r,piv,lindep,A) ;/*check decomposition*/print q ,,(q*T(q)),r,,(q*r) ;quit;28Матричные преобразования• Собственные векторы, собственные значения.• Матрица А имеет только действительные элементы.Полученные с.в., с.з.

имеют или одну (действит.) или две (действит. +мнимую) составляющих.CALL EIGEN( evals, evecs, A ) ;Ax = λxCALL GENEIG( eval-M, evecs-E, A, B ) ;EIGVEC( A ) ;EIGVAL( A ) ;proc iml;M={0 -1,1 0};call eigen(evals, evecs, M);print evals ,, evecs;quit;29Матричные преобразования• Если матрица А не симметричная, и собственные значения получаютсякомплексные, evals содержит 2 колонки. Первая – действительная часть,вторая – мнимая.• Если строчки i, i+1 в матрице собственных значений (evals) содержаткомплексно-сопряженные соб.значения, то в матрице соб.векторов(evecs) содержится действительная и мнимая части для координат одногоиз соб. векторов.Иллюстрация результата, полученного на прошлом слайде:1/√2= +i-i/√21/√2Re,Im-i/√21 с.з.2 с.з.1/√2i/√2= -i1/√21 с.в.2 с.в.i/√2Re,Im30Задание• Напишите свой модуль, который вычисляет определитель матрицы(матрица передаётся как параметр).

Нельзя пользоваться функциейdet. Результат задания – программа *.sas• Вычислять можно любым методом, какой вам нравится.• http://stackoverflow.com/questions/2435133/what-is-the-best-matrixdeterminant-algorithm• Оценка от 0 до 3:• 0 – не сделал(а) или программа считает det неправильно• 1 – определитель вычисляется для матрицы фиксированного размера• 2 – п. «1» + сообщения об ошибках (неквадратная матрица, ???)• 3 – п.

«2» + определитель вычисляется для матрицы произвольногоразмера• Сохраните его в хранилище для последующего вызова• Загрузите модуль из хранилища и вызовите его в другой процедуреIML, написав пример(ы) его использованияБольше по этой лекции заданий нет.31Использование языка SAS/IML• Supplementary: Решение разных задач32Статистическое описание данных•Создание отчета с рассчитанными статистиками, в том числе в разбивке поклассифицирующим переменным.

На вход подается набор данных, открытыйоператором USE.SUMMARY <CLASS operand> <VAR operand> <WEIGHT operand> <STAT operand><OPT operand> <WHERE(expression)> ;proc iml;use sashelp.class;SUMMARY CLASS {sex} VAR {age} STAT {mean min max};quit;Analysis variable : AgeSex NobsMEANMINMAX--------------------------------------------F913.2222211.0000015.00000M1013.4000011.0000016.00000All1913.3157911.0000016.00000---------------------------------------------• Расчет матрицы с частотами:CALL TABULATE( levels, freq, x <, method> ) ;• Распечатка открытого набора данных:LIST <range> <VAR operand> <WHERE(expression)> ;33Графика*Чтобы построить график массива , созданного в IML, предлагается сбросить его внабор данных, а затем подать его на вход процедуры gplot:*let's plot sine and cosine;proc iml;do x1=-10 to 10 by 0.1;x=x||x1;y=y||sin(x1);y2=y2||cos(x1);end;A=T(x//y//y2);create work.temp1from A[colname={"x","sine","cosine"}];append from A;quit;proc gplot data=temp1;*goptions vsize=3 hsize=3;SYMBOL1 COLOR=red INTERPOL=JOIN value=x;SYMBOL2 COLOR=green INTERPOL=JOIN value=none;*legend;legend1 label=("Fancy plot") value=("sine plot" "cosine plot");axis1 label=('y=f(x)');plot sine*x cosine*x / overlay legend=legend1 vaxis=axis1;run;quit;* В IML есть собственные графические процедуры, но мы их изучать не будем34ГрафикаПостроение графиков можно сделать меньшим кол-вом кода IML:proc iml;/** define functions **/start Func1(x);return( sin(x));определилиfinish;функцииstart Func2(x);return( cos(x));finish;вектор-строка Хx = do(-5,5,0.1); *make matrix row;y1=Func1(x);без циклов посчиталиy2=Func2(x);вектор-строку УA=T(x//y1//y2);create work.temp1 from A[colname={"x","sine","cosine"}];append from A;quit;35Решение ОДУ••••В IML присутствует только одна процедура для этого: ODEThe ODE subroutine is an adaptive, variable-order, variable-step-size, stiff integrator based onimplicit backward-difference methods.

…Как и любой численный метод, ODE должен гарантировать нам решение с точностью доуказанного эпсилон (по умолчанию, 10^(-4))… Проверим!Давайте начнем его проверять с простого ОДУ:y'(t)=-t*y(t)•Начальные условия:•Аналитическое решение:y(t=0)=136Решение ОДУ/*plot ode solve*/Модуль, где (система) ОДУ задаетсяproc iml;виде вектор-столбца dy/dt:start fun(t,y);v = -t*y; *the equation is y'(t)=-t*y(t);return(v);finish;/* Call ODE */c= 1; *vector of initial values;Начальное условие для y(t(1))t= do(0,10,0.1); *start time, end time; вектор t, для которых мы получим решениеh= {1E-12 1 1E-5}; * the minimum allowable step size, hmin;* the maximum allowable step size, hmax;* and the initial step size to start the integration process,hinit;call ode(r1, "FUN", c, t, h);…магия…TAB=T(t//(c||r1));решение не содержит начальное условие, мы его добавимcreate work.temp1 from TAB[colname={"t","solution"}];append from TAB;сбросим решение в наборquit;/*plot*/данных и построим его сproc gplot data=temp1;помощью gplot.goptions reset;SYMBOL1 COLOR=green INTERPOL=JOIN value=none;plot solution*t;run;quit;в37Решение ОДУ• Проверим и построим ошибку (EPS=1E-4)/*-=-check error-=-*/data errors;set temp1;analyt=exp(-t*t/2);err=analyt-solution;log10err=log(abs(err))/log(10);run;/*plot*/proc gplot data=errors;goptions reset;SYMBOL1 COLOR=greenINTERPOL=JOIN value=none;plot log10err*t / vref=-4;run;quit;По оси У отложен десятичн.логарифм ошибки – мывидим, что она «подконтролем» численногометода!38Решение системы ОДУили ОДУ высших порядков, что то же самое• Пример:y(t)''= exp(-y(t)' /10) * sin(2*t)Нач.

условия: y(0)=1, y'(0)=-1• Перепишем ур-е со второй производной как систему двух уравнений с первойпроизводной:y(t)’ =z(t)z(t)’ =exp(-z/10)*sin(2*t) = y(t)’’• Как будет выглядеть модуль для функции ODE?start ode2ord(t,y);y1=y[2];y2=exp(-y1/10)*sin(2*t);y=y1//y2;return(y);finish;•Вызовем функцию ODE:t-независ. переменная,y – вектор-столбец:[ y (t) ][ y’(t) ]на выходе – тоже вектор-столбец:[ y’(t) = f1() ][ y’’(t) = f2() ]c= {1, -1}; *vector of initial values;t= do(0,2,0.1); *start time, end time;h= {1E-12 1 1E-5};порядокcall ode(r1, "ODE2ORD", c, t, h);TAB=T(t//(c||r1));create work.temp1 from TAB[colname={"t","sol1","sol2"}];append from TAB;решений39Решение системы ОДУgoptions reset;goptions hsize=500pt vsize=250pt;SYMBOL1 COLOR=red INTERPOL=JOIN value=none;SYMBOL2 COLOR=blue INTERPOL=JOIN value=none;Legend1 value=('function y(t)');Legend2 value=('derivative y''(t)');proc gplot data=temp1;plot sol1*t / legend=legend1;plot sol2*t=2 / legend=legend2 ;run;quit;В этом примере мы непроверяем ошибку, ноповерим, что она тоже подконтролем (функция ипроизводная не содержаткаких-то быстрых изменений,где адаптивный алгоритммог бы “наврать”).40Решение жесткого (stiff) ОДУ• Уравнение, которое дает резкое возрастание погрешности принедостаточно малом шаге – хорошая проверка численных методов!• Пример с аналитическим решением *:dy/dt = y2- y3y(0) = δ0 < t < 2/δ• Модуль, задающий ОДУ + программа:proc iml;Проверяем, как работаетstart fun(t,y);v = y##2-y##3;адаптивный контрольreturn(v);шага.

Выводимfinish;последовательные шаги в/* Call ODE */набор данных steps:c= 1E-4; *vector of initial values;t= 0 || 2/c; *start time, end time;h= {1E-15 1 1E-5};call ode(r1, "FUN", c, t ,h) data="work.steps";*The data set is used to save the successful independent and dependentvariables of the integration at each step. The keyword for this option isDATA;quit;* http://www.mathworks.com/company/newsletters/articles/stiff-differential-equations.html41Жесткое ОДУ• Построим график решения у(t):goptions reset vsize=250pt hsize=500pt;SYMBOL1 COLOR=green INTERPOL=none value=x;proc gplot data=steps;plot y1*time;run;OOOPS!http://www.mathworks.com/cmsimages/64812_wl_may03_ode23_large.gif42Решение жесткого ОДУ• Ошибка явно вышла из-под контроля числ.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее