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

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

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

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

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

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

Міністерство освіти та науки України Національний університет “Львівська політехніка”  Контрольна робота З курсу «Алгоритмізація і програмування» на тему: «Залежність температури металевого предмету при нагріванні в печі» Виконав: ст. гр. АВ-1 Перевірив: Львів-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 Блок-схема алгоритму  SHAPE \* MERGEFORMAT  початок t=100;20;300 f(t)= 50+450*(t-(1-exp(-0.25*t))/0.25)/60-130 друк t, f(t) кінець  Програма мовою С //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  Метод половинного ділення Блок-схема алгоритму  SHAPE \* MERGEFORMAT  початок друк t0, f(t0),k,ε, |a-b| кінець а=-10,b=-4, k=0,ε=10-4 t0=(a+b)/2 |a-b|>ε f(a)∙f(t0)>0 a=t0 b=t0 k=k+1  Програма мовою С //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 Блок-схема алгоритму  SHAPE \* MERGEFORMAT  початок друк t1, f(t1),k,ε, кінець а=-10,b=-4, k=0,∆=10-4 q=0.9399 ε=∆(1-q)∕q t=(a+b)/2 |x1-x|>ε t=t1 k=k+1 t1=t-450/60∙[1-(1-e-0.25t ∙(-0.25))/0.25] ⁄ (-200)  Програма мовою С //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; Блок-схема алгоритму  SHAPE \* MERGEFORMAT друк t, f(t),k, ε, |γ| кінець а=-10,b=-4, k=0,∆=10-4 m=104.0485 M=387.9748 ε=∆∙m/(M-m) |γ|>ε t0=a tf=b k=k+1 t0=t t=b-f(b)∙(b-a)/(f(b)-f(a)) f(a)∙f(t0)>0 tf=a t0=b γ=f(t0)∙(t0-tf)/(f(t0)-f(tf)) t=t0-γ початок  Програма мовою С //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 Блок-схема алгоритму  SHAPE \* MERGEFORMAT  початок друк t, f(t),k, ε, |γ| кінець а=-10,b=-4, k=0,∆=10-4 m1=104.0485 M2=304.5623 ε=√2∙m1∙∆/M2 |γ|>ε t0=a tf=b k=k+1 t0=t t=a-f(a)/ f´(a) f(a)∙f(t)>0 tf=a t0=b γ=f(t0)/ f´(t0) t=t0-γ  Програма мовою С //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-γ. Блок-схема алгоритму  SHAPE \* MERGEFORMAT  початок друк t, k, ε, кінець а=-10,b=-4, k=0,∆=10-4 γ=f(a)∙(a-b)/(f(a)-f(b)); t1=a-γ |b-a|>∆ b=t2 a=t1 k=k+1 γ=f(b)/ f´(b) ; t2=b-γ t=(t1+ t1)/2  Програма мовою С //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 ]); Порівняльна таблиця результатів обчислень
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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