Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КМ_ЛР1_БУ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
112.13 Кб
Скачать

3.Примеры программной реализации рассмотренных методов (на языке бейсик).

Действия с матрицами

Ввод матрицы

01 cls

05 print "Ввод матрицы размерности m*n"

10 input "Введите размерность m,n", m,n

15 for i=1 to m

20 for j=1 to n

25 print "Введите элементы a(";i;j;")=";:input ,a(i,j)

30 next j

35 next i

40 end

Умножение матрицы на число

01 cls

03 rem "матрица считается введенной"

05 print "Умножение матрицы на число"

10 input "Введите число c", c

15 for i=1 to n

17 for j=1 to n

20 a(i,j)=c*(a,j)

23 next j

25 next i

27 rem "Произведение занесено на место исходной матрицы"

30 end

Формирование единичной матрицы

01 cls

05 print "Формирование единичной матрицы"

10 input "Введите размерность матрицы n",n

15 dim e(n,n)

20 for i=1 to n

25 for j=1 to n

30 if i<>j then e(i,j)=0 else e(i,j)=1

35 next j

40 next i

45 end

Транспонирование матрицы

01 cls

05 print "Транспонирование матрицы"

06 rem "Исходная матрица считается введенной"

07 dim at(n,m)

10 for i=1 to m

15 for j=1 to n

20 at(i,j)=a(j,i)

25 next j

30 next i

35 end

Произведение двух матриц размерностями m*n и n*l

01 cls

05 print "Умножение матриц A(m,n) на B(n,l)"

07 rem "Матрицы считаются введенными, результат записывается в С(n,l))"

10 for k=1 to m

15 for j=1 to l

20 s=0

25 for i=1 to n

30 s=s+a(k,i)*b(i,j)

35 next i

40 c(k,j)=s

45 next j

50 next k

55 end

Сумма двух матриц размерностями m*n и m*n

01 cls

05 print "Сложение матриц A(m,n) на B(m,n)"

07 rem "Матрицы считаются введенными, результат записывается в С(m,n))"

09 dim c(m,n)

10 for i=1 to m

25 for j=1 to n

30 C(m,n)=A(m,n)+B(m,n)

35 next j

45 next i

55 end

Простой метод Гаусса

01 cls

05 print " Решение системы линейных уравнений методом Гаусса"

10 input " Введите число уравнений N=",n

20 dim a(n,n),b(n),x(n)

25 rem "Ввод коэффициентов уравнения"

30 for i=1 to n

40 for j=1 to n

45 locate 3,1:print " ";

46 locate 3,1:print "Введите a(";i;j;")=";

47 input, a(i,j)

50 next j

51 locate 4,1:print " ";

52 locate 4,1:print "Введите b(";i;")=";

53 input ,b(i)

55 next i

57 rem “Прямой ход”

60 for i=1 to n-1

65 for j=i+1 to n

70 a(j,i)=-a(j,i)/a(i,i)

75 for k=i+1 to n

80 a(j,k)=a(j,k)+a(j,i)*a(i,k)

85 next k

90 b(j)=b(j)+a(j,i)*b(i)

92 next j

95 next i

97 rem “Обратный ход”

100 x(n)=b(n)/a(n,n)

110 for i=n-1 to 1 step -1

112 h=b(i)

115 for j=i+1 to n

120 h=h-x(j)*a(i,j)

125 next j

130 x(i)=h/a(i,i)

135 next i

140 print " Решения системы"

145 for i=1 to n

150 print “x(”;i;“)=”;x(i)

155 next i

160 end

Метод Гаусса с выбором главного элемента

01 cls

05 print " Решение системы линейных уравнений методом Гаусса с выбором главного элемента"

10 input " Введите число уравнений n=",n

15 dim a(n,n),b(n),c(n,n),g(n),x(n)

20 for i=1 to n

25 for j=1 to n

30 print " Введите коэффициенты a(";i;j;")=";:input ,a(i,j)

35 next j

40 print " Введите свободный член b(";i;")=";:input ,b(i)

45 next i

80 gosub 100

85 for i=1 to n

90 print "Решение x(";i;")=";x(i)

95 next i

98 end

100 n1=n-1

105 for k=1 to n1

110 if abs(a(k,k))>0 then goto 200

115 k1=k+1

120 for m=k1 to n

125 if abs(a(m,k))>0 then goto 150

130 goto 165

150 for l=1 to n

155 v=a(k,l): a(k,l)=a(m,l)

160 a(m,l)=v

163 next l

165 next m

170 v=b(k): b(k)=b(m): b(m)=v

200 g(k)=b(k)/a(k,k): k1=k+1

205 for i=k1 to n

210 b(i)=b(i)-a(i,k)*g(k)

215 for j1=k to n

220 j=n-j1+k: c(k,j)=a(k,j)/a(k,k)

225 a(i,j)=a(i,j)-a(i,k)*c(k,j)

230 next j1

235 next i

237 next k

240 m=n: x(m)=b(m)/a(m,m)

245 m=m-1:s=0

250 for l=m to n1

255 s=s+c(m,l+1)*x(l+1)

260 next l

265 x(m)=g(m)-s

270 if m>1 then goto 245

280 return

Метод вращения

01 cls

05 print "Решение системы линейных уравнений методом вращения"

07 input " Введите число уравнений n=",n

10 m=0: dim a(n,n)

15 for i=1 to n

20 for j=1 to n

25 print "Введите коэффициенты a(";i;j;")=";:input ,a(i,j)

30 next j

40 print "введите свободный член b(";i;")=";:input ,a(i,0)

65 next i

70 for i=1 to n-1

75 for k=i+1 to n

80 if a(i,i)<>0 then goto 110

85 if a(k,i)<>0 then goto 110

90 m=0

95 l=0

100 goto 130

110 m=sqr(a(i,i)^2+a(k,i)^2)

120 l=-a(k,i)/m:m=a(i,i)/m

130 for j=1 to n

135 r=m*a(i,j)-l*a(k,j)

140 a(k,j)=l*a(i,j)+m*a(k,j)

145 a(i,j)=r

150 next j

155 r=m*a(i,0)-l*a(k,0)

160 a(k,0)=l*a(i,0)+m*a(k,0)

165 a(i,0)=r

170 next k

175 next i

180 for i=n to 1 step -1

185 m=0

190 for k=0 to n-i-1

195 m=m+a(0,n-k)*a(i,n-k)

200 next k

205 a(0,i)=(a(i,0)-m)/a(i,i)

210 print "решение x(";i;")=";a(0,i)

215 next i

220 end

Метод простых итераций

01 cls

10 print "Решение системы линейных уравнений методом простых итераций"

20 input " Введите число уравнений n=";n

25 dim a(n,n),b(n),x(n),z(n)

30 input " Задайте погрешность вычислений e=",e

40 for i=1 to n

50 for j=1 to n

55 print " Введите коэффициент a("i;j;")=";:input ,a(i,j)

60 if j=n then print "Введите свободный член b(";i;")=";: input ,b(i)

70 next j

75 next i

80 s=0

85 for i=1 to n

90 print "Введите начальные приближения x(";i;")[0]";:input ,z(i)

95 next i

100 k=0

105 for i=1 to n

110 x(i)=-b(i)

115 for j=1 to n

120 x(i)=x(i)+a(i,j)*z(j)

125 next j

130 if abs(x(i)/a(i,i))>=e then k=1

135 x(i)=z(i)-x(i)/a(i,i)

140 next i

145 for i=1 to n

150 z(i)=x(i)

155 next i

160 s=s+1

165 if k=1 then goto 100

170 print "Решения системы"

175 for i=1 to n

180 print x(i)

185 next i

190 print "Число итераций s=";s

195 end

Решение системы линейных уравнений методом Зейделя

01 cls

05 print "Решение системы линейных уравнений методом Зейделя"

10 input " Введите число уравнений n=", n

15 dim a(n,n),b(n),x(n),z(n)

20 input " Введите погрешность вычислений e=",e

30 for i=1 to n

35 for j=1 to n

40 print " Введите коэффициенты a(";i;j;")=";:input ,a(i,j)

45 if j=n then print " Введите свободный член b(";i;")=";:input ,b(i)

50 next j

55 next i

60 s=0

65 for i=1 to n

70 print " Задайте начальные приближения x(";i;")=";:input ,z(i)

75 next i

100 k=0

103 for i=1 to n

105 x(i)=-b(i)

107 for j=1 to n

110 x(i)=x(i)+a(i,j)*z(j)

115 next j

117 if abs(x(i)/a(i,i))>=e then k=1

120 x(i)=z(i)-x(i)/a(i,i):z(i)=x(i)

125 next i

130 s=s+1

135 if k=1 then goto 100

140 print " Решение системы"

145 for i=1 to n

150 print x(i)

155 next i

160 print "Число итераций s=";s

165 end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]