Міністерство освіти та науки України
Національний університет
«Львівська політехніка»
EMBED Word.Picture.8
РОЗРАХУНКОВА РОБОТА №1
З дисципліни : Алгоритмізація і програмування.
Визначення зміни в часі температури металевої заготовки при нагріванні в печі.
Варіант №1
Виконав:
ст. гр. АВ-1
Перевірив:
Львів-2008 р.
Завдання : Залежність, якою описують процес випаровування води із вільної поверхні посудини в акритому приміщенні об’ємом V має вигляд:
mt=m0-V*q*(1-e-k τ/V)
де m0 i mt- відповідно початкова і залишкова маса води в посудині; q- маса водяної пари яку може увібрати 1 м3 повітря приміщення, τ- час. Знйти об’єм приміщення якщо залилося
1а ) 78г. води за час τ =165xв. , m0=80 г. ;q=13.5 г/m3 ; коефіцієнт к=9*10-4 м3/хв
Розв’язання
Зведемо задане рівняння до вигляду :
f(v)=V*q*(1-e-k τ/V)+ mt-m0
підставивши значення q, mt,m0,к, τ, отримаємо:
f(v)= V*14*(1-e-0,286/V)-4
Виділимо корінь (знайдемо інтервал, в якому знаходиться корінь) заданого рівняння шляхом табулювання f(t):
Програма табулювання функції мовою С
Результати табулювання функції в середовищі ТС
Програма табулювання функцій f(V) в середовищі MATLAB
Результати виконання програми середовищі MATLAB
z =
31.287888322744607
Графік табулювання функції f(t) в середовищі MATLAB
Рис1. Графік функції y=f(V)
Висновок : в результаті табулювання функції і побудови графіка видно, що корінь нелінійного рівняння знаходиться на інтервалі [31;32 ].
Метод половинного ділення
Формула методу: vi=(ai-1+bi-1);
vi=ai-1; bi=bi-1 коли f(a)*f(vi)>0; vi=bi-1; ai=ai-1 коли f(a)*fvi)<0
Умова виходу: │ ai - bi │<ε
Блок-схема алгоритму
SHAPE \* MERGEFORMAT ПОЧАТОК
v0=(a+b)/2
f(a)*f(v0)>0
a=v0
b=v0
ні
так
|a-b|>ε
так
ні
Друк v0, ε, i
КІНЕЦЬ
a=31;b=32;i=0;
ε=10-6; ε<=10-4
Δε= ε*10 ε=10ε<=10-4
Програма мовою С
Результат виконання програми
Наближення кореня в середовищі MATLAB
Результат виконання програми
2) Mетод простих ітерацій
У цьому методі рівняння f(t) замінюється еквівалентним йому рівнянням v=φ(v).
φ(v)=v-f(v)/p;
|p|>Q/2; Q=max|f’(v)|.
[a;b]
Умова виходу :
|xn-xn+1|<ε*(1-q)/q; q=max|φ’(v)|.
[a;b]
Умова збіжності:
|φ’(v)|<q<1.
p =58
q = 0.8275862
Блок-схема алгоритму
SHAPE \* MERGEFORMAT ПОЧАТОК
v=v0–f(v0)/780
|v-v0|>ε*(1-q)/q
i=i+1
v0=v
так
ні
Друк v0, ε, i
КІНЕЦЬ
ВВІД v0, q
ε=10-6; ε<=10-4
Δε= ε*10 ε=10ε<=10-4
Програма мовою С
Результат виконання програми
Наближення кореня в середовищі MATLAB
Результат виконання програми
3) Метод хорд
Умови застосування методу:
f’(v), f’(v), f’’(v)- неперервні на [a;b]
f’(v)≠0 та f’’(v)≠0 на [a;b]– видно з рис2 та рис3.
Формула методу:
v=v0-f(v0)*((v0-vf)/(f(v0)-f(vf)));
Умова виходу з ітераційного процесу:
|v-v0|<ε*m/(M-m),
де M=max|f’(v)|= 115, m=min|f’(v)|=49,
[a;b] [a;b]
Вибір нульового наближення та фіксованої точки:
v=(b-a)/2;
f(a)*f(v)>0 то v0=a; vf=b;
f(a)*f(v)<0 то v0=b; vf=a;
Блок-схема алгоритму
SHAPE \* MERGEFORMAT ПОЧАТОК
a=31,b=32,M=115,m=49
ε=10-6; ε<=10-4
v=(b-a)/2; і=0
f(a)*f(v)>0
v0=a; vf=b;
v0=b; vf=a;
v=v0-(f(v0)*(v0-vf))/(f(v0)-f(vf));
|v-v0|>ε*m/(M-m)
так
ні
v0=v
Друк v, ε, i
Δε= ε*10 ε=10ε<=10-4
КІНЕЦЬ
i=i+1
так
ні
Програма мовою С
Результат виконання програми
Наближення кореня в середовищі MATLAB
Результат виконання програми
4) Метод дотичних (Метод Ньютона)
Вибираємо початкове наближення так, щоб виконувалась умова f(v0)* f''(v0)>0.
Умови застосування методу:
f’(v), f’(v), f’’(v)- неперервні на [a;b]
f’(v)≠0 та f’’(v)≠0 на [a;b].
Формула методу:
v=v0-f(v0)/f’(v0);
Умова виходу :
|v-v0|< √(2*m* ε /M)
де M=max|f’’(v)|= 565, m=min|f’(v)|=49,
[a;b] [a;b]
Вибір нульового наближення:
f'(a)*f’’(a)<0 v0=a;
f'(a)*f’’(a)<0 v0=b;
Блок-схема алгоритму
SHAPE \* MERGEFORMAT ПОЧАТОК
v=31,b=32,M=565,m=49
ε=10-6; ε<=10-4
і=0
f'(a)*f’’(a)<0
ні
v0=a;
v0=b; vf=a;
v=v0-f(v0)/fp1(v0);
|v-v0|>|v-v0|<√(2*m*ε /M)
так
v0=v
ні
Друк v, ε, i
Δε= ε*10 ε=10ε<=10-4
КІНЕЦЬ
i=i+1
так
так
k0=k
Програма мовою С
#include<stdio.h>
#include<conio.h>
#include<math.h>
float f(float v)
{return v*13.5*(1-exp(-9e-4*165/v))-2;}
float fp1(float v)
{ return 13.5.*(1-exp(-9e-4*165/v))+v*13.5.*(-exp(-9e-4*165/v))*(-165/v*v*v);}
float fp2(float v)
{return exp(-9e-4*165/v))*(-165/v))+13.5*((-exp(-9e-4*165/v))*(-165/v))+v*13.5*((-exp(-9e-4*165/v))*(-165/v).*(-165/v)+(-exp(-9e-4*165/v))*(-1653*2.*v/(v*v*v*v)));}
main()
{clrscr();
float eps=1e-4,a=31,b=32,v,v0,M=565,m=49;
int i;
for(eps=0.000001;eps<=0.0001;eps=eps*10)
{i=0;if (fp1(a)*fp2(a)<0) v0=a;
else v0=b;
v=v0-f(v0)/fp1(v0);
A: if(fabs(f(v0)/fp1(v0))>sqrt(2*m*eps/M))
{v0=v;
v=v0-f(v0)/fp1(v0);
i=i+1; goto A;}
printf("\n v=%.7f \n i=%d eps=%.6f",v,i,eps);
}
}
getchar();
return 0;
}
Результат виконання програми
Наближення кореня в середовищі MATLAB
%Dotuchni
clear,clc
m=49
M=565
disp(' v i eps');
for eps=[1e-4 1e-5 1e-6]
a=31;b=32;i=0;
if (bro_fan41 (a)* bro_fan42 (a)<0)
v0=a;
else v0=b;
end;
v=v0- bro_fan4 (v0)/ bro_fan41(v0);
while abs(v0-v)>sqrt(2*m*eps/M);
v0=v;
v=v0- bro_fan4 (v0)/ bro_fan41(v0);
i=i+1;
end;
format long;
disp( [v i eps])
Результат виконання програми
5) Комбінований метод
У комбінованому методі довжину інтервалу скорочують за допомогою формул методів хород і дотичних.
Блок-схема алгоритму
SHAPE \* MERGEFORMAT ПОЧАТОК
a=a0-f(a0)/f’(a0);
|a-b|> ε
b0=b
a0=a
Друк v,i,ε
КІНЕЦЬ
b=b0-(f(b0)*(b0-a))/(f(b0)-f(a));
v=(a+b)/2
a0=31;b0=32;i=0;
ε=10-6; ε<=10-4
i=i+i
Δε= ε*10 ε=10ε<=10-4
Програма мовою С
Результат виконання програми
Наближення кореня в середовищі MATLAB
Результат виконання програми
Таблиця порівняння результатів
Висновок:для даного рівняння кращу збіжність дають Метод дотичних та Комбінований метод
Об’єм приміщення в якому стояла посудина з водою є близько 31м3 .