Курсовая работа: Решение уравнений и интерполяция функций

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Нелинейное уравнение:

Для приблизительной оценки корней нелинейного уравнения построим график функции с помощью программы Matlab (рисунок 3).

Рисунок 3 - График нелинейной функции y = f(x)

Из рисунка 3 видно, что график функции пересекает ось абсцисс в точке расположенный на отрезке [4;4.5].

С помощью программы Matlab напишем код для решения нелинейного уравнения методом простых итераций.

Листинг программы:

x = 3:0.1:5;

y = 4*atan(x)-5.4;

plot(x,y);

grid on;

% Метод простых итераций

eps = 1e-3;%точность

x0 = 4;%начальное приближение

% константа, зависящая от знака производной ф-ции в х0

f1 = 1;

iter = 0; %счетчик шагов

x = x0;

razn = 100; %начальное значение разности

while abs(razn)>eps

xn = x - f1*(4*atan(x)-5.4);

razn=xn-x;

x=xn;

iter=iter+1;

end

x

iter

razn

Рисунок 4 - Результат работы программы

Результат работы программы представлен на рисунке 4. В данном случае итерационный процесс сходится; корень уравнения x= 4.4515 найден с заданной точностью за 22 итерации, погрешность решения составляет 8.8477e-04

1.4 Решение нелинейного уравнения методом Ньютона

Нелинейное уравнение:

(13)

Для приблизительной оценки корней нелинейного уравнения (13) построим график функции с помощью программы MatLab (рисунок 5).

Рисунок 5 - График нелинейной функции y = f(x)

График функции пересекает ось абсцисс в точке, находящаяся на отрезке [0;4].

С помощью программы Matlab напишем код для решения нелинейного уравнения методом Ньютона.

Листинг программы:

x=0:0.01:4;

y=2*log(x+4)-3;

plot(x,y);

grid on;

% ---- Uravnenie ---- %

eps=0.001; %точность

kmax=50; %максимальное количество итераций

x=0; %начальное приближение

[F F1]=fun1(x); %расчет значения ф-ции с данным значением

[x1,D]=Newton(x,F,F1); %первый расчет для дальнейшего приближения

k=0;

while (abs(D)>eps)&&(k<kmax)

x=x1;

[x1,D]=Newton(x,F,F1);

k=k+1;

end

disp('Root:');

disp(x);

disp('Шаги:');

disp(k);

function [x1, D] = Newton (x, F, F1)

[F F1]=fun1(x);

x1=x-(F/F1);

D=F/F1;

end

function [F F1] = fun1(x)

F=2*log(x+4)-3; %расчет ф-ции

if nargout>1

F1= 2/(x+4); %1 производная

end

Рисунок 6 - Результат работы программы

Результат работы программы представлен на рисунке 6. Корень уравнения x= 0,4816 найден с заданной точностью за 2 итерации.

Были рассмотрены два метода решения нелинейных уравнений: Ньютона и простых итераций. Метод простых итераций является простейшим для нахождения корней нелинейных уравнений. Он уступает в скорости сходимости методу Ньютона, который в свою очередь, модифицированный метод простых итераций.

2. Интерполяция функций

Пусть функция  задана таблицей своих значений  на интервале :

(14)

Задача интерполяции - найти функцию , принимающую в точках  те же значения .

Условие интерполяции:

(15)

При этом предполагается, что среди значений  нет одинаковых. Точки  называют узлами интерполяции.

Если  ищется только на отрезке - то это задача интерполяции, а если за пределами первоначального отрезка, то это задача экстраполяции.

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

- экстраполяция - определение значений функции за пределами первоначально известного интервала.

- аппроксимация - определение в явном виде параметров функции, описывающей распределение точек.

Задача нахождения интерполяционной функции  имеет много решений, так как через заданные точки можно провести бесконечно много кривых, каждая из которых будет графиком функции, для которой выполнены все условия интерполяции. Для практики важен случай аппроксимации функции многочленами:

(16)

При этом искомый полином называется интерполяционным полиномом.

При построении одного многочлена для всего рассматриваемого интервала , для нахождения коэффициентов многочлена необходимо использовать все уравнения системы (16). Данная система содержит  уравнение, следовательно, с ее помощью можно определить  коэффициент. Поэтому максимальная степень интерполяционного многочлена , и многочлен принимает вид:

(17)

2.1 Локальная и глобальная интерполяция

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

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

Если функция  интерполируется на отрезке  с помощью единого многочлена для всего отрезка, то такую интерполяцию называют глобальной. В случае локальной интерполяции на каждом интервале строится отдельный интерполяционный полином невысокой степени.

2.2 Кусочно-линейная интерполяция

Простейшим и часто используемым видом локальной интерполяции является линейная (или кусочно-линейная) интерполяция. Она заключается в том, что узловые точки соединяются отрезками прямых (Рис.3.1), то есть через каждые две точки и проводится полином первой степени:

 , (18)

Коэффициенты и разные на каждом интервале, и находятся из выполнения условий интерполяции на концах отрезка:

(19)

Из системы уравнений (19) можно найти коэффициенты:

(20)

При использовании кусочно-линейной интерполяции сначала нужно определить интервал, в который попадает значение x, а затем подставить его в выражение (18), используя коэффициенты для данного интервала.

Рисунок 7 - Кусочно-линейная интерполяция

2.3 Кусочно-квадратичная интерполяция

В случае квадратичной интерполяции, для каждых трех узловых точек строится уравнение параболы:

, (21)

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

(22)

Из системы уравнений (22) можно найти коэффициенты:

Рисунок 8 - Кусочно-квадратичная интерполяция

2.4 Кусочно-квадратичная интерполяция функции по таблице значений

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

Таблица 1 - Экспериментальные данные для интерполяции

5

Экспериментальные точки

Точки вычисления f(x)

1

x

-8,5

-6

-3,5

-1,5

0,5

2,5

4,5

6

8

10

-8

-7

-5

-0,5

2

3

7

9

y

-5

3,5

6,5

0,5

-3

0

1,25

0,25

-0,5

0

2

x

0,5

2

4

6,5

8

10,5

15

18

19

1

1,5

5

7,5

11

13

16,5

y

1,5

7

10,5

11,25

10

8,5

8

8

8

С помощью программы Matlab напишем программу для интерполяции.

Листинг программы:

x = [-8.5 -6 -3.5 -1.5 0.5 2.5 4.5 6 8 10];

y = [-5 3.5 6.5 0.5 -3 0 1.25 0.25 -0.5 0];

inter (x,y);

disp(' x y(x)')

xy = [-8 -7 -5 -0.5 2 3 7 9];

XY=[];

for i=1:length(xy)

XY(i) = dots (x, y, xy(i));

disp([xy(i) XY(i)])

end

xx = [0.5 2 4 6.5 8 10.5 15 18 19];

yy = [1.5 7 10.5 11.25 10 8.5 8 8 8];

inter (xx, yy);

disp(' xx yy(x)')

xxyy = [1 1.5 5 7.5 11 13 16.5];

XXYY=[];

for i=1:length(xxyy)

XXYY(i) = dots (xx, yy, xxyy(i));

disp([xxyy(i) XXYY(i)])

end

function [] = inter(x,y)

dxi = 0.05; % новый мелкий шаг х

% рисуем график

plot(x,y,'or')

grid on;

hold on

for i = 1:length(x)-2

% находим коэффициенты для уравнения параболы по 3 точкам

a = ((y(i+2) - y(i))*(x(i+1) - x(i)) - (y(i+1) - y(i))*(x(i+2) - x(i)))/...

((x(i+2)^2 - x(i)^2)*(x(i+1) - x(i)) - (x(i+1)^2 - x(i)^2)*(x(i+2) - x(i)));

b = (y(i+1) - y(i) - a*(x(i+1)^2 - x(i)^2)) / (x(i+1) - x(i));

c = y(i) - (a*x(i)^2 + b*x(i));

p=[a b c];%вектор коэффициентов

if (i==length(x)-2)

t1 = x(i):dxi:x(i+2);

else

t1 = x(i):dxi:x(i+1);

end

f1 = p(1)*t1.^2+p(2)*t1+p(3);

plot(t1,f1)

end

end

Графики для первой и второй функции, построенные с помощью программы Matlab, представлены на рисунке 8.

а б

Рисунок 8 - Интерполяция для первой (а) и второй (б) функции

Значения функции в расчетных точках приведены в таблице 2. Расчеты были произведены функцией dots.

Листинг программы:

function [Z] = dots( x,y,z )

i=1;

while(z>x(i))%находим первое значение, которое больше нашей расчетной точки

i=i+1;

end

if (i == length(x))

Z = y(i-1)*(z-x(i))/(x(i-1)-x(i))+y(i)*(z-x(i-1))/(x(i)-x(i-1));

else

Z = y(i-1)*((z-x(i))*(z-x(i+1)))/((x(i-1)-x(i))*(x(i-1)-x(i+1)))+...

y(i)*((z-x(i-1))*(z-x(i+1)))/((x(i)-x(i-1))*(x(i)-x(i+1)))+...

y(i+1)*((z-x(i-1))*(z-x(i)))/((x(i+1)-x(i-1))*(x(i+1)-x(i)));

end

end

Таблица 2 - Значения функции в расчетных точках

0

Точки вычисления f(x)

1

x

-8

-7

-5

-0.5

2

3

7

9

y

-2.86

0.76

6.1

-2.0625

-0.5859

0.5893

-2.813

-0.25

2

x

1

1.5

5

7.5

11

13

16.5

y

3.6072

5.4405

11.225

10.3875

8.4148

8.1481

8

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

3. Решение обыкновенных дифференциальных уравнений

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

Методы их решения подразделяются на два класса:

аналитические методы, в которых решение получается в виде аналитических функций;

численные (приближенные) методы, где искомые интегральные кривые получают в виде таблиц их численных значений.

Применение аналитических методов позволяет исследовать полученные решения методами математического анализа и сделать соответствующие выводы о свойствах моделируемого явления или процесса. К сожалению, с помощью таких методов можно решать достаточно ограниченный круг реальных задач. Численные методы позволяют получить с определенной точностью приближенное решение практически любой задачи.

Решить дифференциальное уравнение

(23)

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

.

3.1 Метод Эйлера

Этот метод является сравнительно грубым и применяется в основном для ориентировочных расчетов. Однако идеи, положенные в основу метода Эйлера, являются исходными для ряда других численных методов.

Пусть дано обыкновенное дифференциальное уравнение (ОДУ) с начальными условиями (задача Коши):

(24)

и удовлетворяются условия существования и единственности решения.

Требуется найти решение задачи Коши (24) на отрезке . Найдем решение в виде таблицы . Для этого разобьем отрезок на n равных частей и построим последовательность

,

где - шаг интегрирования.

Проинтегрируем исходное уравнение на отрезке :

Полученное соотношение можно переписать как

. (25)

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

.

Подставляя полученный результат в формулу (25), получим основную расчетную формулу метода Эйлера:

. (26)

Вычисление значений осуществляется с использованием формулы (26) следующим образом. По заданным начальным условиям и y0, полагая в выражении (26), вычисляется значение

. (27)

Далее, определяя значение аргумента x по формуле , используя найденное значение y1 и полагая в формуле (26) , вычисляем следующее приближенное значение интегральной кривой как

. (28)

Поступая аналогичным образом при , определяем все остальные значения yk, в том числе последнее значение