DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Визначення зміни в часі температури металевої заготовки при нагріванні в печі. Варіант №1

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Розрахункова робота
Предмет:
Алгоритмізація і програмування
Група:
АВ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка»  РОЗРАХУНКОВА РОБОТА №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): Програма табулювання функції мовою С #include<stdio.h> # include<conio.h> #include<math.h> float f(float V) {return V*13.5*(1-exp(-9e-4*165/V))-2;} main() {clrscr(); for(float V=25;V<=35;V+=1) printf("\n V=%4.1f f(V)=%4.5f",V,f(V)); getchar(); }   Результати табулювання функції в середовищі ТС V=30.0 f(V)=-0.00020 V=30.5 f(V)=-0.00012 V=31.0 f(V)=-0.00004 V=31.5 f(V)=0.00003 V=32.0 f(V)=0.00011 V=32.5 f(V)=0.00018 V=33.0 f(V)=0.00025 V=33.5 f(V)=0.00031 V=34.0 f(V)=0.00038 V=34.5 f(V)=0.00044 V=35.0 f(V)=0.00050  Програма табулювання функцій f(V) в середовищі MATLAB clear clc; v=[30:0.5:35]; a=30;b=35; f=bro_fan4(x); format long; z=fzero('bro_fan4(x)',(a+b)/2)disp([v(:) f(:)]); whitebg; plot(v,f,'b-'); grid; xlabel('v');ylabel('y'); legend('y=f(v)')   function y=bro_fan4(V), y=V.*14.*(1-exp(-2,86./V))-4;   %Перша похідна bro_fan41 function y=bro_fan41(V), y=13.5.*(1-exp(-9e-4.*165./V))+V.*13.5.*(-exp(-9e-4.*165./V. *V)).* (-165./V.*V);   %Друга похідна bro_fan42 functfuncion y=bro_fan42(V), y=-y=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))   Результати виконання програми середовищі MATLAB z = 31.287888322744607 V f(V)  30.0 30.5 31.0 31.5 32.0 32.5 33.0 33.5 34.0 34.5 35.0 -0.000203579473436 -0.000122504940260 -0.000044041540107 0.000031934871269 0.000105540691091 0.000176885164710 0.000246070926317 0.000313194491850 0.000378346708130 0.000441613162991 0.000503074560482  Графік табулювання функції 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 │<ε Блок-схема алгоритму  Програма мовою С #include<stdio.h> #include<conio.h> #include<math.h> float f(float v) { return v*13.5*(1-exp(-9e-4*165/v))-2;} main() {clrscr(); float a=31,b=32,v0,v1,eps=1e-4; int i=0; A: v0=(a+b)/2; if(fabs(a-b)>eps) {if(f(a)*f(v0)>0) a=v0; else b=v0; i++; goto A; } printf("\n v0=%.7f f(v0)=%.7f",x0,f(x0)); printf(" i=%d eps=%.7f",і,eps); getchar(); return 0; }  Результат виконання програми V i ε  31.287872314453125 14 10-4   31.287891387939453 17 10-5  31.287888050079346 20 10-6  Наближення кореня в середовищі MATLAB clear,clc a=31;b=32;i=0; v=(a+b)/2; format long; disp('v i eps') for eps=[1e-4 1e-5 1e-6] while abs(a-b)>eps if (bro_fan4(a)*bro_fan4(v)>0) a=v; else b=v; end; v=(a+b)/2; i=i+1; end; disp([v i eps]) end  Результат виконання програми V i ε  31.287872314453125 14 10-4   31.287891387939453 17 10-5  31.287888050079346 20 10-6  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 Блок-схема алгоритму  Програма мовою С #include<stdio.h> #include<conio.h> #include<math.h> float f(float v) {return v*13.5*(1-exp(-9e-4*165/v))-2;} main() {clrscr(); float p=58,a=31,b=32,v0,v,eps=1e-4,q=0.827586206896552; int i; for(eps=0.000001;eps<=0.0001;eps=eps*10) {v0=(a+b)/2; v=v0-f(v0)/p; A: if(fabs(v0-v)>eps*(1-q)/q) {v0=v; v=v0-f(v0)/p; i=i+1; goto A; } printf(" v0=%.15f\n i=%d eps=%f\n ",v0,i,eps); } getchar(); return 0; }   Результат виконання програми V i ε  31.287872314453125 13 10-4   31.287891387939453 14 10-5  31.287888050079346 16 10-6  Наближення кореня в середовищі MATLAB %Metod porosti iter clear,clc format long ; p=58 q=0.827586206896552 disp('v i eps') ; format long ; for eps=[1e-4 1e-5 1e-6] a=31;b=32;i=0; v0=(a+b)/2; v=v0-(bro_fan4(v0))/p; while abs(v0-v)>eps*(1-q)/q; v0=v; v=v0-(bro_fan4(v0))/p; i=i+1; end; disp( [v i eps]) end;  Результат виконання програми V i ε  31.287872314453125 13 10-4   31.287891387939453 14 10-5  31.287888050079346 16 10-6   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; Блок-схема алгоритму  Програма мовою С #include<stdio.h> #include<conio.h> #include<math.h> float f(float v) {return v*13.5*(1-exp(-9e-4*165/v))-2;} main() {clrscr(); float a=31,b=32 ,v,v0,vf,eps=1e-4,M=115,m=49; int i; for(eps=0.000001;eps<=0.0001;eps=eps*10) {i=0; v=(b-a)/2; if (f(a)*f(v)>0){v0=a; vf=b;} else {v0=b; vf=a;} v=v0-(f(v0)*(v0-vf))/(f(v0)-f(vf)); A: if(fabs(v-v0)>(eps*m/(M-m))) {v0=v; v=v0-(f(v0)*(v0-vf))/(f(v0)-f(vf)); i++; goto A;} printf(" v=%.7f \n i=%d eps=%.6f\n",v,i,eps); } getchar(); return 0; }  Результат виконання програми V i ε  31.2878876 4 10-4  31.2878876 4 10-5  31.2878876 3 10-6   Наближення кореня в середовищі MATLAB %Metod hord clear,clc M=115 m=49 for eps=[1e-4 1e-5 1e-6] a=31;b=32;i=0; v=(b+a)/2; if (bro_fan4(a)*bro_fan4(v)>0) v0=a; vf=b; else v0=b; vf=a; end; v=v0-(bro_fan4(v0)*(v0-vf))/(bro_fan4(v0)-bro_fan4(vf)); while abs(v-v0)>(eps*m/(M-m)) v0=v; v=v0-(bro_fan4(v0)*(v0-vf))/(bro_fan4(v0)-bro_fan4(vf)); i=i+1; end; format long; disp( [v i eps]); end;   Результат виконання програми V i ε  31.2878876 4 10-4  31.2878876 4 10-5  31.2878876 3 10-6  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; Блок-схема алгоритму  Програма мовою С #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; } Результат виконання програми V i ε  31.2878876 4 10-4  31.2878876 3 10-5  31.2878876 2 10-6  Наближення кореня в середовищі 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]) Результат виконання програми V i ε  31.2878876 4 10-4  31.2878876 3 10-5  31.2878876 2 10-6  5) Комбінований метод У комбінованому методі довжину інтервалу скорочують за допомогою формул методів хород і дотичних. Блок-схема алгоритму  Програма мовою С #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));} main() {clrscr(); float a,a0,b,b0,eps=1e-4,v; int i; for(eps=0.000001;eps<=0.0001;eps=eps*10) i=0; a0=31;b0=32; a=a0-f(a0)/fp1(a0); b=b0-(f(b0)*(b0-a))/(f(b0)-f(a)); A: if(fabs(a-b)>eps) {a0=a; b0=b; a=a0-f(a0)/fp1(a0); b=b0-(f(b0)*(b0-a))/(f(b0)-f(a)); i=i+1; goto A;} v=(a+b)/2 ; printf(" v=%.7f\n i=%d eps=%.6f\n",v,i,eps); } getchar(); return 0; }  Результат виконання програми V i ε  31.2878876 2 10-4  31.2878876 3 10-5  31.2878876 4 10-6   Наближення кореня в середовищі MATLAB clear,clc format long; disp(' v i eps'); for eps=[1e-4 1e-5 1e-6] a0=31;b0=32;i=0; a=a0- bro_fan4 (a0)/ bro_fan41(a0); b=b0-( bro_fan4 (b0)*(b0-a))/( bro_fan4 (b0)- bro_fan4 (a)); while (abs(a-b)>eps) a0=a; b0=b; a=a0- bro_fan4 (a0)/ bro_fan41(a0); b=b0-( bro_fan4 (b0)*(b0-a))/( bro_fan4 (b0)- bro_fan4 (a)); i=i+1; end; v=(a+b)/2; disp( [v i eps]); end   Результат виконання програми V i ε  31.2878876 2 10-4  31.2878876 3 10-5  31.2878876 4 10-6   Таблиця порівняння результатів Назва методу С MATLAB ε   V i V i   Половинне ділення 31.287 31.28788 31.2878876 14 17 20 31.287 31.28788 31.2878876 14 17 20 10-4 10-5 10-6  Прості ітерації 31.287 31.28788 31.2878876 13 14 16 31.287 31.28788 31.2878876 13 14 16 10-4 10-5 10-6  Метод хорд 31.287 31.28788 31.2878876 4 4 3 31.287 31.28788 31.2878876 4 4 3 10-4 10-5 10-6  Метод дотичних 31.287 31.28788 31.2878876 2 3 4 31.287 31.28788 31.2878876 2 3 4 10-4 10-5 10-6  Комбінований метод 31.287 31.28788 31.2878876 2 3 4 31.287 31.28788 31.2878876 2 3 4 10-4 10-5 10-6   Висновок:для даного рівняння кращу збіжність дають Метод дотичних та Комбінований метод Об’єм приміщення в якому стояла посудина з водою є близько 31м3 .
Антиботан аватар за замовчуванням

12.02.2013 18:38

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!