Главная » Просмотр файлов » 1626435587-51311eae4652e8ad616b5bdef025cbb3

1626435587-51311eae4652e8ad616b5bdef025cbb3 (844239), страница 5

Файл №844239 1626435587-51311eae4652e8ad616b5bdef025cbb3 (Смирнов 2015 - Основы вычислительной физики ч1) 5 страница1626435587-51311eae4652e8ad616b5bdef025cbb3 (844239) страница 52021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

1 ( ) представлена гистограммаплотности стандартного нормального распределения, построенная9 повыборке размером 10 000 с помощью команд:гn=20; min=-3.2; max=3.2#количество каналов и диапазон по xcw=(max-min)/n#ширина одного канала гистограммыhist(x,width)=width*floor(x/width)+width/2.0plot "rnd.dat" u (hist($1,cw)):(1e-3) smooth freq w boxesДля построения гистограммы в примере выше была определена функция hist, задающая «ступенчатое» отображение своего первого аргумента. Ширина и высота «ступенек» равна значению переменной cw.Входные данные разбиваются функцией hist по каналам гистограммы,после чего вызывается команда построения графиков plot c опцией дополнительной обработки данных smooth в режиме frequency. В этомрежиме функция plot отображает одинаковые значения из входногопотока в виде одной точки, -координата которой равна сумме значений соответствующих точек из входного потока.

Для построения плотности вероятности по выборке -координаты всех точек должны бытьодинаковы (в данном примере они равны 10−3 ), а -координаты точекПри этом положение самой рамки может меняться в зависимости от наличияподписейосей, штрихов, а также под действием команд set size и set origin.9 Для генерации случайной величины ∼ Φ0,1 в gnuplot использовалось преобразование Бокса — Мюллера; равномерно распределенная на отрезке [0, 1] случайнаявеличина генерировалась с помощью функции rand(0).821должны принимать относительно небольшое число возможных значений за счёт группировки близких точек в каналы гистограммы, что идостигается в примере выше указанием using (hist($1,cw)):(1e-3).1.4.

Графики функций двух переменныхДля построения графиков функций двух переменных в gnuplotпредусмотрена команда splot10 . Её синтаксис в целом аналогиченplot, основное отличие состоит в формате файлов с данными. Наиболее простое решение — формировать строки вида 1 . . . ,вставляя по одной пустой строке между данными, соответствующимиразличным значениям . В качестве примера приведём код программына языке Си для записи таблицы аналитичекого решения одномерногоуравнения теплопроводности ( −2 )(, ) = 0 с начальным условием(, 0) = ():#include <stdio.h>#include <stdlib.h>#define _USE_MATH_DEFINES //для использов. M_PI в Microsoft VC#include <math.h>//функция Грина 2 рода одномерного уравнения теплопроводности:double G(double x, double t){return exp(-x*x/(4*t))/sqrt(4*M_PI*t);}int main(void){int i, j, N=50; //i,j - счётчики, N - число точек в таблицеdouble t, x, t0=0.5, dt=0.05, dx=0.2; //шаг сетки по t и xFILE *fd = fopen("solution.dat", "wb");if(fd == NULL) //если не удалось открыть файл, завершаем >>exit(1);//выполнение программы с кодом ошибки 1for(i = 0; i < N; ++i) { //цикл перебора узлов сетки t_i//вложенный цикл - перебор узлов x_j, запись данных:for(j=0, t=t0+i*dt; j<N; ++j) {x = (j-N/2.)*dx;fprintf(fd, "%12.5e %12.5e %12.5e\n", t, x, G(x,t));}10Сокращение от surface plot.22//пустая строка, разделяющая различные сечения t:fputs("\n", fd);}}fclose(fd);return 0;//закрываем файл//возвращаем код успешного завершенияСкомпилируем и запустим программу, наберём в gnuplot командуsplot "solution.dat" using 1:2:3 with pm3d, в результате чего получим график функции (, ) в виде цветной поверхности11 .

Отображение множества значений математической функции на цвета называется(palette) и может быть изменено с помощью командыset palette с соответствующими опциями. Например, для выбора серой градиентной палитры можно скомандовать:палитройset palette defined ( 0 "black", 1 "white" )Палитра, приблизительно соответствующая палитре MATLAB по умолчанию:set pal defined (1 ’#00008f’, 8 ’#0000ff’, 24 ’#00ffff’, \40 ’#ffff00’, 56 ’#ff0000’, 64 ’#800000’)Для построения поверхности (, ) одним цветом вместо pm3dможно использовать построение с помощью линий (with lines). Чтобы сделать поверхность непрозрачной, необходимо скомандовать sethidden3d.

По умолчанию поверхность графика будет приподнята надплоскостью ; чтобы это исправить, воспользуемся командой setxyplane relative 0.Угловые координаты наблюдателя и масштабные коэффициентыпри построении поверхностей можно изменить с помощью команды setview. Команда set view map переводит gnuplot в режим отображенияграфиков в виде плоской двумерной карты, на которой значения функции отображаются цветом.

Чтобы показать линии уровня на графике,используется команда set contour.Если добавлять в файл не по одной, а по две пустых строки между сечениями по времени, можно построить зависимости от координаты x, нарисованные отдельными линиями. Для этого нужно скомандовать splot "solution.dat" using 1:2:3 with lines. При этом можно строить сечения не для всех моментов времени t, сохранённых вфайле, а указать требуемые с помощью ключевого слова index либоего лаконичной формы i.11 pm3d— сокращение от palette-mapped 3d.231.5.

Сохранение графических файловДля сохранения построенных с помощью gnuplot графиков в файлможно использовать кнопку слева на панели инструментов. Полученное таким способом изображение можно быстро отправить по электронной почте или вставить на веб-страницу, тогда как для подготовки печатных документов его использовать не следует ввиду низкогоразрешения — в этом случае более подходящими являются векторныеформаты графических файлов, в которых рисунок сохраняется в виденабора линий и других графических объектов, что позволяет получатьчёткие высококачественные изображения любого размера.Рассмотрим сохранение графиков на примере формата EMF, подходящего для последующей вставки рисунков в приложения MS Office:#изменяем терминал вывода:set terminal emf enhanced lw 4 size 1024,960 font "Arial,24"set output ’figure.emf’ #перенаправляем вывод gnuplot в файлplot sin(x)#строим графикset output#восстанавливаем вывод в STDOUTset term wxt#восстанавливаем исходный терминалимя-терминалаКоманда set terminal(краткая форма set term) изменяет терминал, используемый для построенияграфиков.

Терминалы gnuplot, подобно физическим устройствам, отличаются друг от друга набором возможностей для построения графиков (палитрами, возможностями использования различных шрифтов иширин линий). В частности, gnuplot поддерживает терминалы для построения графиков в форматах png, emf, pdf, LATEXи даже для формирования интерактивных иллюстраций для html-страниц (canvas).

Полный список поддерживаемых терминалов можно посмотреть в справкеgnuplot (help terminal), либо набрав set terminal без параметров.При выборе терминала можно указать опции (в примере выше мы увеличили базовую ширину линий до 4, установили размер изображения1024 × 960 отн.ед. и выбрали шрифт семейства Arial, кегль 24).Команда set output ’’ открывает графический файл иперенаправляет туда вывод из терминала. Чтобы посмотреть построенный график, может потребоваться вначале закрыть файл, для чегонужно отдать ещё одну команду set output, указав в качестве параметра имя нового файла для построения следующего графика либовызвав set output без параметра как в приведённом выше примере.

Вэтом случае вывод будет направлен в стандартный поток (stdout).имя-терминалаимя файла241.6. Пакетное построение графиков. ЦиклыОчень часто при решении научных и инженерных задач приходится выполнять большое количество однотипных численных расчётов дляисследования зависимости результатов от параметров исследуемых физических систем, что сопряжено с построением большого количестваоднотипных графиков. Gnuplot позволяет автоматизировать этот процесс — помимо рассмотренного выше интерактивного режима работы,когда отдельные команды вручную вводятся пользователем в консолиgnuplot, предусмотрен также пакетный режим работы. Для этого нужно создать текстовый файл, содержащий набор команд gnuplot, назовёмего sample.txt:# построение графиков в пакетном режимеset terminal png size 320,240set output "sample.png"set xlabel "x" ; set ylabel "y" ; set title "sample plot"set xrange [-pi:pi] ; set yrange [*:1.1]plot sin(x), cos(x)*exp(-x*x)set output#восстанавливаем вывод в STDOUTset term pop#восстанавливаем исходный терминалДля того, чтобы «запустить» написанную для gnuplot программу, нужно либо передать gnuplot командный файл при запуске12 , либо набратьв консоли gnuplot команду load "sample.txt".

Первый способ позволяет быстро строить большое количество графиков с использованиемскриптов оболочки операционной системы. Вместо созданного вручнуюкомандного файла часто бывает удобно использовать выходной потоктакого скрипта, перенаправленный на вход gnuplot. Однако прежде чемпереходить к автоматизации, вначале рекомендуем хорошо освоить работу в «ручном» режиме.В наиболее простых случаях автоматизацию можно выполнитьсредствами gnuplot, не прибегая к скриптам оболочки. При этом оказываются полезными условный оператор if { ... } else { ...

} ициклы for, которые могут быть использованы совместно с командамиplot, splot, set и unset. Цикл for позволяет вести перебор по строкамfor [filename in "A B C D"] либо по целым числам:set logscale xy ; set key left bottomset xrange [1:3] ; set ytics format "10^{%T}"plot for[n=2:10:2] x**(-n) t sprintf("x^{%d}",n)Под Windows:или12wgnuplot sample.txtpgnuplot < sample.txtsample.txt | gnuplotgnuplot < sample.txtили25.; под Linux: catФункция sprintf позволяет сформировать текстовую строку, содержащую значения переменных, и использовать её в качестве имени файла,подписей на легенде, осях, метках и т. п. Синтаксис sprintf в gnuplotочень близок к синтаксису одноимённой функции в языке Си.Выполнение блока произвольных команд в цикле может быть реализовано с помощью do for [] {} либо конструкции while() {}. Циклы могут быть вложенными:выражениеобластькомандыкомандыset for [i=1:9] for [j=1:9] label i*10+j \sprintf("%d",i*10+j) at i,jВ некоторых случаях для организации циклов удобно использовать команду reread внутри командного файла для повторного выполнениякоманд с начала файла.

Для суммирования конечного числа членовпоследовательности или ряда предусмотрена специальная команда sum(см. help summation).Таким образом, в данной главе были кратко рассмотрены основныевозможности программы gnuplot, и даны сведения, необходимые дляначала работы. Более подробную информацию легко найти в документации и многочисленных блогах, форумах, списках F.A.Q. и HowTo,посвящённых gnuplot. Большое количество полезных примеров от базовых до нетривиальных можно найти в замечательно иллюстрированной книге [A3].

Желающим более полно и систематически изучитьвозможности программы можно рекомендовать [A4].Упражнения1. Напишите программу, сохраняющую в текстовый файл с двумя столбцами таблицу значений гауссовской функции. Запуститепрограмму, постройте график функции в gnuplot.262. Выполните упражнение 1, сформировав файл с данными средствами gnuplot.3. Постройте график функций Бесселя 0 () и 1 () нулевого и первого порядков (besj0 и besj1) на интервале от −20 до +20.4. Постройте график зависимости разности функции √︀Бесселя 1первогопорядка(besj1)иеёасимптотики()∼2/() ×1(︀)︀× cos − 43 на интервале от 1 до +100 в логарифмическом масштабе.

Характеристики

Тип файла
PDF-файл
Размер
1,98 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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