Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика / ИНДИВИД ЗАДАНИЕ ЭКОНОМИСТЫ _Методичка

.pdf
Скачиваний:
16
Добавлен:
12.04.2015
Размер:
659.27 Кб
Скачать

Задачи для самостоятельного анализа

Задача 1.

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

f (x) = 2 + x + ln(x) , x= 1.256 . x 2 + 3x + 2

Решение:

program func1 (input, output); var x,y: real;

begin

writeln('Введите значение х'); read(x); y:= sqrt(2 + x) + ln(x);

y:= y/abs(sqr(x) + 3*x + 2); writeln('x=',x,' y=',y)

end.

Задача 2.

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

ì

1

x(x2 + sin x) ,при х < 0

ï

 

2

f (x) = í

 

2

 

- x

 

ï

2x

+ 3e

, при х ³ 0

î

 

 

Решение:

program func2 (input,output); var x,y : real;

begin

writeln('Введите значение х'); read (x);

if x<0 then y:= 0.5*x*(sqr(x) + sin(x)) else y:= 2*sqr(x) + 3*exp(-x);

writeln('x=',x,' y=',y) end.

Задача 3.

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

ì

 

 

 

 

 

при 0 £ x £1

ïtg x ,

 

 

 

ï

1

 

 

 

 

 

f (x) = í

 

+ sin x,

при x >1

 

ïx

 

-x

2

 

при х < 0

ï

1 + e

,

 

 

î

 

 

 

 

 

- 51 -

 

 

Решение:

program func3 (input, output); var x,y: real;

begin

writeln('Введите значение х'); read(x); if x<0 then y := 1 + exp(-sqr(x))

else

if x <= 1 then y:=sin(x)/cos(x) else y:=1/x + sin(x));

writeln('x=',x,' y=',y) end.

Задача 4.

Составить программу на языке Turbo-Pascal для вывода таблицы функции y = f(x) на отрезке

[a, b] c шагом h.

f (x) = x(1 + e - x 2 ) , a = 2, b = 7, h = 0.5 .

Решение:

program tab (input,output); var a,b,x,y,h : real; begin

writeln ('Введите значения a, b, h'); read(a,b,h); x:=a;

repeat y:=x*(1 + exp(-sqr(x))); writeln('x=',x,' y=',y);

x:=x + h until (x <= b) end.

Задача 5.

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

f(x) = esin x, x = {1, 3, 4, 5, 9, 13, 19, 20}

Решение:

Для решения задачи образуем одномерный массив x[i].

program massiv1 (input,output); const n = 8;

var x,y : array[1..n] of real; i : integer;

begin

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

for i:=1 to n do begin

- 52 -

y[i]:=exp(sin(x[i])); writeln('x[',i,']=',x[i],' y[',i,']=',y[i]) end;

end.

Задача 6.

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

f(x) = arctg (ln x), x = {1, 5, 7, 13, 16, 25, 44}.

Решение:

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

var x,y : array[1..n] of real; i : integer;

s : real; begin

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

s:=0;

for i:=1 to n do begin

y[i]:= arctan(x[i]); s:=s + y[i]

end;

writeln('Суммма значений функции s=',s) end.

Задача 7.

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

Cos xy

 

f (x, y) = x 2 + y 2

, x = {1, 2, 3, 6, 8, 10, 11, 19}, y = {0, 5, 7, 20, 25, 26}.

Решение:

Образуем два одномерных массива x[i], y[i] и двумерный массив z[i,j].

program massv2(input,output); const n=8; m=6;

type vectx=array[1..n] of real; vecty=array[1..m] of real; matrz=array[1..n,1..m] of real;

var x:vectx; y:vecty; z:matrz; i,j: integer;

- 53 -

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 -

Соседние файлы в папке Информатика