Файл: Вычислительный эксперимент и методы вычислений.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.04.2021

Просмотров: 733

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

> mdp(0.000001,6.0,6.5);

6.236101151

> mdp(0.000001,3.0,3.5);

3.253282547

2.7.2.

Метод хорд

> restart;
> hord:=proc(eps,a,b)
# eps — точность, с которой необходимо вычислить корни уравнений;
# a,b — границы отрезка, в котором находится один корень

local i,x0,x1,l,r;

# i — переменная цикла
# x0,x1 — два последовательных приближения к точному решению
# l,r — концы отрезка
# задаем левую и правую границы отрезка, который содержит корень

l:=a; r:=b;

# вычисление первого приближения к корню

x0:=l-(f(l)*(r-l))/(f(r)-f(l));

if f(x0)<>0 then

#переопределение границ отрезка

if f(l)*f(x0)<0 then r:=x0 else l:=x0 end if

else x0:=evalf(x0); print(x0) end if;

# вычисление второго приближения к корню

x1:=l-(f(l)*(r-l))/(f(r)-f(l));
for i from 1 while abs(x1-x0)>=eps do

if f(x1)<>0 then

# переопределение границ отрезка

if f(l)*f(x1)<0 then r:=x1 else l:=x1; end if

else x1:=evalf(x1); print(x1) end if;

x0:=x1;

# вычисление последующего приближения к корню

x1:=l-(f(l)*(r-l))/(f(r)-f(l));
end do;
x1:=evalf(x1); print(x1);
end proc;

# задаем функцию корни которой необходимо найти
> f:=x1-> x1ˆ 3-sin(x1);

11


background image

# построение графика функции, для локализации корня функции

графическим способом

> plot(f(x),x=-1..1);

Рис. 5. График функции

f

(

x

) =

x

1

3

sin

x

1

Проверим работу процедуры
> hord(0.0001,-0.2,0.3);

0.

> hord(0.0001,0.8,1.0);

0.9286243615

> hord(0.0001,-1.0,-0.8);

-0.9286243615

2.7.3.

Метод Ньютона

> restart;
> newt:=proc(a,eps)
# a — левая граница отрезка, в котором находится один корень
# eps — точность, с которой необходимо вычислить корни уравнений

local i,x0,x1,df,y;

# i — переменная цикла
# x0, x1 — два последующих приближения к корню
# df — производная функции

f

(

x

) = 0

# y — переменная в уравнении производной от функции

f

(

x

)

# в качестве первого приближения к корню выбирается левая грани-

ца отрезка

12


background image

x0:=a;

# нахождение производной функции в точке

df:=y->subs(x=y,diff(f(x),x));
x1:=evalf(x0-f(x0)/df(x0)); # второе приближение к корню
for i from 1 while abs(x1-x0)<eps do

x0:=x1;

# вычисление последующих приближений к корню

x1:=x0-f(x0)/df(x0);

end do;
x1:=evalf(x1); # вывод результата
end proc;

Зададим функцию корни которой необходимо найти
> f:=x-> exp(x)*xˆ 3-cos(x)*sin(x);
> plot(f(x),x=-2..1); # построение графика функции, для локализа-

ции корней функции графическим способом

Рис. 6. График функции

f

(

x

) =

x

3

e

x

cos

x

sin

x

Проверим работу процедуры
> newt(-1.1,0.0001);

-1.071336962

> newt(-0.1,0.0000001);

0.0031947103

> newt(0.5,0.00001);

0.7378792875

13


background image

3.

Аппроксимация функций

3.1.

Постановка задачи

Пусть некоторая величина

y

является функцией аргумента

x

, но яв-

ная связь между

y

и

x

неизвестна (либо известная зависимость

y

=

f

(

x

)

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

{

x

i

, y

i

}

, требуется же по-

лучить значения

y

в других точках, отличных от узлов

x

i

. Эта проблема

решается в задаче о приближении (аппроксимации) функции: функцию

f

(

x

)

, явный вид которой неизвестен, требуется приближенно заменить

некоторой функцией

ϕ

(

x

)

(наз. аппроксимирующей), так чтобы откло-

нение от

f

(

x

)

в заданной области было наименьшим. Построенная таким

образом аппроксимация называется точечной (примеры: интерполирова-
ние, среднеквадратичное приближение и т.д.)

Одним из основных типов точечной аппроксимации является интер-

полирование: для заданной функции

f

(

x

)

строится интерполирующая

функция

ϕ

(

x

)

, принимающая в заданных точках

x

i

те же значения

y

i

,

что и функция

f

(

x

)

:

ϕ

(

x

i

) =

y

i

,

i

= 0

,

1

, ... , n

(24)

причем

x

i

6

=

x

k

при

i

6

=

k

,

x

i

– узлы интерполяции.

Интерполирующая функция может строиться сразу для всего рас-

сматриваемого интервала

x

– глобальная интерполяция, или отдельно

для разных частей этого интервала – кусочная (локальная) интерполя-
ция. Если полученная функция

ϕ

(

x

)

применяется для нахождения значе-

ния функции

f

(

x

)

за пределами отрезка, содержащего узлы, то говорят

об экстраполяции.

Рассмотрим использование в качестве функции

ϕ

(

x

)

интерполяцион-

ного многочлена

ϕ

(

x

) =

P

m

(

x

) =

a

0

+

a

1

x

+

a

2

x

2

+

...

+

a

m

x

m

.

(25)

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

n

+ 1

уравне-

ний системы (24), что позволяет найти

n

+1

коэффициент, откуда следу-

ет, что максимальная степень интерполяционного многочлена –

m

=

n

:

P

n

(

x

) =

a

0

+

a

1

x

+

a

2

x

2

+

...

+

a

n

x

n

.

(26)

14


background image

Подставляя (26) в (24) получаем:

a

0

+

a

1

x

0

+

a

2

x

2

0

...

+

a

n

x

n

0

=

y

0

a

0

+

a

1

x

1

+

a

2

x

2

1

...

+

a

n

x

n

1

=

y

1

...

(27)

a

0

+

a

1

x

n

+

a

2

x

2

n

...

+

a

n

x

n

n

=

y

n

(27) – система линейных алгебраических уравнений относительно неиз-
вестных коэффициентов

a

i

. Определитель такой системы отличен от ну-

ля, если среди узлов

x

i

нет совпадающих. Следовательно, в этом случае

система (27) имеет единственное решение. Решив систему (27), построим
интерполяционный многочлен. Такой метод построения носит название
метода неопределенных коэффициентов.

Недостатки метода:

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

Другой способ – подбор наиболее простой аппроксимирующей функ-

ции, график которой проходит максимально близко от узлов.

Мера отклонения функции

ϕ

(

x

)

от заданной функции

f

(

x

)

:

S

=

n

X

i

=0

|

ϕ

(

x

i

)

y

i

|

2

.

(28)

Метод наименьших квадратов состоит в подборе аппроксимирующей функ-
ции так, чтобы

S

было наименьшим.

3.2.

Интерполирование

Рис. 7. КЛИ

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

КЛИ состоит в том, что заданные точки

(

x

i

, y

i

)

соединяются прямолинейными отрезка-

ми, и функция

f

(

x

)

приближается ломанной с

вершинами в узлах. Всего имеется

n

интервалов

(

x

i

1

, x

i

)

, для каждого из них интерполяцион-

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

Например, для

i

-го интервала уравнение

прямой, проходящей через точки

(

x

i

1

, y

i

1

)

и

(

x

i

, y

i

)

имеет вид:

15