Лабораторная работа №1
Поиск корней уравнения с заданной точностью.
Построение графиков.
Упражнения
Нарисовать график функции на заданном интервале. (1б)
1.
Нарисовать картину интерфереции (сложения) двух монохроматических колебаний с одинаковой частотой, (2б)
2.
но разными амплитудами и фазами.
Нарисовать импульс: форма – гауссова, частота – произвольная. (2б)
3.
Задачи
1. Написать программу для вычисления корня функции с точностью
10−4 на заданном интервале:
методом дихотомии (3б)
(a)
методом касательных (Ньютона) (7б)
(b)
методами a и b, сравнить скорости счёта (9б)
(c)
Для полиномиальной функции произвольного порядка написать
2.
программу символьного интегрирования (дифференцирования). (4б)
Примечание. Задача No1 – обязательна.
удовлетворительно – 4–8 баллов хорошо 9–11 баллов отлично более 11 баллов
1
Функции к лабораторной работе No1
√
1. F (x) = 3 sin x + 0.35x − 3.8 [2, 3]
√
2. F (x) = ex + 1 + e2x − 2 [−1, 0]
√
√
3. F (x) = 1 − x − cos 1 − x [0, 1]
√
4. F (x) = 0.4 + arctan x − x [1, 2]
5. F (x) = tan x − cot x + x [1, 2]
2 2
6. F (x) = 0.6 · 3x − 2.3x − 3 [2, 3]
7. F (x) = cos x − 2 sin x + x
2 1 1
[1, 2]
√
8. F (x) = 1 − 0.4x2 − arcsin x [0, 1]
9. F (x) = 0.1x2 − x ln x [1, 2]
10. F (x) = tan x − 1 tan3 x + 1 tan5 x − 1 [0, 0.8]
3 5 3
√
11. F (x) = arccos x − 1 − 0.3x3 [0, 1]
12. F (x) = 3x − 4 ln x − 5 [2, 4]
13. F (x) = ex − e−x − 2 [0, 1]
14. F (x) = sin(ln x) − cos(ln x) + 2 ln x [1, 3]
15. F (x) = ex + ln x − 10x [3, 4]
16. F (x) = x tan x − 1
[0.2, 1]
3
17. F (x) = 3 ln2 x + 6 ln x − 5 [1, 3]
18. F (x) = x2 − ln(1 + x) − 3 [2, 3]
19. F (x) = 2x sin x − cos x [0.4, 1]
20. F (x) = ln x − x + 1.8 [2, 3]
x2
21. F (x) = cos x − e +x−1 [1, 2]
2
22. F (x) = 1 − x + sin x − ln(1 + x) [0, 1.5]
23. F (x) = 3x − 14 + ex − e−x [1, 3]
24. F (x) = x + cos(2 + x0.52 ) [0.5, 1]
2
Запись данных в файл
Помимо перенаправления потока вывода в файл, (вроде такого:
./a.out > proga.dat) можно использовать метод, когда при исполнении программы создается файл, в который записываются данные. Пример такой программы:
...
int main(void){
...
FILE *DF;
DF = fopen(“tra.dat”,“w”);
...
for (i=1; i<=np; i++)
{
...
fprintf(DF,“%d %f %f \n”,i,a(i),b(i)); // собственно запись данных
}
fclose (DF);
}
Прежде чем считывать из некоторого файла или записывать в него, этот файл должен быть открыт с помощью функции
f open из стандартной библиотеки. функция f open берет внешнее имя, проводит некоторые обслуживающие действия и переговоры с операционной системой и возвращает внутреннее имя, которое должно использоваться при последующих чтениях из файла или записях в него. Это внутреннее имя, называемое “указателем файла” (в нашем случае DF ), фактически является указателем структуры, которая содержит информацию о файле. В этом примере tra.dat – имя файла, w – от “write” – указание на то, что в файл будем что-то записывать. Другие возможные варианты:
“r” – чтение, “r+” – чтение с дозаписью, “a” -дозапись.
Функция f close является обратной по отношению к f open;
она разрывает связь между указателем файла и внешним именем, установленную функцией f open, и высвобождает указатель файла для другого файла.
3
Построение графиков
Для отображения графической информации используется хорошо известный пакет gnuplot, позволяющий визуализировать разнообразную численную информацию, строить функции и даже создавать анимационные ролики.
Для того, чтобы запустить gnuplot необходимо:
* Открыть терминал
* В командной строке перейти в директорию, содержащую файлы с данными
* Дать команду gnuplot
Таким образом оказывается запущена интерактивная среда, где с помощью несложных команд можно строить графики. Например, для построения графика функции sin(x) необходимо ввести: plot sin(x). Откроется дополнительное окно с изображением функции.
Для отображения численных данных, содержащихся в файле, необходимо ввести:
для отображения функции точками
* plot “foo.dat”
для отображения функции линиями
* plot “foo.dat” with lines
4
Нахождение корней уравнения с заданной точностью
Метод дихотомии (метод половинного деления)
сводится к последовательному разбиению интервала пополам.
Формальный алгоритм состоит в следующем:
Если уравнение F (x) = 0, где F (x) - непрерывная на отрезке
[a, b] функция, удовлетворяющая условию F (a)F (b) < 0, для нахождения корня с точностью отрезок [a, b] делится пополам и из двух полученых выбирается тот полуинтервал, на концах которого знаки F (x) разные. Затем процесс деления повторяется до тех пор, пока длина интервала не станет меньше . Когда размер интервала оказывается меньше требуемой точности, корень считается найденным.
Метод Ньютона
Действительный корень x уравнения F (x) = 0 вычисляется методом Ньютона с помощью итерационного уравнения:
F (xk )
xk+1 = xk − F (xk )
Процесс сходится к точному значению корня, если начальное приближение x1 выбрано так, что:
2
F (x1 )F (x1 ) < |F (x1 )|
Оценка погрешности k-го приближения производится по приближенной формуле:
F (xk )F (xk ) <
В программе кроме функции f un следует использовать также функцию df un - производную исходной функции.
5
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.