Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ_2012 / ЧМ_Maxima_Excel / ЧМ_Excel_Maxima.pdf
Скачиваний:
198
Добавлен:
09.06.2015
Размер:
1.41 Mб
Скачать

Реализация в MAX I M A

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

написать файл c исходным кодом для MAXIMA нужно:

1. В любом текстовом редакторе написать код программы;

2.Задать расширение файла “.m a c”;

3.Открыть командный интерпретатор w M a x i m a ;

4.Выполнить в открывшейся командной строке команду : lo a d (“pa t h ”),

где p at h – полный путь до файла с кодом программы плюс имя файла с расширением

“.m a c ” (например: loa d (“C :/lab a 3/so p r g r a d .m a c ”)).

Погрешность результата численного решения задач

Задание 1-a

Определить число верных знаков приближённого числа, если известна абсолютная погрешность:

x=1.609, Ax=0.1*10-2;

Файл 1a.mac:

getRightDigits(w, Ax, x) := block([n:0, m:0], x:abs(x),

while x>=1 do( x:x/10, n:n+1

), n:n-1,

while Ax <= (w*(10.0)^(n-m+1)) do( m:m+1

), m:m-1

)$

print("<Finding number of right digits>")$ x : read("Please, enter x: ")$

Ax : read("Enter Absolute miss: ")$ w : read("Enter omega[0.5 ... 1]: ")$

print("Number of right digits: ", getRightDigits(w, Ax, x));

Рис. 4. Результат задания 1.a.

Задание 1-b

Определить число верных десятичных знаков приближённого числа, если известна абсолютная погрешность:

x=0.06666, Ax=0.5*10-3

Файл 1b.mac:

print("<Finding number of right decimal digits>"); x : read("Please, enter x: ");

Ax : read("Enter Absolute miss: "); w : read("Enter omega[0.5..1]: ");

getRightDecDigits(w, Ax, x) := block([n:0, m:0], x:abs(x),

while x < 1 do( x : x * 10, n : n - 1

),

while Ax <= (w * (10.0)^(n - m + 1)) do( m : m + 1

),

m : m - 2 - n

)$

print("Number of right decimal digits: "); print(getRightDecDigits(w, Ax, x));

Рис. 5. Результат задания 1.b.

Задание 1-c

Определить абсолютную погрешность числа, если известно число верных знаков: x=1.72916, m=3.

Файл 1c.mac:

print("<Finding Absolute miss:>"); x : read("Please, enter x: ");

m : read("Enter number of right digits: "); w : read("Enter omega[0.5...1]: ");

getAbsMiss(x, m, w) := block([out:0.0, n:0.0], x : abs(x),

while x >= 1 do ( x : x / 10, n : n + 1

),

n : n - 1,

out : w * (10.0)^(n - m + 1)

)$

print("Absolute miss: "); print(getAbsMiss(x, m, w));

Рис. 6. Результат задания 1.c.

Задание 1-d

Найти абсолютную погрешность, если известна относительная: x=0.377766, δ x = 0.5%

Файл 1d.mac:

print("<Finding Absolute miss>"); x : read("Please, enter number: ");

relatemis : read("Please, enter Relative miss [0...100]: "); print("X = ", x);

print("Relative miss: ", relatemis); print("Absolute miss: ", abs(x) * relatemis / 100);

Рис. 7. Результат задания 1.d.

Задание 1-e

Найти относительную погрешность, если известна абсолютная: x=32.61516, Ax=0.11*10-2

Файл 1e.mac:

print("<Finding Relative miss>"); x:read("Please, enter number: "); print("X = ", x);

absolutemis:read("Please, enter Absolute miss: ");

print("Absolute miss: ", absolutemis); print("Relative miss: ", 100 * absolutemis / abs(x));

Рис. 8. Результат задания 1.e.

Задание 1-f

Найти абсолютную погрешность функции, если известны абсолютные погрешности аргументов: Ax=0.5*10-3, Ay=0,5*10-2.

Файл 1f.mac:

Ax : 0.0005;

Ay : 0.005;

print("<Finding misses of z(x,y) = exp(x)/y>"); print("Ax = ", Ax);

print("Ay = ", Ay);

x : read("Please, enter x: "); y : read("Enter y: "); print("Absolute miss of z: ");

print(Ax*abs(exp(x)/y)+Ay*abs(-exp(x)/(y*y)));

Рис. 9. Результат задания 1.f.

Задание 2

 

Найти сумму ряда с точностью до ε=0,0001.

(3n + 1)2

 

 

å

 

 

 

 

 

(4n

2

− 1)

2

 

n = 1

 

 

 

Файл 2.mac:

print("Series with common term: F(n) = "); print("((3*i + 1)^2)/((4*i*i - 1)^2)"); i:1.0;

f1:((3.0*i + 1)^2)/((4.0*i*i - 1.0)^2);