Файл: ИНДИВИД ЗАДАНИЕ ЭКОНОМИСТЫ _Методичка.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.07.2024

Просмотров: 144

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

begin

writeln('Введите элементы массива х'); for i:=1 to n do read(x[i]); writeln('Введите элементы массива у'); for i:=1 to m do read(y[i]);

for i:=1 to n do for j:=1 to m do

begin z[i,j]=cos(x[i]*y[j])/(sqr(x[i])+sqr(y[j]));

writeln('x[',i,]=',x[i],'y[',j,']=',y[j],' z[',i,',',j,']=',z[i,j]) end;

end.

Задача 8.

Составить программу на языке Turbo-Pascal для нахождения максимального элемента матрицы А размера m x n.

Решение:

program maxel (input, output); const n=4, m=3;

var a: array[1..n,1..m] of real; max: real;

i,j: integer; begin

writeln('Введите элементы матрицы А по строкам'); for i:=1 to m do

for j:=1 to n do read(a[i,j]); max:= a[1,1];

for i:=1 to m do for j:=1 to n do

if max < a[i,j] then max:=a[i,j]; writeln('Максимальный элемент матрицы А равен',max) end.

Задача 9.

Составить программу на языке Turbo-Pascal решения системы линейных уравнений методом Гаусса.

Решение:

Для решения образуем расширенную матрицу A размера n x n+1, составленную из коэффици- ентов системы и столбца свободных членов, и соответствующий двумерный массив a[i,j]. Программа метода Гаусса с выбором главного элемента имеет вид:

program gauss (input, output); const n=3; n1=4;

type str=array[1..n1] of real; matr=array[1..n] of str; toll=array[1..n] of real;

var a:matr;

- 54 -

x:toll;

maxabs, v: real; i,j,l,k: integer;

begin

writeln('Введите коэффициенты системы уpавнений по стpокам'); for i:=1 to n do

for j:=1 to n+1 do read(a[i,j]);

for i:=1 to n do begin

maxabs:=abs(a[i,i]); k:=i; for l:=i+1 to n do

if abs(a[l,i])>maxabs then begin

maxabs:=abs(a[l,i]);

k:=l end;

if k<>i then

for j:=i to n+1 do begin

v:=a[i,j]; a[i,j]:=a[k,j]; a[k,j]:=v; end;

v:=a[i,i];

for j:=i to n+1 do a[i,j]:=a[i,j]/v; for l:=i+1 to n do

begin v:=a[l,i];

for j:=i+1 to n+1 do a[l,j]:=a[l,j]-a[i,j]*v

end;

end; x[n]:=a[n,n+1];

for i:=n-1 downto 1 do begin

x[i]:=a[i,n+1]; for j:=i+1 to n do

x[i]:=x[i]-a[i,j]*x[j] end;

writeln('Решение системы линейных уpавнений :'); begin

for i:=1 to n do writeln('x[',i,'] = ',x[i]:10:4)

end; end.

Задача 10.

Составить программу на языке Turbo-Pascal вычисления значения функции, заданной таблич- ным способом, с помощью многочлена Лагранжа.

Решение:

Для решения образуем два одномерных массива x[i], y[i]. - 55 -


program polynom (input,output); const n=10;

var x,y,z : array[1..n] of real; p,xv,yv : real;

i,j : integer; begin

writeln('Введите элементы массива х'); for i:=1 to n do read(x[i]); writeln('Введите элементы массива у'); for i:=1 to n do read(y[j]); writeln('Введите значение xv'); read(xv);

yv:=0; p:=1:

for j:=1 to n do begin

for i:=1 to n do

if i<>j then p:=p*(xv-x[i])/(x[j]-x[i]); z[j]:=p;

yv:=yv+z[j]*y[j] end;

writeln('xv=',xv,' y=',yv) end.

Задача 11.

Составить программу на языке Turbo-Pascal решения нелинейного уравнения f(x) = 0 методом итераций и методом Ньютона с точностью до 0.0001.

f(x) = x - cos x .

Решение:

Для решения задачи методом итераций запишем исходное уравнение в виде x = cos x.

program iter (input,output); const eps=0.0001;

var x,y : real; begin

writeln('Введите нулевое приближение x0'); read (y);

repeat x:=y;

y:= cos(x); until (abs(x-y)>eps)

writeln('Решение уравнения : x=',x) end.

Для решения задачи методом Ньютона вычислим производную функции f(x) :

f'(x) = 1 + sin x .

program newton (input,output); const eps = 0.0001;

var x,y : real; begin

- 56 -

writeln('Введите нулевое приближение х0'); read(y);

repeat x:=y; y:=x-(x-cos(x))/(1+sin(x))

until (abs(x-y)>eps);

writeln ('Решение уравнения : x=',x) end.

Задача 12

Составить программу на языке Turbo-Pascal для вычисления определенного интеграла от функции f(x) на отрезке [a, b] методом Симпсона.

f(x) = x2 ln x, a=2, b=5.

Решение:

Для четного числа разбиений n и равномерной сетки формула Симпсона имеет вид

h

I = 3 (f 0+ 2(f 2 + f 4 + ... + f n-2) +4(f 1 + f3 +...+ f n-1) + f n).

program simpson(input,output); const n=20;

var a,b,h,s : real; m,i : integer;

function f(x:real) : real; begin

f:=sqr(x)*ln(x) end;

begin

writeln('Введите пределы интегрирования а,в'); read(a,b); h:=(b-a)/n; m:= n div 2;

s:=0;

for i:=1 to m-1 do s:=s+2*f(a+2*i*h); for i:=1 to m do

s:=s+4*f(a+(2*i-1)*h); s:=s+f(a)+f(b); s:=s*h/3; writeln('Значение интеграла s =',s)

end.

Задача 13.

Составить программу на языке Turbo-Pascal для решения дифференциального уравнения пер- вого порядка y' = f(x, y) методом Эйлера при начальных условиях: y(a) = b.

f(x, y) = x sin x + y cos x .

Решение:

- 57 -


Для решения задачи следует ввести шаг приращения h, тогда алгоритм вычисления значений искомой функции y(x) определится рекуррентным соотношением

y k+1= yk + h f(xk, yk) , (k = 0, 1, ..., n-1).

Программа имеет вид

program euiler (input, output); const n = 20;

var a,b,h,x,y : real; i : integer;

begin

writeln('Введите значения начальных условий a,b и шаг h'); read(a,b,h);

i:=0; x:=a; y:=b;

repeat writeln('x=',x,' y=',y); y:=y+h*(x*sin(x)+y*cos(x)); x:=x+h;

i:=i+1 until (i>n)

end.

Задача 14.

Составить программу на языке Turbo-Pascal для аппроксимации табличной функции по методу наименьших квадратов. В качестве аппроксимирующих зависимостей рассмотреть:

1) линейную зависимость y = a + bx;

2) степенную зависимость y = axb ;

3) экспоненциальную зависимость y = a exp(bx).

x = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5 }, y = {1.5, 1.9, 2.9, 4.5, 5.3, 9.0, 12.8}.

Решение:

Для решения образуем два одномерных массива x[i], y[i] размера n и воспользуемся формула- ми линейной, степенной и экспоненциальной регрессии.

program mnk (input,output); const n = 7;

var x,y : array[1..n] of real; sumx,sumy,sumx2,sumxy,sumlx, sumly,sumxly,sumlx2,sumlxy, a,b : real;

i : integer; k : (1,2,3);

begin

writeln('Введите элементы массива х'); for i:=1 to n do read(x[i]); writeln('Введите элементы массива у'); for i:=1 to n do read(y[i]); sumx:=0;sumy:=0;sumx2:=0;sumxy:=0; sumlx:=0;sumly:=0;sumlx2:=0;sumlxy:=0; for i:=1 to n do

- 58 -

begin

sumx :=sumx+x[i]; sumy :=sumy+y[i];

sumx2 :=sumx2+sqr(x[i]); sumxy :=sumxy+x[i]*y[i]; sumlx :=sumlx+ln(x[i]); sumly :=sumly+ln(y[i]); sumlx2:=sunlx2+sqr(ln(x[i]));

sumlxy:=sumlxy+ln(x[i])*ln(y[i]);

sumxly:=sumxly+x[i]*ln(y[i]) end;

writeln('Выберите нужную Вам зависимость, writeln('нажав на соответствующую клавишу: 1,2 или 3'); writeln('1. Линейная зависимость');

writeln('2. Степенная зависимость'); writeln('3. Экспоненциальная зависимость');

read(k); case k of

1: begin b:=(sumx*sumy-n*sumxy)/(sqr(sumx)-n*sumx2); a:=(sumy-a*sumx)/n;

writeln('Линейная аппроксимация:'); writeln('y=',a,'+',b,'x')

end;

2: begin b:=(sumlx*sumly-n*sumlxy)/(sqr(sumlx)-n*sumlx2); a:=exp((sumly-b*sumlx)/n;

writeln('Степенная аппроксимация:'); writeln('y=',a,'x**',b)

end;

3: begin b:=(sumx*sumly-n*sumxly)/(sqr(sumx)-n*sumx2); a:=exp((sumly-b*sumx)/n); writeln('Экспоненциальная зависимость:'); writeln('y=',a,'exp(',b,'x)')

end.

- 59 -


Задание 3. Задачи для самостоятельного решения

Вариант задания выбирается по предпоследней цифре номера зачетной книжки.

Составить программу на языке Turbo Pascal для решения следующей задачи

Вариант

Задача

1

Дана матрица вещественных чисел А размерности n×m (n – столбцов, m –

 

строк). Заменить все элементы главной диагонали матрицы на единицу.

2

Дана матрица вещественных чисел А размерности n×m (n – столбцов, m –

 

строк). Рассчитать сумму элементов первой и последней строк матрицы.

 

 

3

Дана целочисленная матрица А размерности n×m (n – столбцов, m –

 

строк). Рассчитать среднее арифметическое значение элементов третьей

 

строки матрицы. Принять n = 4, m = 5.

4

Дана целочисленная матрица А размерности n×m (n – столбцов, m –

 

строк). Рассчитать среднее арифметическое значение элементов послед-

 

него столбца матрицы. Принять n = 4, m = 5.

5

Дана матрица вещественных чисел А размерности n×m (n – столбцов, m –

 

строк). Получить новую матрицу, заменив все нулевые элементы макси-

 

мальным элементом матрицы.

 

 

6

Дана целочисленная матрица А размерности n×m (n – столбцов, m –

 

строк). Посчитать количество элементов матрицы, превосходящих сред-

 

нее арифметическое значение элементов матрицы. Принять n = 4, m = 5

 

 

7

Дана матрица вещественных чисел А размерности n×m (n – столбцов, m –

 

строк). Получить новую матрицу, заменив все элементы главной диаго-

 

нали исходной матрицы максимальным элементом матрицы.

 

 

8

Дана матрица вещественных чисел А размерности n×m (n – столбцов, m –

 

строк). Получить новую матрицу, заменив все элементы с нечетной сум-

 

мой индексов максимальным элементом матрицы, а элементы с четной

 

суммой индексов нулем.

 

 

9

Дана матрица вещественных чисел А размерности n×m (n – столбцов, m –

 

строк). Получить новую матрицу, заменив все элементы побочной диаго-

 

нали исходной матрицы максимальным элементом матрицы.

10

Дана целочисленная матрица А размерности n×m (n – столбцов, m –

 

строк). Указать индексы элементов принадлежащих интервалу [a,b]. (n=4,

 

m=5).

 

 

- 60 -