Методич_стат-исправлено. Методические указания по курсу Информатика
Скачать 2.11 Mb.
|
БЛОК-СХЕМА АЛГОРИТМА РЕШЕНИЯЗапись всех подпрограмм можно осуществить через меню оболочки QBasic:
На экране появляется заготовка для создания подпрограммы: SUB <имя подпрограммы, параметры> <текст подпрограммы> END SUB
ВИД ПРОГРАММЫ НА ЯЗЫКЕ QBASICГоловной модуль на языке QBasic DECLARE SUB eiler (a!, b!, h!, y0!) DECLARE SUB koshi (a!, b!, h!, y0!) DECLARE SUB runge (a!, b!, h!, y0!) DECLARE FUNCTION f! (x!, y0!) CLS DIM SHARED eilerM(1000), koshiM(1000), rungeM(1000) INPUT "левый конец интервала a= "; a INPUT "правый конец интервала b= "; b INPUT "шаг "; h INPUT "краевое значение функции Y0= "; y0 yy = y0 'сохранение краевого значения функции REM Вызов Метода Эйлера CALL eiler(a, b, h, yy) yy = y0 REM Вызов Метода Эйлера-Коши CALL koshi(a, b, h, yy) yy = y0 REM Вызов Метода Рунге-Кутта CALL runge(a, b, h, yy) PRINT "--------------------------------------------------------------" PRINT "│ x │ elier │ koshi │ runge │" PRINT "--------------------------------------------------------------" L$ = "│ #.# │ ##.##### │ ##.##### │ ##.##### │" i = 1 FOR x = a TO b + h / 2 STEP h PRINT USING L$; x; eilerM(i); koshiM(i); rungeM(i) i = i + 1 NEXT x PRINT "--------------------------------------------------------------" END Первые четыре строчки пишутся автоматически при присоединении подпрограмм к головному модулю в результате выполнения команды Save All. Подпрограмма для решения дифференциального уравнения методом Эйлера: SUB eiler (a, b, h, y0) i = 1 eilerM(i) = y0 FOR x = a TO b + h / 2 STEP h y = y0 + h * f(x, y0) y0 = y i = i + 1 eilerM(i) = y0 NEXT x END SUB Подпрограмма для решения дифференциального уравнения методом Эйлера-Коши: SUB koshi (a, b, h, y0) i = 1 koshiM(i) = y0 FOR x = a TO b + h / 2 STEP h k1 = h * f(x, y0) k2 = h * f(x + h, y0 + k1) y = y0 + (k1 + k2) / 2 y0 = y i = i + 1 koshiM(i) = y0 NEXT x END SUB Подпрограмма для решения дифференциального уравнения методом Рунге-Кутта: SUB runge (a, b, h, y0) i = 1 rungeM(i) = y0 FOR x = a TO b + h / 2 STEP h k1 = h * f(x, y0) k2 = h * f(x + h / 2, y0 + k1 / 2) k3 = h * f(x + h / 2, y0 + k2 / 2) k4 = h * f(x + h, y0 + k3) y = y0 + (k1 + 2 * k2 + 2 * k3 + k4) / 6 y0 = y i = i + 1 rungeM(i) = y0 NEXT x END SUB Процедура функция: FUNCTION f (x, y0) f = < функция соответствующего варианта > END FUNCTION Построение в Excel графика решений
|