Главная Обратная связь

Дисциплины:






Примеры выполнения заданий в пакете MAXIMA



 

1. Построить в логарифмическом масштабе график функции .

 

(%i1) plot2d([exp(-x^2)], [x,-4,4],[y,1e-5,1],[logy])$

или

(%i1) wxplot2d([exp(-x^2)], [x,-4,4], [y,1e-5,1], [gnuplot_preamble, "set logscale y; set grid;"])$

 

2. Определить, какой одной из двух возможных функциональных зависимостей принадлежат данные из файла E0.prn. Найти значение l.

file_search("d:/E0.prn");

printfile("d:/E0.prn");

data:read_nested_list("d:/E0.prn");

n:length(data);

x:makelist(first(data[i]),i,1,length(data));

y:makelist(second(data[i]),i,1,length(data));

wxplot2d([discrete,x,y],[style,[points,3]]);

f(x):=-log(1-x);

g(t):=sqrt(-log(1-t));

ff:map(f,y),numer;

gg:map(g,y),numer;

wxplot2d([[discrete,x,ff],[discrete,x,gg]],[gnuplot_preamble, "set grid;"]);

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

 

3. Построить интерполяционные полиномы Лагранжа для зависимостей, заданных точками , .

n:5;

x:makelist(i*0.5, i, 0, n);

f(t):=1+1.8*t-t^3;

y:map(f,x),numer;

L(u,k,n):=block([p,i,c],

p:1,for i:1 thru n+1 do block(c:if k=i then 1 else (u-x[i])/(x[k]-x[i]),

p:p*c),

p:p);

Pn(u):=sum(y[k]*L(u,k,n),k,1,n+1);

wxplot2d([Pn(u),[discrete,x,y]],[u,-1,3],[style,[lines],[points]]);

Результат интерполяции полиномами Лагранжа

load(interpol);

m:transpose(matrix(x,y));

fit(u):=linearinterpol(m,varname='u);

wxplot2d([fit(u),[discrete,x,y]],[u,-1,3],[style,[lines],[points]]);

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

fsp(u):=cspline(m,varname='u);

wxplot2d([fsp(u),[discrete,x,y]],[u,-1,3],[style,[lines],[points]]);

 

Интерполяция сплайнами

4. Рассмотреть пример Рунге. Построить интерполяционные полиномы Лагранжа с равномерной сеткой, с узлами Чебышева. Использовать интерполяцию сплайнами.

n:8; a:-1; b:1; dx:(b-a)/8;

f(t):=1/(1+25*t^2);

сначала зададим равномерную сетку

x:makelist(a+i*dx, i, 0, n),numer;

y:map(f,x),numer;

строим интерполяционный многочлен

L(u,k,n):=block([p,i,c],

p:1,for i:1 thru n+1 do block(c:if k=i then 1 else (u-x[i])/(x[k]-x[i]),

p:p*c),

p:p);

Pn(u):=sum(y[k]*L(u,k,n),k,1,n+1);

wxplot2d([Pn(u),[discrete,x,y]],[u,-1,1],[style,[lines],[points]]);

Зададим сетку на основе узлов Чебышева

xx:makelist(cos(%pi*(2*i+1)/(2*(n+1))), i, 0, n),numer;

yy:map(f,x),numer;

L(u,k,n):=block([p,i,c],

p:1,for i:1 thru n+1 do block(c:if k=i then 1 else (u-xx[i])/(xx[k]-xx[i]),

p:p*c),

p:p);

Pn(u):=sum(yy[k]*L(u,k,n),k,1,n+1);



wxplot2d([Pn(u),[discrete,xx,y]],[u,-1,1],[style,[lines],[points]]);

Воспользуемся интерполяцией сплайнами

load(interpol);

m:transpose(matrix(x,y));

fsp(u):=cspline(m,varname='u);

wxplot2d([fsp(u),[discrete,x,y]],[u,-1,1],[style,[lines],[points]]);

 


 





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...