метода, MCad6
.0.pdfДля нахождения корней полинома, т.е. для решения
уравнения a |
n |
x n + a |
n−1 |
x n−1 |
+... + a x + a |
0 |
= 0 используется |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|||
функция polyroots(v), где v - вектор коэффициентов |
||||||||||||||||||||
полинома. vT = (a |
, a ,..., a |
n−1 |
, a |
n |
). Функция возвращает вектор |
|||||||||||||||
|
|
|
|
|
|
|
|
|
0 |
|
1 |
|
|
|
|
|
|
|||
элементами которого являются корни полинома. |
||||||||||||||||||||
Пример. Найти все корни уравнения x3 + 2x 2 − x − 2 = 0 |
||||||||||||||||||||
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
v |
|
|
|
|
|
1 |
- определяем вектор коэффициентов |
|||||||||||||
|
|
|
|
|
||||||||||||||||
|
|
|
|
2 |
||||||||||||||||
|
|
|
|
|||||||||||||||||
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
polyroots( v) |
|
x = |
|
2 |
|
- вектор корней |
|||||||||||
|
|
|
|
|
||||||||||||||||
|
|
|
|
1 |
|
|||||||||||||||
|
|
|
|
|
||||||||||||||||
|
|
|
1
Пример. Найти все корни уравнения x3 −10x + 2 = 0
|
|
|
|
2 |
|
|
|
|
|
|
|
|
v |
|
|
|
|
10 |
x |
|
polyroots( v) |
x = |
|
|
3.258 |
|
|
|
|
|
|
|||||||
|
|
|
|
|
0.201 |
|||||||
|
|
|
|
|||||||||
|
|
|
0 |
|
||||||||
|
|
|
|
|||||||||
|
|
|
||||||||||
|
|
|
|
|
|
|
|
3.057 |
||||
|
|
|
|
1 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
1.2. Решение систем уравнений
Пусть необходимо решить систему уравнений
f1 (x1 , x2 ,..., xn ) = 0 f 2 (x1 , x2 ,..., xn ) = 0
........................
f n (x1 , x2 ,..., xn ) = 0
Процедура решения в пакете Mathcad имеет следующий вид.
x1 := x10 |
|
|
x2 := x20 |
- задаются начальные значения для всех |
|
.............. |
||
|
||
xn := xn0 |
|
переменных системы.
Given - ключевое слово.
f1 (x1 , x2 ,..., xn ) = 0
f 2 (x1 , x2 ,..., xn ) = 0 |
|
- записываются уравнения системы. |
|
........................ |
|
f n (x1 , x2 ,..., xn ) = 0 |
|
V:= Find(x1,x2,...,xn) V= - находится решение системы |
|
уравнений в виде |
вектора |
значений соответствующих |
|
переменных. |
|
Здесь Find(x1,x2,...,xn) |
- функция |
которая возвращает |
решение системы уравнений в виде |
вектора значений |
соответствующих переменных если оно существует.
При записи системы уравнений, после ключевого слова Given, при необходимости можно указывать ограничения на возможные значения переменных, используя символы £, ³, > и >. При этом недопустимы ограничения со знаком ¹ и неравенства вида a<b<c.
Если система уравнений является нелинейной, то найденное решение может быть не единственным и зависеть от начальных значений переменных.
Пример. Решить систему уравнений:
x 2 − y = 1
x + y = 2
y1( x) |
x2 |
1 |
y2( x) |
2 |
x |
|
x |
3 , |
2.9.. 2 |
|
|
|
|
|
|
|
|
10 |
|
|
y1( x) |
|
|
|
5 |
|
|
|
|
|
|
|
|
|
y2( x) |
|
|
|
|
|
|
|
|
4 |
2 |
0 |
|
2 |
|
|
|
|
5 |
|
|
|
|
|
|
x |
|
|
Строим графики линий y1(x), y2(x) и определяем примерные координаты точек их пересечения для задания начальных приближений для переменных x и y.
x |
|
|
|
|
|
|
2 |
|
y |
|
5 |
|
- начальные приближения для поиска |
||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||
Given |
|
|
|
|
|
первого решения |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
x2 |
|
|
|
|
|
y |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
x |
|
|
|
|
|
y |
|
|
2 |
|
|
|
|
|
|
2.303 |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
V |
|
|
|
|
|
|
Find( x, y) |
V = |
|
|
|
|
- найдено первое решение |
||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
4.303 |
|
|||||||||||||||
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
2 |
|
|
y |
|
5 |
- начальные приближения для поиска |
|||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
Given |
|
|
|
|
второго решения |
|||||||||||
|
|
|
|
|
|
|
||||||||||
x2 |
|
|
|
|
y |
|
|
1 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||||
x |
|
|
|
|
|
y |
|
2 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||||||
W |
|
|
|
|
|
Find( x, y) |
W = |
|
- найдено второе решение |
|||||||
|
|
|
|
|
1.303 |
|||||||||||
|
|
|
|
|
0.697 |
|||||||||||
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для решения систем уравнений в пакете Mathcad помимо функции Find(x1,x2,...,xn) предусмотрена еще одна функция Minerr(x1,x2,...,xn). Различие между ними состоит в следующем. Функция Find(x1,x2,...,xn) работает таким образом что, если в результате поиска решения не может быть получено дальнейшее уточнение текущего приближения к решению, она возвращает сообщение об ошибке “ решение не найдено”. Функция Minerr(x1,x2,...,xn) в этом случае возвращает это приближение. Найденное
приближение будет в некотором смысле наилучшим образом удовлетворять уравнениям системы. Если же система уравнений имеет решение, то функция Minerr(x1,x2,...,xn) возвратит тот же результат что и функция Find(x1,x2,...,xn). Пример. Решить систему уравнений:
x 2 + y 2 = 1
( x − 3) 2 + y 2 = 1
Данная система уравнений не имеет точного решения поскольку окружности, определяемые уравнениями системы не пересекаются.
Для поиска приближенного решения воспользуемся функцией Minerr(x1,x2,...,xn)
x |
|
|
0 |
|
|
|
y |
|
|
1 |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||
Given |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
x2 |
|
|
|
|
y2 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
( x |
|
|
|
3)2 |
|
|
|
|
y2 |
|
1 |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
x0 |
|
|
|
|
|
|
|
Minerr( x, y) |
|
x0 |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
= |
1.5 |
|
|
||||||||||||
y0 |
|
|
|
|
|
|
|
|
y0 |
|
|
4 |
|||||||||||
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7.215 10 |
Найдены координаты точки (x0,y0), лежащей на равном расстоянии от каждой из окружностей
Для решения систем линейных уравнений можно наряду с рассмотренным выше способом можно воспользоваться их векторно-матричным представлением.
Пример. Решить систему линейных уравнений:
2x1 + 3x2 − x3 = 5 |
|||||
|
− 4x2 |
+ x3 = −4 |
|||
x1 |
|||||
3x + 5x |
2 |
− 2x |
3 |
= 7 |
|
|
1 |
|
|
2 3 1
A 1 4 1
3 5 2
- матрица |
|
|
|
|
5 |
- вектор правых |
|
B |
|
|
|
|
|
||
|
|
|
|
4 |
частей уравнений |
||
коэффициентов. |
|
|
|
|
|||
|
|
|
|||||
|
|
|
|
7 |
системы. |
||
|
|
|
|
|
В матричной записи исходная система принимает: AX=B
|
1 |
|
||
X |
|
A 1 .B X = |
2 |
- найден вектор решений. |
|
||||
|
||||
|
3 |
|
1.Дифференциальные уравнения и системы
1.1. Дифференциальные уравнения и системы первого порядка
Рассмотрим дифференциальное уравнение(ДУ) первого порядка
dy = f ( x, y) dx
Для решения этого уравнения можно воспользоваться известными методами Эйлера, Рунге-Кутта или использовать встроенные функции пакета Mathcad.
Пример. Выполнить численное интегрирование методом Эйлера дифференциального уравнения:
dy + 2xy = 2x 2 sin x dx
при начальном условии y(0)=1 на отрезке x [0,2] с шагом
0,2.
Запишем исходное уравнение в виде:
dy = −2xy + 2x 2 sin x dx
Реализация алгоритма метода Эйлера в пакете Mathcad может иметь вид
f( x, y) |
|
2.x.y |
2.x2 .sin( x) |
x |
0 |
|
y |
1 |
|
|
|
|
|||
|
|
|
|
|
|
|
0 |
|
|
0 |
|
|
|
|
|
x1 |
0 |
h |
0.2 |
|
N |
20 |
|
|
|
|
|
|
|
|
|
i 1 .. N |
|
x |
x |
1 |
h |
y |
y |
1 |
h.f x |
1 |
, y |
1 |
|
||
|
|
|
i |
i |
|
i |
i |
|
i |
i |
|
||||
|
|
|
2 |
|
|
|
|
|
|
|
|
|
График зависимости |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yi |
y xi |
|
yi |
|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xi |
|
|
|
|
|
|
|
|
|
|
|
|
дискретные значения решения y=y(x) |
|
В пакете Mathcad для решения ДУ и систем ДУ вида
dy |
0 |
|
= |
f0 (x, y0 , y1 ,..., yn ) |
|
|
|
|
|||
|
|
|
|||
dx |
|
|
|||
dy1 |
= |
|
|||
|
|
|
|
f1 (x, y0 , y1 ,..., yn ) |
|
|
|
|
|||
dx |
|
|
....................................... |
|||||||||
|
|
|
|
|
|
|
|
||
dyn |
= f |
|
(x, y |
|
, y ,..., y |
|
) |
||
|
|
n |
0 |
n |
|||||
|
|
1 |
|
||||||
dx |
|
|
|
|
|
|
|
существует встроенная функция
rkfixed(V,x1,x2,Npoints,D), где
V- вектор начальных условий размерности n (n - порядок ДУ или число уравнений в системе);
x1,x2 - граничные точки интервала на котором ищется решение дифференциальных уравнений (начальные условия, заданные в векторе V, -это значение решения в точке x1;
Npoints - число точек ( не считая начальной точки ), в которой ищется решение;
D(x,V)- функция, которая возвращает значение в виде вектора из n элементов, содержащих первые производные неизвестных функций.
Функция rkfixed возвращает матрицу первый столбец которой содержит точки в которых ищется решение, второй столбец содержит значения найденного решения в соответствующих точках для первого уравнения системы, второй столбец - для второго уравнения системы и т.д. Пример1. Выполнить численное интегрирование дифференциального уравнения:
dy = y cos x + 2 sin 2x dx
при начальном условии y(0)=1 на отрезке x [0,1]
x1 |
0 |
x2 |
2 |
|
|
- граничные точки интервала на котором |
||
|
|
|
|
|
|
ищется решение. |
|
|
y |
1 |
|
|
|
|
- начальное значение функции y(x): y |
y( x1) . |
|
0 |
|
|
|
|
|
|
0 |
|
Np |
20 |
|
|
|
|
- число точек в которых ищется решение. |
||
|
|
|
|
|
|
|
||
D( x, y) |
y.cos( x) |
2.sin( 2.x) |
- в этом выражении y есть вектор |
|
||||
|
|
|
|
|
|
начальных условий, содержащий |
|
|
|
|
|
|
|
|
один элемент y . |
|
|
|
|
|
|
|
|
|
0 |
|
Z rkfixed( y, x1, x2, Np , D) |
- матрица, столбцы которой содержат |
|
||||||
|
|
|
|
|
|
дискретный набор значений |
|
|
|
|
|
|
|
|
аргумента и искомой функции. |
|
|
N |
length( Z<0 > ) |
1 |
i |
1 .. N |
|
|
||
|
6 |
|
|
|
|
|
Z<0 > -дискретный набор |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
значений аргумента x, |
|
|
4 |
|
|
|
|
|
Z<1 > -дискретный набор |
|
Z<1 > |
|
|
|
|
|
|
||
i |
|
|
|
|
|
значений функции y |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
0 |
0.5 |
1 |
|
1.5 |
2 |
|
|
|
|
|
Z<0 |
> |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
дискретные значения решения y=y(x) |
|
Пример2. Выполнить численное интегрирование дифференциального уравнения:
dy = x cos y + 2 sin 2 y dx
при начальном условии y(0)=1 на отрезке x [0,1]
x1 |
0 |
x2 |
2 |
|
|
- граничные точки интервала на котором |
|
|
|
|
|
|
|
ищется решение. |
|
y |
1 |
|
|
|
|
- начальное условие для функции y(x). |
|
0 |
|
|
|
|
|
|
|
Np |
20 |
|
|
|
|
- число точек в которых ищется решение. |
|
|
|
|
|
|
|
||
D( x, y) |
x.cos( y) |
|
2.sin( 2.y) |
- поскольку здесь y- вектор, то |
|||
|
|
|
|
|
|
необходимо использовать |
|
|
|
|
|
|
|
оператор векторизации. |
|
Z |
rkfixed( y, x1, x2, Np , D) |
- матрица, столбцы которой содержат |
|||||
|
|
|
|
|
|
дискретный набор значений |
|
|
|
|
|
|
|
аргумента и искомой функции. |
|
N |
length( Z<0 > ) |
1 |
i |
1 .. N |
|
||
|
1.6 |
|
|
|
|
|
Z<0 > -дискретный набор |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
значений аргумента x, |
|
1.4 |
|
|
|
|
|
Z<1 > -дискретный набор |
Z<1 > |
|
|
|
|
|
|
|
i |
|
|
|
|
|
значений функции y |
|
|
|
|
|
|
|
|
|
|
1.2 |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
0 |
0.5 |
|
1 |
1.5 |
2 |
|
|
|
|
|
Z<0 > |
|
|
|
|
|
|
|
i |
|
|
|
|
|
дискретные значения решения y=y(x) |
Пример3. Выполнить численное интегрирование системы дифференциальных уравнений:
dy |
0 |
|
= y1 + 1 |
|
|
|
|
||
|
|
|
||
dx |
|
|||
dy1 |
= − y0 − 1 |
|||
|
|
|
|
|
dx |
|
при начальных условиях y0(0)=1 y1(0)=1 на отрезке x [0,15]