Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_2_семестр.doc
Скачиваний:
2
Добавлен:
15.09.2019
Размер:
393.22 Кб
Скачать

Задания по вычислительной математике для заочников

Задания оформляются в отдельной тетради, на обложке которой кроме фамилии и номера группы должны быть указаны следующие данные:

= , = , = , = , = , = .

Здесь - номер института, год поступления, и две последние цифры номера группы, и две цифры номера студента по списку.

Так, у пятого студента группы 729111 7 = 9, = 1, = 1, = 0, = 5.

В тетради должно быть записано условие задания и его подробное решение. Если в зада­нии предполагается использовать интегрированные среды (Eureka, Scilab), то в тетради необходимо записать содержимое окон соответствующей среды (Edit, Solution – для Eureka и Editor, Scilab Command Window – для Scilab). Тексты программ на алгоритмическом языке (Pascal, Scilab) вместе с результатом решения задач в интегрированной среде (Turbo Pascal, Scilab) также следует записать в тетрадь.

Задание 1

Методом деления отрезка пополам и методом касательных (Ньютона) уточнить корень уравнения с погрешностью = 0.1

  1. 0.25(      x3 2x2 + 2.3x Nст = 0

Это же уравнение решить с помощью интегрированных сред Eureka и Scilab.

Пример выполнения задания 1: (вариант а, номер студента Nст = 55),

уравнение, которое нужно решить: 65ln xx = 0

Решение уравнения приближенными методами состоит из двух этапов. Первый этап – отде­ле­ние корня. Отделить корень уравнения f(x) = 0 – значит найти такой отрезок a b на котором содержится только один корень уравнения. Отделить корень можно графически и аналитиче­ски. Чтобы отделить корень аналитически, достаточно найти такой отрезок a b на котором выполняются три условия:

1) f(a)f(b)<0,

2) f(x) – непрерывная на отрезке a b функция,

3) f(x) монотонная на отрезке a b функция.

Эти условия – достаточные для того, чтобы на отрезке a b был отделен корень уравнения f(x) = 0.

Чтобы найти отрезок a b, на котором выполняется первое из условий, можно протабулиро­вать функцию f(x) = 65ln x x c некоторым шагом h до тех пор, пока функция не сменит знак. Это можно сделать с помощью ИС Eureka (Scilab).

Чтобы протабулировать функцию с помощью ИС Eureka, надо подать команду Graph Function, ввести с клавиатуры функцию f(x) = 65ln(x) x, подать команду List, указать первое значение аргумента (First point), например, 40, шаг (приращение аргумента) (Increment), например, 1 и количество значений аргумента (Number of value), например, 30. В результате откроется окно с таблицей значений функции в указанном интервале. Это окно можно «распахнуть» на весь экран клавишей F5. Из приведенного листинга функции видно, что смена знака происходит на отрезке 60 61:

f(60) = 65ln 6060 0.906, f(61) = 65ln 6161 – 0.111.

f(x) = 65ln x x – непрерывная функция для любых x > 0, в том числе она непрерывна и на от­резке 60 61.

Чтобы проверить монотонность функции f(x) = 65 ln x x на этом отрезке, найдем ее произ­водную f(x) = – 1/x 1. Очевидно, что для любого x > 0 y < 0, следовательно, функция f(x) = 65ln xx монотонно убывает на отрезке 60 61. Вывод: поскольку на отрезке 60 61 выполняются условия 1 – 3, корень на нем отделен.

Второй этап решения – это уточнения корня уравнения заданным методом (в нашем случае – методом деления отрезка пополам и методом касательных) с заданной погрешностью (в нашем случае = 0.1). Рассмотрим сначала метод деления отрезка пополам.

Согласно этому методу отрезок, на котором отделен корень уравнения, делят пополам и выбирают для дальнейших вычислений ту половину, на концах которой функция принимает значения разных знаков.

Составим следующую таблицу:

№ итерации

a

b

f(a)

f(x)

f(b)

1

60

60.5

61

0.91

0.40

–0.11

0.5

2

60.5

60.75

61

0.40

0.14

–0.11

0.25

3

60.75

60.88

61

0.14

0.01

–0.11

0.13

4

60.88

60.94

61

0.06

Все расчеты в таблице приведены с двумя знаками после запятой.

Пояснения к таблице.

В первой строке таблицы a = 60, b = 61 – исходный (начальный) отрезок, – его середина, f(a), f(b), f(x) – значения нашей функции f(x) = 65ln x -- x в указанных точках. Если в качестве корня взять значение x = 60.5, то погрешность, с которой мы его уточнили, равна 1 = 0.5, то есть ко­рень уравнения = 60.50.5. Поскольку 1 > = 0.1, делаем вторую итерацию. Следующий отрезок, который мы будем делить пополам, – это либо a, x, либо x, b. В нашем случае это отрезок x, b, так как f(x)f(b)<0, тогда как f(a)f(x)>0. И т.д.

После четвертой итерации погрешность 1 = 0.06 < , поэтому можно сделать вывод о том, что корень уравнения 65ln xx = 0 равен = 60.940.06.

Ответ: = 60.94 0.06

Рассмотрим теперь метод касательных. При его использовании для уточнения корня уравнения приближенное значение корня на каждой итерации вычисляют по формуле Ньютона

В качестве начального приближения выбирают тот конец отрезка [a, b], в котором выполняется условие

.

В нашем случае , и, следовательно, , но (см. выше) f(a)>0, f(b)<0, следовательно, =a. Тогда, полагая в формуле Ньютона n=1, получим

Для оценки погрешности полученного значения корня можно воспользоваться формулой

Получим Продолжая вычисления по формуле Ньютона при n=2, на второй итерации будем иметь

Так как то вычисления прекращаем. Задание выполнено.

Ответ: = 60.8909 0.0001

Чтобы решить уравнение 65ln xx = 0 на отрезке [60, 61] в ИС Eureka, достаточно в окне Edit набрать следующие строки:

65 – ln(x) x = 0

60<= x <=61

после чего с помощью клавиши Esc войти в основное меню и выполнить команду Solve. В окне Solution появится ответ:

x = 60.890916

Maximum error is 4.4764192e-13

Последняя строка означает, что если подставить полученное значение x в уравнение, то полу­чится число, отличающееся от нуля по модулю на 4.476419210-13.

Ответ: = 60.890916

Напоминаем, что содержимое окон Edit и Solution во всех заданиях нужно переписывать в тетрадь.

Покажем, как выполнить задание 1 с помощью интегрированной среды Scilab (основные принципы работы с Scilab изложены на с.23 – 38; на с.39 приведен краткий перечень некоторых математических функций Scilab, используемых при выполнении заданий).

Для решения уравнений, в том числе трансцендентных, в Scilab применяют функцию fsolve(x0,f), где x0 - начальное приближение, f - функция, описывающая левую часть уравнения f(x)=0.

Для нахождения отрезка [a, b], на котором отделен корень данного уравнения, построим график функции y=65-lnx-x.

Откроем окно редактора системы Scilab SciPad командой scipad();(или выполнив пункт меню Editor, или нажав пиктограмму с изображением чистого листа) и наберем в нем следующие строки:

clc

xbasc()

function y=f(x)

// определение функции, входящей в уравнение

y= 65-log(x)-x;

endfunction

x=50:0.1:70; plot(x, f(x)); xgrid()

После запуска программы (Execute/Load into Scilab) откроется графическое окно системы (Scilab Graphic(0)) с графиком функции y=65 – ln x – x на отрезке [50, 70], из которого видно, что корень нашего уравнения лежит на отрезке [60, 70]. Для уточнения значения корня наберем в командном окне системы Scilab строку

-->x0=60;x1= fsolve(x0,f)

и нажмем Enter. В итоге в командном окне появится искомый результат

x1 =

60.890916

Ответ: = 60.8909

Содержимое окна редактора и командного окна системы Scilab необходимо переписать в тетрадь.