Смекни!
smekni.com

Информатика Алгоритмизация и программирование (стр. 1 из 2)

Министерство образования и науки Российской федерации

Федеральное агентство по образованию

Саратовский Государственный Технический Университет

Кафедра «Информатика»

Курсовая работа

Тема: «Информатика. Алгоритмизация и программирование»

Выполнил

студент АМФ ПСМ-21

Зеленин-Адамов С.Г.

Номер зачетки 040106

Проверил ассистент

кафедры «Информатика»

Можаева Н.А.

Саратов 2006


СОДЕРЖАНИЕ

Задача 1.3

Задача 2.7

Задача 3. 10

Задача 4.13

Задача 5.17

Список использованной литературы.. 21


Задача 1.

Выполнить расчет максимальной мощности двигателя автомобиля и расчет внешней характеристики двигателя при следующих начальных условиях:

mo,кг Vmax, км/ч Kв кг/м3 F, м2 Ψv nNмин-1 Kv ηтр
6000 100 0,62 3,9 0,021 3000 1,2 0,88

РЕШЕНИЕ.

Максимальная мощность двигателя тягача по условию обеспечения заданной максимальной скорости рассчитывается по формуле:

, (1)

где Nemax- искомая максимальная мощность, кВт;

Nv– мощность на режиме максимальной скорости, кВт;

Kv– отношение частоты вращения коленчатого вала двигателя при максимальной скорости движения тягача к номинальной частоте вращения:

, (2)

nN- частота вращения коленчатого вала двигателя на режиме максимальной мощности (номинальная), мин-1

nv- частота вращения коленчатого вала двигателя при максимальной скорости автомобиля, мин-1.

Мощность на режиме максимальной скорости определяется по формуле (3):

, (3)

где m0- масса тягача, кг;

Ψv - суммарный коэффициент сопротивления дороги;

V max– заданная максимальная скорость тягача;

ηтр – КПД трансмиссии;

Kв- коэффициент сопротивления воздуха, кг/м3;

F – лобовая площадь тягача, м2.

Внешняя характеристика двигателя представляет собой зависимость мощности, крутящего момента от частоты вращения коленчатого вала двигателя при полном открытии заслонки карбюратора.

При известном значении максимальной мощности Nemax мощность в любой другой точке характеристики может быть найдена по формуле Лейдермана:

(4)

где Ne- мощность двигателя при произвольном значении частоты вращения коленчатого вала, кВт;

Nemax- максимальная мощность двигателя, кВт;

n - заданная частота вращения коленчатого вала, мин-1;

nN- частота вращения коленчатого вала на режиме максимальной мощности, мин-1;

a,b,c- коэффициенты, принимаемые для бензиновых двигателей, равны 1.

Крутящий момент в любой точке характеристики определяется по формуле:

Me=9549 (Ne/ n), (5)

Составим схему алгоритма. В алгоритме будет три блока: ввод исходных данных, расчет по формулам(1)-(5) и вывод результата.

По приведенной блок-схеме была составлена программа, листинг которой приведен ниже.

program lab1;

var m0,vmax,Ke,F,Fv,nN,Ky,n_tr:real; {peremennye - ishodnye dannye}

Nv,Ne_max,n_v,Ne,Me:real; {peremennye - rezultaty}

BEGIN

{-----------VVOD ISHODNYH DANNYH-----}

writeln ('Vvedite ishodnye dannye:');

write ('m0=');readln(m0);

write ('Vmax=');readln(Vmax);

write ('Ke=');readln(Ke);

write ('F=');readln(F);

write ('Fv=');readln(Fv);

write ('nN=');readln(nN);

write ('Ky=');readln(Ky);

write ('n_tr=');readln(n_tr);

{----------RASCHET-------------------}

Nv:=2.725E-03*m0*Fv*Vmax/n_tr+2.14e-05*Ke*F*sqr(Vmax)*Vmax/n_tr;

Ne_max:=Nv/(Ky*(1+Ky*(1+Ky)));

n_v:=Ky*nN;

Ne:=Ne_max*(n_v/nN+sqr(n_v/nN)-sqr(n_v/nN)*n_v/nN);

Me:=9549*(Ne/n_v);

{----------VIVOD REZULTATA-----------}

writeln('Nv=',Nv);

writeln('Ne_max=',Ne_max);

writeln('n_v=',n_v);

writeln('Ne=',Ne);

writeln('Me=',Me);

End.

Решение этой же задачи было проведено в ЭТ Excel. Ниже представлен лист с решением и результатами.

Программу написанную на языке Паскаль копирую и вставляю в проект, затем исправляю существенные различия.

Задача 2.

Вычислить функцию

, для
с шагом
.
a b h f(x)
Начало отрезка Конец отрезка Шаг по отрезку
9 -12 0 1

РЕШЕНИЕ

Выполним схему алгоритма.


Эта схема была реализована на языке Паскаль в трех вариантах: были задействованы циклы с предусловием, с постусловием и с параметром. Листинги программ приведены ниже.

а) Цикл с постусловием

programlab21;

var x,f:real;

begin

x:=-12;

repeat

if x<-7 then f:=sin((3.14/12)*x)

else

if x<=-3 then f:=2*cos((3.14/6)*x+(3.14/12))

else

f:=5* sin((3.14/12)*x);

writeln('f(',x:3:1,')=',f:6:2);

x:=x+1;

until x>0;

readln;

end.

б) Цикл с предусловием

program lab22;

var x,y:real;

begin

x:=-12;

while x<=0 do

begin

if x<-7 then y:= sin((3.14/12)*x)

else

if x<=-3 then y:= 2*cos((3.14/6)*x+(3.14/12))

else

y:= 5* sin((3.14/12)*x);

writeln('f(',x:3:1,')=',y:6:2);

x:=x+1;

end;

readln;

end.

в) Цикл с параметром

program lab23;

var

x,y,a,b,h,n1: real;

n ,i : integer;

begin

x:=-12;

a:=-12;b:=0;h:= 1;

n1:=(b-a)/h; n:=round(n1);

for i:=0 to n do

begin

if x<-7 then y:= sin((3.14/12)*x)

else

if x<=-3 then y:= 2*cos((3.14/6)*x+(3.14/12))

else

y:= 5* sin((3.14/12)*x);

writeln('f(',x:3:1,')=',y:6:2);

x:=x+1;

end;

readln;

end.

Решение этой же задачи было проведено в Excel. При вычислении функции использовалась логическая функция ЕСЛИ. Лист с решением задачи размещен ниже.

Программу написанную на языке Паскаль копирую и вставляю в проект, затем исправляю существенные различия.

Задача 3

Применить метод деления отрезка пополам на интервале

и найти с точностью
корни уравнения
.
9 -3 0

РЕШЕНИЕ

Алгоритм метода половинного деления заключается в следующем:

1. Выбрать нулевое приближение x0=(a+b)/2.

2. Если f(x0)=0, то x0 очевидно является корнем уравнения.

3. Если f(x0)≠0, то проверить условия f(x0f(a)<0 и f(x0f(b)<0 и выбрать тот из отрезков [a, х0], [х0, b], на границах которого выполнено одно из этих условий (т.е. функция f(х) имеет на концах отрезка противоположные знаки).

4. Выбранный отрезок вновь разделить пополам и вычислить значение x1.

5. Для х1 проверить условие f(х1)=0 и, если оно не выполняется, вернуться к п. 4.

6. Процесс деления отрезков пополам продолжить до тех пор, пока длина отрезка, на концах которого функция имеет противоположные знаки, не будет меньше e .

7. Принять, что условие f(xk)= 0 выполнено, если

Ниже приведены блок-схема алгоритма и листинг программы на языке Паскаль.


Program lab3;

function f1 (x: real): real;

begin

f1:=cos(0.2*x*x-2);

end;

var

x,a,b,e: real;

iteraz: integer;

begin

write ('Input a = '); readln (a);

write ('Input b = '); readln (b);

write ('Input e = '); readln (e);

iteraz:=0;

x:=(a+b)/2;

while (f1(x)<>0) and (abs(a-b)>e) do