Московский государственный авиационный институт
(технический университет)
МАИ
кафедра 301
Лабораторная работа по курсу ВАТАУ №1
«Вычислительные операции с многочленами и передаточными функциями».
Подготовил: Филатов Д.
Группа:03-405
Москва, 2011
Перечень вычислительных задач.
1. Ввести вывести многочлен.
2. Сложить два многочлена.
3. Умножить два многочлена.
4. Умножить многочлен на число.
5. Вычислить передаточную функцию по заданной структурной схеме представленной на рисунке 1.
Рисунок 1. Структурная схема.
Передаточная функция такой структуры будет иметь вид
W1/(1+W2W1+W1W3)
Или, если представить передаточные функции в виде: a1/b1, a2/b2, a3/b3
a1b2b3/(b2b1b3+a2a1b3+a1a3b2).
Задача №1.
Структурные данные на входе и входе.
Входными данными служат:
- n – целое {порядок многочлена};
-а[0:n] массив действительных {коэффициенты многочлена};
Выходными данными служат:
- n – целое {порядок многочлена};
-а[0:n] массив действительных {коэффициенты многочлена};
Алгоритм решения задачи.
Начало
Ввод порядка многочлена вида аnS^n +аn-1S^n-1 +…+a0 (ввод n)
Для i от 0 до n:
Ввод коэффициентов многочлена а[i].
Для i от n до 1:
Вывести а[i]
Вывести n.
Конец.
Текст программы.
program vatayl11;
uses crt;
var i,n:integer;
var a:array[0..10] of real;
begin
clrscr;
writeln('vvedi poradok mnogochlena an*S^n+..+a0');
read(n);
for i:=0 to n do
begin
writeln('vvedi koefficient a', i);
read(a[i]);
end;
for i:=0 to n do
begin
writeln('a',i,'=',a[n-i]:2:1);
end;
writeln('poradok mnogochlena=',n);
read(n);
end.
Типовой пример
Примеры работы программы приведены на рисунках 2 и 3
Рисунок 2. Пример работы программы решения задачи №1
Рисунок 3. Пример работы программы решения задачи №1
Задача №2
Структурные данные на входе и входе.
Входными данными служат:
- nа – целое {порядок первого многочлена};
-а[0:nа] массив действительных {коэффициенты первого многочлена};
- nb – целое {порядок второго многочлена};
-b[0:nb] массив действительных {коэффициенты второго многочлена};
Выходными данными служат:
- nс – целое {порядок полученного многочлена};
-c[0:nc] массив действительных {коэффициенты полученного многочлена};
Алгоритм решения задачи.
Начало
Ввод порядка многочлена вида аnS^n +аn-1S^n-1 +…+a0 (ввод nа)
Для i от 0 до nа:
Ввод коэффициентов многочлена а[i].
Ввод порядка многочлена вида bnS^n +bn-1S^n-1 +…+b0 (ввод nb)
Для i от 0 до nb:
Ввод коэффициентов многочлена b[i].
Если na>nb то
Для i от 0 до na
c[i]=а[i]
Для i от 0 до nb
c[i]=c[i]+b[i]
Вывести порядок полученного многочлена na.
Для i от n до na:
Вывести c[i]
Иначе
Для i от 0 до nb
c[i]=b[i]
Для i от 0 до na
c[i]=с[i]+а[i]
Вывести порядок полученного многочлена nb
Для i от n до nb:
Вывести c[i]
Конец.
Текст программы.
program vatayl12;
uses crt;
var i,na,nb:integer;
var c, a, b:array[0..10] of real;
begin
clrscr;
writeln('vvedi poradok mnogochlena an*S^n+..+a0');
read(na);
for i:=0 to na do
begin
writeln('vvedi koefficient a', i);
read(a[i]);
end;
writeln('vvedi poradok mnogochlena bn*S^n+..+b0');
read(nb);
for i:=0 to nb do
begin
writeln('vvedi koefficient b', i);
read(b[i]);
end;
if na>nb then
begin
for i:=0 to na do
c[i]:=a[i];
for i:=0 to nb do
c[i]:=c[i]+b[i];
writeln('poradok mnogochlena cn*S^n+..+c0=',na);
for i:=0 to na do
writeln('c',i,'=',c[i]:2:1);
end
else
begin
for i:=0 to nb do
c[i]:=b[i];
for i:=0 to na do
c[i]:=c[i]+a[i];
writeln('poradok mnogochlena cn*S^n+..+c0=',nb);
for i:=0 to nb do
writeln('c',i,'=',c[i]:2:1);
end;
read(na);
end.
Типовой пример
Примеры работы программы приведены на рисунках 4 и 5
Рисунок 4. Пример работы программы решения задачи №2
Рисунок 5. Пример работы программы решения задачи №2
Произведем сложение вручную
Задача 3
Структурные данные на входе и входе.
Входными данными служат:
- nа – целое {порядок первого многочлена};
-а[0:nа] массив действительных {коэффициенты первого многочлена};
- nb – целое {порядок второго многочлена};
-b[0:nb] массив действительных {коэффициенты второго многочлена};
Выходными данными служат:
- nс – целое {порядок полученного многочлена};
-а[0:nc] массив действительных {коэффициенты полученного многочлена};
Алгоритм решения задачи.
Начало
Ввод порядка многочлена вида аnS^n +аn-1S^n-1 +…+a0 (ввод nа)
Для i от 0 до nа:
Ввод коэффициентов многочлена а[i].
Ввод порядка многочлена вида bnS^n +bn-1S^n-1 +…+b0 (ввод nb)
Для i от 0 до nb:
Ввод коэффициентов многочлена b[i].
Для i от 0 до na
Для j от 0 до nb
k=i+j
с[k]=a[i]b[i]+c[k]
Вывести порядок полученного многочлена k
Для i от 0 до nb+na:
Вывести c[i]
Конец.
Текст программы.
program vatayl12;
uses crt;
var i,j,k,na,nb:integer;
var c, a, b:array[0..10] of real;
begin
clrscr;
writeln('vvedi poradok mnogochlena an*S^n+..+a0');
read(na);
for i:=0 to na do
begin
writeln('vvedi koefficient a', i);
read(a[i]);
end;
writeln('vvedi poradok mnogochlena bn*S^n+..+b0');
read(nb);
for i:=0 to nb do
begin
writeln('vvedi koefficient b', i);
read(b[i]);
end;
for j:=0 to nb do
for i:=0 to na do
begin
k:=j+i;
c[k]:=a[i]*b[j]+c[k];
end;
writeln('poradok mnogochlena cn*S^n+..+c0', k);
for i:=0 to na*nb do
writeln('c',i,'=',c[i]:2:1);
read(na);
end.Типовой пример
Примеры работы программы приведены на рисунках 6 и 7
Рисунок 6. Пример работы программы решения задачи №3
Рисунок 7. Пример работы программы решения задачи №3
Произведем умножение вручную