Лабораторная работа №4
clc
clear
//РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
// ДИФФЕРЕНЦИАЛЬНОЕ УРАВНЕНИЕ Y2+PI^2Y=PI^2/COS(PI*X) Y(0)=3 Y1(0)=0
//ВВОДИМ НОВЫЕ ПЕРЕМЕННЫЕ X(1)=Y, X(2)=Y1, T=X
//ОПРЕДЕЛЯЕМ ПРАВЫЕ ЧАСТИ СООТВЕТСТВУЮЩЕЙ СИСТЕМЫ УРАВНЕНИЙ ПЕРВОГО ПОРЯДКА
function dx=syst2(t,x)
dx=zeros(2,1);
dx(1)=x(2);
dx(2)=-%pi^2*x(1)+%pi^2/cos(%pi*t);
endfunction
// ЧИСЛЕННОЕ РЕШЕНИЕ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
X0=[3;0];t0=0;t=0:0.01:0.4;
y=ode("stiff",X0,t0,t,syst2);
//ТОЧНОЕ РЕШЕНИЕ ОДУ
z=3*cos(%pi*t)+%pi*t.*sin(%pi*t)+log(cos(%pi*t)).*cos(%pi*t);
//ВЫВОД РЕШЕНИЙ В ОДНОМ ГРАФИЧЕСКОМ ОКНЕ
rect=[min(t),-5,max(t),3];
tics=[2,11,10,5];
plotframe(rect,tics,[%t,%t],["Численное решение ОДУ"], [0,0.2,0.5,0.5]);
plot(t,y);
plotframe(rect,tics,[%t,%t],["Точное решение ОДУ"], [0.5,0.2,0.5,0.5]);
plot(t,z);
Лабораторная работа №5
clc
clear
clf
//Функция, вычисляющая разность между экспериментальными
//и теоретическими значениями.
//Перед использованием необходимо определить
//z=[x;y] - матрицу исходных данных - и
//с - вектор начальных значений коэффициентов,
//размерность вектора должна совпадать
//с количеством искомых коэффициентов.
function [zr]=G(c,z)
zr=z(2)-c(1)-c(2)*z(1)-c(3)*z(1)^2
endfunction
//Исходные данные
x=[1.32 1.40 1.50 1.62 1.70 1.80 1.90 2.00,2.11,2.20,2.32,2.40,2.51];
y=[3.30 3.50 3.85 4.25 4.50 4.85 5.40 6.00 6.60 7.30 9.20 10.20 13.50];
//Формирование матрицы исходных данных
z=[x;y];
//Вектор начальных приближений
c=[0;0;0];
//Решение задачи
[a,err]=datafit(G,z,c)
//
//Использование многочленов более высоких степеней
//
function [zr1]=G1(cc,z)
zr1=z(2)-cc(1)-cc(2)*z(1)-cc(3)*z(1)^2-cc(4)*z(1)^3
endfunction
cc=[0;0;0;0];
[aa,err]=datafit(G1,z,cc)
function [zr2]=G2(ccc,z)
zr2=z(2)-ccc(1)-ccc(2)*z(1)-ccc(3)*z(1)^2-ccc(4)*z(1)^3-ccc(5)*z(1)^4
endfunction
ccc=[0;0;0;0;0];
[aaa,err]=datafit(G2,z,ccc)
function [zr3]=G3(cccc,z)
zr3=z(2)-cccc(1)-cccc(2)*z(1)-cccc(3)*z(1)^2-cccc(4)*z(1)^3-cccc(5)*z(1)^4-cccc(6)*z(1)^5
endfunction
cccc=[0;0;0;0;0;0];
[aaaa,err]=datafit(G3,z,cccc)
//Построение графиков экспериментальных данных и подобранных функций
t=1.32:0.01:2.51;
Ptc=a(1)+a(2)*t+a(3)*t^2;
Ptc1=aa(1)+aa(2)*t+aa(3)*t^2+aa(4)*t^3;
Ptc2=aaa(1)+aaa(2)*t+aaa(3)*t^2+aaa(4)*t^3+aaa(5)*t^4;
Ptc3=aaaa(1)+aaaa(2)*t+aaaa(3)*t^2+aaaa(4)*t^3+aaaa(5)*t^4+aaaa(6)*t^5;
rect=[1.32, 3.30, 2.51, 13.50];
tics=[2,11,10,5];
plotframe(rect,tics,[%t,%t],["Апроксимация a(1)+a(2)*x+a(3)*x^2",...
"X","Y"], [0,0,0.5,0.5]);
plot2d(t,Ptc);
plot2d(x,y,-4);
plotframe(rect,tics,[%t,%t],["Апроксимация a(1)+a(2)*x+a(3)*x^2+a(4)*x^3",...
"X","Y"], [0.5,0,0.5,0.5]);
plot2d(t,Ptc1);
plot2d(x,y,-4);
plotframe(rect,tics,[%t,%t],["Апроксимация a(1)+a(2)*x+a(3)*x^2+a(4)*x^3+a(5)*x^4",...
"X","Y"], [0,0.5,0.5,0.5]);
plot2d(t,Ptc2);
plot2d(x,y,-4);
plotframe(rect,tics,[%t,%t],["Апроксимация a(1)+a(2)*x+a(3)*x^2+a(4)*x^3+a(5)*x^4+a(5)*x^5",...
"X","Y"], [0.5,0.5,0.5,0.5]);
plot2d(t,Ptc3);
plot2d(x,y,-4);
//plot(x,v);
//Еще одним способом изображения нескольких