Решение алгебраических уравнений методом касательных и хорд на QBasic

Автор: Пользователь скрыл имя, 30 Октября 2012 в 16:21, курсовая работа

Краткое описание

Разработанный программно-методический комплекс содержит математическое описание, алгоритм и программу расчёта методом хорд и касательных. Программа написана на языке Бейсик. Исходные данные вводятся с клавиатуры.

Оглавление

Общие сведения
Функциональное назначение
Используемые технические и программные средства
Входные и выходные данные
Программа на QBasic
Операторы QBasic
Список используемой литературы

Файлы: 1 файл

курсовая.docx

— 385.42 Кб (Скачать)

abs(dy2/(2*dx))<eps  -  формула для оценки погрешности

дифференцирования,

proizv:=dy/dx – значение первой производной.

 

Для оценки точности вычисления корня необходимо вычислять наименьшее значение производной f'(x) на промежутке [a, b], поэтому надо найти производную в точке x0.

Так как  мы вычислили значение производной, то составим процедуру определения  модуля ее наименьшего значения на промежутке [a, b]:

Procedure minimum(a,b,eps:real;var min:real);

 

Для этого  достаточно сравнить модуль значения производной на концах промежутка и  выбрать среди этих двух значений меньшее. Это можно сделать , так как по условию, функция на промежутке строго монотонна вместе со своими производными первого и второго порядков. Следует брать значение очень близкое к a, но справа от нее, аналогично для точки b - брать близкое значение слева от b, так как если в точке a или b производная будет равна нулю, тогда деление на нуль станет невозможным и в программе будет получена ошибка.

Здесь  min:=abs(proizv(a,eps))- модуль значения производной функции в начале отрезка,

d:=abs(proizv(b,eps))- модуль значения производной функции в конце отрезка,

If min>d Then – сравнение значений модуля производной.

 

Функция для указания точности вычисления:

Function utoch(eps:real):integer;

Применяется в выводе корня x для уточнения его порядка относительно погрешности.

Здесь  k:=k+1 – оператор, подсчитывающий степень погрешности и  порядка корня x.

 

Заданную функцию запишем  так:

Function fx(x:real):real;

Здесь fx:=exp(x)-10*x – наша заданная функция.

Блок-схема алгоритма.

 

 

 

 

 

Функциональное назначение

 

Программа предназначена для расчета n-значений функции методом хорд и касательных. Результаты расчета выводятся на экран монитора и на печатающее устройство.

 

Используемые технические средства

 

Для работы программы требуется любой IBM совместимый  компьютер, видео адаптор VGA, печатающее устройство. Операционная система MS DOS, драйвер для поддержки русских букв и среда программирования QuickBASIC версии 4.0 и выше.

 

Входные и выходные данные

 

Входными  данными для расчета являются:

-уравнение

Результатами  расчета являются:

-n – значений

 

Программа на QBasic

 

CLS 
INPUT "interval"; c, d 
FOR i = c TO d 
y = i ^ 3 - .2 * i ^ 2 + .5 * i + 1.4 
PRINT "__________________" 
PRINT "x="; i; "|"; "y="; y 
IF y * y0 <= 0 AND i <> a THEN k = k + 1 
y0 = y 
NEXT i 
PRINT " Kol-vo korney:"; k 
FOR i = c TO d 
y = i ^ 3 - .2 * i ^ 2 + .5 * i + 1.4 
IF y * y0 <= 0 AND i <> c THEN 
a = i - 1 
b = i 
DO 
IF (a ^ 3 - .2 * a ^ 2 + .5 * a + 1.4) * (6 * a - .4) > 0 THEN 
l = a - (a ^ 3 - .2 * a ^ 2 + .5 * a + 1.4) / (3 * a ^ 2 - .4 * a + .5) 
p = b - (b ^ 3 - .2 * b ^ 2 + .5 * b + 1.4) * (b - a) / ((b ^ 3 - .2 * b ^ 2 + .5 * b + 1.4) - (a ^ 3 - .2 * a ^ 2 + .5 * a + 1.4)) 
END IF 
IF (b ^ 3 - .2 * b ^ 2 + .5 * b + 1.4) * (6 * b - .4) > 0 THEN 
l = a - (a ^ 3 - .2 * a ^ 2 + .5 * a + 1.4) * (b - a) / ((b ^ 3 - .2 * b ^ 2 + .5 * b + 1.4) - (a ^ 3 - .2 * a ^ 2 + .5 * a + 1.4)) 
p = a - (b ^ 3 - .2 * b ^ 2 + .5 * b + 1.4) / (3 * b ^ 2 - .4 * b + .5) 
END IF 
a = l 
b = p 
LOOP UNTIL b - a < .00001 
x = (a + b) / 2 
PRINT "koren: x="; x 
END IF 
y0 = y 
NEXT i 
END 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вот текст программы:

  

 

Вот продолжение текста программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вот доказательство, что она работает.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операторы QBasic

 

 

Оператор очистки экрана - CLS

Назначение: Оператор CLS предназначен для стирания содержимого экрана. Синтаксис: CLS [ { 0 | 1 | 2 } ]

Используются 4 разновидности оператора CLS:

CLS  - стирается либо текстовая, либо графическая информация, в зависимости от предшествующего применения оператора VIEW.

CLS 0 - с экрана стирается как текстовая, так и графическая информация.

CLS 1 - если ранее был применен оператор VIEW, стирается только графическая информация. В противном случае очищается весь экран.

CLS 2 - стирается только текстовая информация, за исключением нижней строки экрана (строки номер 25, 30, 43 или 60 в зависимости от формата экрана).

Оператор условного  перехода - IF...THEN...ELSE

Назначение: Позволяет передавать управление программой в зависимости от результата проверки условия. Имеет две разновидности.

Синтаксис: Первая форма представляет собой оператор, записываемый в одну строку:

IF <условие> THEN <выражение 1> [ELSE <выражение 2>]

Аргумент       Описание

<условие>    Логическое  выражение, принимающее значение  TRUE (истина) <- ненулевое значение, - или FALSE (ложь) - нулевое значение;

<выражение 1>    Вычисляется, если условие принимает значение TRUE, и пропускается в противном случае;

<выражение  2>   Вычисляется, если условие принимает значение FALSE.

Если ELSE-часть отсутствует, а <условие> имеет значение FALSE, управление передается следующему оператору. Выражения имеют следующий синтаксис:

[<операторы>] [GOTO] <номер строки> | GOTO <метка>)

Вторая (блоковая) форма оператора  условного перехода имеет вид:

IF <условие 1> THEN

 [<блок 1>]

[ELSE IF <условие 2> THEN

 [<блок 2>] ]

[ELSE

[<блок N>] ]

END IF

Аргумент      Описание

<условие 1> Логическое выражение, принимающее значение TRUE (ненулевое) или FALSE (нулевое)

(I = 1...N)

<блок 1> Последовательность операторов, занимающих одну или несколько строк (1 = 1...N).

 

 Оператор цикла FOR … NEXT

Назначение: Применяется для циклического выполнения определенной группы операторов заданное число раз.

Синтаксис: FOR <счетчик> = <начальное значение> ТО <конечное значение> [STEP <приращение>]

NEXT [<счетчик 1>[, <счетчик 2>...]

Аргумент      Описание

<счетчик>   Внутренняя числовая  переменная счетчика циклов. Переменная  не может быть элементом записи  или элементом массива

<начальное  значение> Начальное значение счетчика  циклов 

<конечное  значение> Конечное значение счетчика  циклов 

<приращение>   Приращение  счетчика циклов; может иметь  отрицательное значение.

 

Оператор вывода данных на терминал - PRINT

Назначение: Вывод данных на экран.

 Синтаксис: PRINT [<список выражений>][{, ;}]

Если аргумент <список выражений> опущен, то на экран выводится пустая строка. При наличии <списка выражений> значения выражений выводятся на экран. Выражения в списке могут  быть числовыми или строковыми. Строковые  константы должны быть заключены  в кавычки. За выводимыми числами  всегда следует пробел; положительным  числам всегда предшествует пробел, а  отрицательным - знак минус.

 

Оператор цикла - DO...LOOP

  Назначение: Оператор обеспечивает циклическое выполнение группы операторов, пока <условие> в конструкции WHILE истинно (TRUE) или до тех пор, пока <условие> в конструкции UNTIL не станет истинным. Имеет две разновидности, в зависимости от того, проверяются ли условия в начале или конце цикла.

Синтаксис:

1.    DO

        <блок операторов>]

       LOOP [[WHILE [ UNTIL) <условие>]

2.    DO [(WHILE | UNTIL) <условие>1

    [<блок операторов>]

 LOOP

Аргумент      Описание

<блок операторов>  Один или  несколько операторов языка BASIC, которые будут циклически выполняться ;

<условие>      Любое выражение, принимающее значение либо TRUE (не нуль), либо FALSE (нуль).

 

 

 

Оператор ввода  данных с клавиатуры - INPUT

Назначение: Создает условия для ввода данных с клавиатуры в процессе выполнения программы.

Синтаксис: INPUT[;]["<строка приглашения>"[; | ,]]<список переменных> Аргумент      Описание

;      Точка с запятой после ключевого слова INPUT предписывает курсору оставаться на той же самой строке после нажатия клавиши ENTER

<строка приглашения> Текстовая  константа или текстовая переменная, заключённая в кавычки и выводимая  на экран в качестве приглашения

;      Точка с запятой после строки приглашения выводит на экран вопросительный знак.

,      Запятая отменяет вывод вопросительного знака после строки приглашения

<список переменных> Список разделенных  запятыми переменных, которым присваиваются  вводимые значения.

 

 

 

 

 

 

 

 

 

 

 

 

 

Список используемой литературы:

 

1. Вычислительная  математика: Учеб. пособие для техникумов /Данилина Н.И., Дубровская Н.С., Кваша О.П., Смирнов Г.Л. - М.: Высш.шк., 1985. - 472 с.

2. Введение  в программирование на языке  Microsoft BASIC: Учебное пособие / Ю.Я.Максимов, С.В.Осипов, А.В.Потемкин, Щ.С.Симоненков, А.В.Шалашов; Под ред. В.Г.Потемкина. - М.: "Диалог-МИФИ",1991. - 176 с.

3. http://ru.wikipedia.org/wiki/

 


Информация о работе Решение алгебраических уравнений методом касательных и хорд на QBasic