Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_число-2010-РЮС-Кор.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.43 Mб
Скачать

Решение уравнений.

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

(%i1) 3*x^3-2*x^2+5*x-8=0;

(%o1)

или

(%i1) eq1:3*x^3-2*x^2+5*x-8=0;

(%o1) .

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

1) realroots(Уравнение) — ищет действительные корни полиномиального уравнения с действительными коэффициентами (Меню «Уравнения -> Корни полинома (вещественные)»):

(%i4) realroots(eq1);

(%o4)

2) nroots(Уравнение,min,max) — находит количество корней полиномиального уравнения с действительными коэффициентами на отрезке [min,max]:

(%i5) nroots(eq1,0,inf);

(%o5) 1.

3) allroots(Уравнение) — ищет все корни полиномиального уравнения (Меню «Уравнения -> Корни полинома»):

(%i6) allroots(eq1);

(%o6) [x=1.176534437353076,

x=1.483762909456726*%i-0.2549338853432,

x=-1.483762909456726*%i-0.2549338853432]

4) solve([Список уравнений], [Список переменных]) (Меню «Уравнения -> Решить...»):

(%i10) solve([eq1],[x]);

5) find_root(Уравнение, Переменная, Левая граница,Правая граница) — выполняет поиск корня на указанном отрезке методом деления отрезка пополам (Меню «Уравнения -> Решить численно...»):

(%i26) find_root(x^2-1=sin(x),x,0,2);

(%o26) 1.409624004002596

Вычисление пределов, производных, интегралов доступно в Меню «Анализ». Например, вычислим первый замечательный предел («Анализ -> Найти предел»):

(%i28) limit(sin(x)/x, x, 0);

(%o28) 1

Для вычисления производной достаточно использовать пункт меню «Анализ -> Дифференцировать», который скрывает в себе функцию

diff(Выражение, Переменная), например:

(%i1) f:(x^2)*exp(-x^2);

(%o1)

(%i2) diff(f, x);

(%o2) .

Для вычисления интеграла нужно использовать пункт меню «Анализ -> Интегрировать». Например, вычислим интеграл :

(%i4) y:a*x^2;

(%o4)

(%i5) integrate(%, x, 0, 1);

(%o5) .

Условные выражения и циклы.

В языке системы Maxima заложены основные исполнимые операторы, которые есть в любом языке программирования. Синтаксис условного оператора совпадает с аналогичным оператором языка Паскаль и может быть проиллюстрирован примерами:

sgn: if x>=0 then 1 else -1;

if x>=0 then y:1 else y:-1

Допустима также сокращённая форма оператора

a: if x>0 then 55;

Оператор цикла может задавиться несколькими способами в зависимости от того, известно ли заранее необходимое количество повторений тела цикла. Его синтаксис рассмотрим на примере вычисления факториала числа 5:

1 способ

p:1$

for k:1 thru 5 step 1 do p:p*k$

display(p);

2 способ

p:1$

for k:1 while k<=5 step 1 do p:p*k$

display(p);

3 способ

p:1$

for k:1 unless k>5 step 1 do p:p*k$

display(p);

4 способ

p:1$

for k:1 next k+1 thru 5 do p:p*k$

display(p);

Если шаг равен 1, то «step 1» можно опустить.

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

block([a,b,c], a:1, b:a+1, c:b*2, c:c*5);

Вначала располагается список локальных переменных блока [a,b,c] (может быть пустым), далее — набор операторов. Значением блока является значение последнего его оператора. Допускается использовать упрощённый вид блока:

(x:1, x:x+5, b:x)