Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы Вышка.doc
Скачиваний:
6
Добавлен:
22.11.2018
Размер:
102.91 Кб
Скачать

Лабораторная работа №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);

//Еще одним способом изображения нескольких