Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра МІ
ЗВІТ
до лабораторної роботи №3
з предмету «ТПР» на тему:
«Використання бібліотеки ППП Scilab»
Виконала:
ст.гр. МВ-32
Прийняв:
Львів – 2011
Мета роботи: навчитися використовувати бібліотеку ППП Scilab
Теоретичні відомості:
Scilab – пакет прикладних програм(ППП) для виконання математичних розрахунків. Розробник Scilab – Group INRIA –Rocquencourt Metalau Project.
Scilab – некомерційний аналог пакета Matlab.
Основні характеристики пакета Scilab:
Вільно розповсюджується разом з вихідними кодами. Використання, копіювання, зміни, розповсюдження – вільні.
Платформи: Unix, Linux, Windows.
Наявний інтерфейс і система допомоги.
Приведені алгоритми базової математики.
Можливість працювати у чисельному та символьному видах.
Робота з графікою.
Можливість використання відкомпільованих функцій мов С і Fortran.
Scilab складається з трьох частин:
Інтерпретатор.
Бібліотека функцій (Scilab-процедури).
Бібліотека С і Fortran процедур.
Мета роботи: навчитися використовувати бібліотеку ППП Scilab.
Хід роботи:
1.Запустити на виконання Scilab 5.2.
2.Розв’язати систему лінійних алгебраїчних рівнянь, додати M (0,19) до коефіціентів при і вільних членів системи
-->s=[6.7 -2.7 3.7 7.7;
-->5.7 3.7 -1.7 1.7;
-->2.7 6.7 0.7 1.7;
-->3.7 -3.7 4.7 -1.7]
s =
6.7 - 2.7 3.7 7.7
5.7 3.7 - 1.7 1.7
2.7 6.7 0.7 1.7
3.7 - 3.7 4.7 - 1.
-->b=[14.7; 8.7; 5.7; 3.7]
b =
14.7
8.7
5.7
3.7
- обертанням матриці
-->c=inv(s)
c =
- 0.0081252 0.1625431 - 0.0527026 0.0730380
- 0.0284925 - 0.0300156 0.1485231 - 0.0105469
0.0254591 - 0.1759683 0.1651347 0.1044811
0.1147157 - 0.0674023 0.0185872 - 0.1174560
-->d=s*c
d =
1. - 3.331D-16 2.776D-16 0.
- 8.327D-17 1. 1.388D-16 1.388D-16
2.776D-17 - 1.110D-16 1. 0.
0. 1.527D-16 - 8.327D-17 1.
- методом Крамера і командою det
SciPad
s=[6.7,-2.19,3.7,7.7;5.7,3.7,
-1.7,1.7;2.7,6.7,0.7,1.7;3.7,-3.7,4.7,-1.7];
b=[14.7; 8.7; 5.7; 3.7];
s1=s; s1(:,1)=b;
s2=s; s2(:,2)=b;
s3=s; s3(:,3)=b;
s4=s; s4(:,4)=b;
D=det(s);
d(1)=det(s1);
d(2)=det(s2);
d(3)=det(s3);
d(4)=det(s4);
x=d/D
P=s*x-b
Console
-->exec('D:\kramera.sce'); disp('exec done');
x =
1.2919249
0.2187175
0.1845564
0.8460697
P =
1.0D-14 *
0.1776357
0.1776357
0.0888178
0.0888178
exec done
- командою linsolve
-->[x,kerA]=linsolve(s,b)
kerA =
[]
x =
- 1.2919249
- 0.2187175
- 0.1845564
- 0.8460697
-->R=s*x+b
R =
1.0D-14 *
- 0.7105427
- 0.3552714
0.0888178
- 0.0444089
3.Задача інтерполяції (екстраполяції). Метод найменших квадратів. Виконати лінійну інтерполяцію цієї таблично заданої функції (команда interpln). Розв’язок зобразити графічно
-->x=[1.17 1.57 1.97 2.17 2.37 2.57 2.77 2.97 3.07 3.17];
-->y=[1.67 2.07 2.57 2.77 3.07 3.37 3.77 3.97 4.17 4.57];
-->xyd=[x;y]
xyd =
column 1 to 7
1.17 1.57 1.97 2.17 2.37 2.57 2.77
1.67 2.07 2.57 2.77 3.07 3.37 3.77
column 8 to 10
2.97 3.07 3.17
3.97 4.17 4.57
-->plot2d(x',y',[-3], "011", " ", [0,1,5,5]);
-->x_new=(0:4);
-->yi=interpln(xyd,x_new);
-->plot2d((0:4)',yi',[3],"000");
5.Використаємо метод найменших квадратів (команда datafit). Значення похибки обчислень er, яку видає команда datafit, дорівнює сумі квадратів відхилень експериментальних значень від значень модельної функції. Побудувати інтерполяційний многочлен методом найменших квадратів. {a0=[1;1;1]}. Розв’язок зобразити графічно.
-->x=[1.17 1.57 1.97 2.17 2.37 2.57 2.77 2.97 3.07 3.17];
-->y=[1.67 2.07 2.57 2.77 3.07 3.37 3.77 3.97 4.17 4.57];
-->plot2d(x,y,[5])
-->f=[x;y];
-->function[e]=G(a,n)
-->e=n(2)-a(1)-a(2)*n(1)-a(3)*n(1)^2
-->endfunction
-->a0=[1;1;1]
a0 =
1.
1.
1.
--> [aa,er]=datafit(G,f,a0)
er =
0.0386256
aa =
1.1043433
0.1731301
0.2777634
-->yy=aa(1)+aa(2)*x+aa(3)*x^2;
-->plot2d(x,yy,[2]);
-->e=(y-yy)^2;
-->d=sum(e)
d =
0.0386256
6.Обчислити означений інтеграл від експериментально заданої функції (п. 4) на відрізку [1 + M;3 + M] методом трапецій (команда inttrap).
-->inttrap(x,y)
ans =
5.77
7.Розв’язати нелінійну жорстку систему диференціальних рівнянь [1], додати M (0,7) до коефіціентів при (команда ode):
Розв’язок зобразити графічно.
function dx=syst2(s,x)
dx=zeros(3,1)
dx(1)=-7,7*x(1)+7,7*x(2);
dx(2)=157,7*x(1)-1,7*x(2)*x(3);
dx(3)=1,7*x(1)*x(2)-8,7*x(3);
endfunction
x0=[-1,7;0,7;1,7]; s0=0;
s=0:0,15:13;
y=ode("stiff",x0,s0,s,syst2);
scf(3);
plot(s,y)
8.Розв’язати нелінійне алгебраїчне рівняння: (команда roots), додати M до коефіціентів при .
s=poly([1.7,3.7,-1.7,12.7,-17.7,2.7],"x","c");
r=roots(s)
r =
- 0.2944396
0.0185684 + 0.5909115i
0.0185684 - 0.5909115i
1.0642773
5.748581
9.Перевірити отримані корені (підстановкою, застосувати for).
[n,m]=size(r);
for i=1:n
s(i)=1.7+3.7*r(1)-1.7*r(1)^2+12.7*r(1)^3-17.7*r(1)^4+2.7*r(1)^5;
end
s
s =
Действительная часть
2.637D-16
2.637D-16
2.637D-16
2.637D-16
2.637D-16
Мнимая часть
0
0
0
0
0
Список використаної літератури:
1.Алексеев Е.Р. Решение обыкновенных дифференциальных уравнений. – Донецк: ДНТУ, 2001.
2.Андриевский Б., Фрадков А. Элементы математического моделирования в программных средах Matlab 5 и Scilab. – СПб.: Наука, 2001. – 286 с.