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

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

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

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

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

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

Міністерство освіти та науки України Національний університет “Львівська політехніка”  Контрольна робота З курсу «Алгоритмізація і програмування» на тему: «Залежність температури металевого предмету при нагріванні в печі» Львів-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:02-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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