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

Залежність температури металевого предмету при нагріванні в печі

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

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

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

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

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

Міністерство освіти та науки України Національний університет “Львівська політехніка”  Контрольна робота З курсу «Алгоритмізація і програмування» на тему: «Залежність температури металевого предмету при нагріванні в печі» Львів-2008 Завдання: Температура t металевого предмету при нагріванні в печі описується залежністю: f(t)=50+450*(t-(1-exp(-0.25*t))/0.25)/60-130 Виділення кореня f(t)=50+450*(t-(1-exp(-0.25*t))/0.25)/60-130 t([-10;-4]. f(-10)=180.4748 f(-4)=-58.4515 Блок-схема алгоритму  Програма мовою С //vudilennja_korenja #include<stdio.h> #include<conio.h> #include<math.h> float f(float t) {return 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130;} main() {clrscr(); for(float t=-10;t<=-4;t+=0.5) printf("\n t=%.f f=%6.4f",t,f(t)); getchar(); } Результат виконання t=-10.0 f=180.4748 t=-9.5 f=141.2804 t=-9.0 f=107.1321 t=-8.5 f=77.4369 t=-8.0 f=51.6717 t=-7.5 f=29.3746 t=-7.0 f=10.1381 t=-6.5 f=-6.3974 t=-6.0 f=-20.5493 t=-5.5 f=-32.5977 t=-5.0 f=-42.7897 t=-4.5 f=-51.3435 t=-4.0 f=-58.4515 Програма в середовищі MATLAB Функція-процедура %fun_t function y=fun_t(t) y=50+450*(t-(1-exp(-0.25*t))/0.25)/60-130; %vud_korin clear,clc t=[-10:0.5:-4]; f=fun_t(t); disp([t(:) f(:)]); format long; z=fzero('fun_t',0) figure(1); plot(t,f,'k'); xlabel('t');ylabel('f(t)'); grid; Результат виконання програми -10.0000 180.4748 -9.5000 141.2804 -9.0000 107.1321 -8.5000 77.4369 -8.0000 51.6717 -7.5000 29.3746 -7.0000 10.1381 -6.5000 -6.3974 -6.0000 -20.5493 -5.5000 -32.5977 -5.0000 -42.7897 -4.5000 -51.3435 -4.0000 -58.4515 z = -6.70264621763789  Метод половинного ділення Блок-схема алгоритму  Програма мовою С //pol_dilennja #include<stdio.h> #include<conio.h> #include<math.h> float f(float t) {return 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130;} main() {clrscr(); float a=-10,b=-4,t0,eps=1e-4; int k=0; A:t0=(a+b)/2; if(fabs(a-b)>eps) {if(f(a)*f(t0)>0) a=t0; else b=t0; k++; goto A; } printf("\n t0=%.7f f(x0)=%.7f",t0,f(t0)); printf(" k=%d eps=%.7f a-b=%.7f",k,eps,fabs(a-b)); getchar(); } Програма в середовищі MATLAB %pol_dil clear;clc a=-10; b=-4; k=0; eps=1e-4; t0=(a+b)/2; while abs(a-b)>eps if fun_t(a)*fun_t(t0)>0 a=t0; else b=t0; end; t0=(a+b)/2; k=k+1; end; disp(' t0 ') disp([ t0 ]) disp(' k ') disp([ k ]) Метод простих ітерацій f(t)= 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130 f´(t)=450/60∙[1-(1-e-0.25t ∙(-0.25))/0.25] φ(t)=t-f(t)∕k , де |k|≥Q∕2 Q=max|f´(t)| [-10;-4] |f´(-10)|=387.9748=Q |f´(-4)|=104.0485 f´(t)<0 => k<0 k=-200 φ(t)=t-50+450*(t-(1-exp(-0.25*t))/0.25)/60-130 ∕ 200 q=max|φ´(t)| [-10;-4] φ´(t)=1-450/60∙[1-(1-e-0.25t ∙(-0.25))/0.25] ⁄ (-200) φ´(-10)=-0.9399; φ´(-4)=0.4798 => q=0.9399 <1 Умова виходу:|t1-t|<∆(1-q)∕q; ε=∆∙(1-q)∕q Блок-схема алгоритму  Програма мовою С //prostux_iteracij #include<stdio.h> #include<conio.h> #include<math.h> float f(float t) {return 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130;} main() {clrscr(); float a=-10,b=-4,t,t1,det=1e-4,eps=det*(1-0.9399)/0.9399; int k=0; t=(a+b)/2; A:t1=t-450/60*(1-(1-e-0.25t *(-0.25))/0.25) ⁄ (-200); if(fabs(t1-t)>eps) {t=t1; k++; goto A;} else {printf("\n t1=%.4f f(t1)=%.7f",t1,f(t1)); printf(" k=%d eps=%.7f ",k,eps);} getchar(); } Програма в середовищі MATLAB %pros_iter clear;clc a=-10; b=-4; k=0; det=1e-4; t=(a+b)/2; t1=t-450/60*(1-(1-e-0.25*t*(-0.25))/0.25) ⁄ (-200); eps=det*(1-0.9399)/0.9399; while abs(t1-t)>eps t=t1; t1 t1=t-450/60*(1-(1-e-0.25*t*(-0.25))/0.25) ⁄ (-200); k=k+1; end; disp(' t1 ') disp([ t1 ]) disp(' k ') disp([ k ]) Метод хорд f(a)>0 f(b)<0 f´(t)<0 f´´(t)>0 t=b-f(b)∙(b-a)/(f(b)-f(a)) ; γ=f(t0)∙(t0-tf)/(f(t0)-f(tf)) ; t=t0-γ; Умова виходу: ‌‌‌‌‌‌‌|γ|≤ε; ε=∆∙m/(M-m) m=min |f´(t)‌‌|=104.0485; M=max |f´(t)‌‌|=387.9748; Блок-схема алгоритму  Програма мовою С //metod_xord #include<stdio.h> #include<conio.h> #include<math.h> float f(float t) {return 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130;} main() {clrscr(); float a=-10,b=-4,t0,t,tf,ha,det=1e-4, m=104.0485,M=387.9748,eps=m/(M-m)*det; int k=0; t=b-f(b)/(f(b)-f(a))*(b-a); if(f(a)*f(t)<0) {t0=b;tf=a;} else {t0=a;tf=b;} A:ha=f(t0)*(t0-tf)/(f(t0)-f(tf)); t=t0-ha; if(fabs(ha)>eps) {t0=t; k++; goto A;} else {printf("\n t=%.7f f(t)=%.7f",t,f(t)); printf(" k=%d eps=%.7f fabs(ha)=%.7f",k,eps,fabs(ha));} getchar(); } Програма в середовищі MATLAB %Metod hord clear;clc k=0;t0=-4;tf=-10;det=1e-4;M=387.9748;m=104.0485; eps=det*m/(M-m); ha=fun_t(t0)*(t0-tf)/(fun_t(t0)-fun_t(tf)); t=t0-ha; while abs(ha)>eps; t0=t; ha=fun_t(t0)*(t0-tf)/(fun_t(t0)-fun_t(tf)); t=t0-ha; k=k+1; end; disp(' t '); disp([ t ]); disp(' k '); disp([ k ]); format long; Метод дотичних f´(t)=450/60*(1-(1-exp(-0.25*t)*(-0.25))/0.25) t=a-f(a)/ f´(a) γ=f(t0)/ f´(t0) t=t0-γ; ε=√2∙m1∙∆/M2 Умова виходу: γ≤√2∙m1∙∆/M2 m1=min|f´(t)| => m1=f´(-4)=104.0485 M2=max|f´´(t)| f´´(t)=25e-0.25t f´´(-10)=304.5623 f´´(-4)=67.9570 M2=304.5623 Блок-схема алгоритму  Програма мовою С //metog_dotu4nux #include<stdio.h> #include<conio.h> #include<math.h> float f(float t) {return 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130;} main() {clrscr(); float a=-10,b=-4,t0,t,tf,ha,det=1e-4,m1=104.0485, M2=304.5623,eps=sqrt(2*m1*det/M2); int k=0; t=a-f(a)/(450/60*(1-(1-exp(-0.25*a))/0.25)); if(f(b)*f(t)>0) {t0=a;tf=b;} else {t0=b;tf=a;} A:ha=f(t0)/(450/60*(1-(1-exp(-0.25*t0))/0.25)); t=t0-ha; if(fabs(ha)>eps) {t0=t; k++; goto A;} else {printf("\n t=%.7f f(t)=%.7f",t,f(t)); printf(" k=%d eps=%.7f ha=%.7f ",k,eps,ha);} getchar(); } Програма в середовищі MATLAB Функція-процедура %poxidna function y=poxidna(t) y=450/60*(1-(1-exp(-0.25*t)*(-0.25))/0.25); %metod_dotuchnux clear;clc k=0;tf=+-4;t0=-10;M2=304.5623; m1=104.0485; det=1e-4;eps=sqrt(2*m1*det/M2); ha=fun_t(t0)/poxidna(t0); t=t0-ha; while abs(ha)>eps; t0=t; k=k+1; ha=fun_t(t0)/poxidna(t0); t=t0-ha; end; format long; disp(' t '); disp([ t ]); disp(' k '); disp([ k ]); Комбінований метод Наближення зліва (метод хорд): γ=f(a)∙(a-b)/(f(a)-f(b)) ; t1=a-γ. Наближення справа (метод дотичних): γ=f(b)/ f´(b) ; t2=b-γ. Блок-схема алгоритму  Програма мовою С //kombinovanuj_metod #include<stdio.h> #include<conio.h> #include<math.h> float f(float t) {return 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130;} main() {clrscr(); float a=-10,b=-4,t2,t1,t,ha,det=1e-4; int k=0; A:ha=f(b)*(b-a)/(f(b)-f(a)); t1=b-ha; ha=f(b)/(50+450*(t-(1-exp(-0.25*t))/0.25)/60-130); t2=a-ha; if(fabs(b-a)>det) {b=t1;a=t2; k++; goto A;} else {t=(t1+t2)/2; printf("\n t=%.7f",t); printf(" k=%d eps=%.7f ",k,fabs(b-a));} getchar(); } Програма в середовищі MATLAB %Kombinovanui metod clear;clc; a=-10;b=-4;eps=1e-4;k=0; ha=fun_t(b)*(b-a)/(fun_t(b)-fun_t(a)); t1=b-ha; ha=fun_t(b)/poxidna(b); t2=a-ha; while (abs(b-a)>eps) b=t2; a=t1; k=k+1; ha=fun_t(b)*(b-a)/(fun_t(b)-fun_t(a)); t1=b-ha; ha=fun_t(b)/poxidna(b); t2=a-ha; end; t=(t1+t2)/2; format long; disp(' t '); disp([ t ]); disp(' k '); disp([ k ]); Порівняльна таблиця результатів обчислень Метод уточнення корення Задана похибка Значення корення Кількість ітерацій  Половинного ділення  10-4  -6.7027  16  Простих ітерацій  10-4  -6.7027  50  хорд  10-4  -6.7027  13  дотичних  10-4  -6.7027  8  комбінований  10-4  -6.7027  3  
Антиботан аватар за замовчуванням

12.02.2013 18:38

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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