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

Основные особенности решения системы линейных алгебраических уравнений методом Крамера. Сравнительный анализ численных методов. Приблизительное нахождение корней уравнений. Характеристика теоремы Больцано-Коши. Анализ интерполяционной формулы Лагранжа.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 08.11.2012
Размер файла 1,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Аппроксимация

линейный алгебраический численный метод

Часто при анализе экспериментальных данных возникает необходимость найти функциональную зависимость между величинами x и y, которые получены в результате измерений. При аналитическом исследовании взаимосвязи между двумя величинами x и y получается таблица значений, которую также можно представить в графическом виде.

Рис.

Если же заведомо известен вид аппроксимирующей функции, то задача аппроксимации сводится только к отысканию коэффициентов (a, b, c,...), входящих в функцию. Для нахождения этих коэффициентов используется метод наименьших квадратов, заключающийся в том, что сумма квадратов расстояний по вертикали от точек до графика функции y=f(x, a, b, c,...) наименьшая: S =i2 = min, где Si = yi - f(xi, a, b, c,...). Для этого используем необходимое условие экстремума функции нескольких переменных i - f(xi, a, b, c,...))2: равенство нулю частных производных. В результате получим систему. Таким образом, нахождение коэффициентов сводится только к решению системы:

Линейная регрессия

Линейная функция имеет вид y = ax + b, следовательно, требуется найти два параметра: a и b, с условием, что даны координаты n точек, найденных экспериментально со случайными ошибками («шумом»). Для этого составим функцию i - (axi+b))2, раскроем скобки i - axi - b)2 и составим систему:

Пусть А = i , В = i , С = ixi , D = i2 , тогда система примет вид:

aD + bA = C

aA + bn = B

Решим эту систему линейных алгебраических уравнений методом Крамера и, таким образом, найдем искомые значения параметров a и b:

Таблица. Имеются точки:

Используя способ вычисления параметров линейной функции, получаем:

a = 0,1215455 , b = - 0,2140002

График функции y = 0,1215455x - 0,2140002:

Рис.

Блок-схема

Степенная регрессия

Степенная функция имеет вид y = bxa. Приведем эту функцию к линейному виду, для этого прологарифмируем обе части: . Пусть = y* , = x*, = b*, тогда y* = ax* + b*. Требуется найти два параметра: a и b*. Для этого составим функцию i* - (axi*+b*))2, раскроем скобки i* - axi* - b*)2 и составим систему:

Пусть А = i* , В = i* , С = i*xi* , D = i*2 , тогда система примет вид: aD + bA = C

Решим эту систему линейных алгебраических уравнений методом Крамера и, таким образом, найдем искомые значения параметров a и b*:

Таблица. Имеются точки

Используя способ вычисления параметров степенной функции, получаем:

a = 1,000922 , b = 1,585807. Так как показатель степени переменной примерно равен единице, то график функции будет иметь вид прямой.

График функции y = 1,585807x1,000922:

Рис.

Блок-схема:

Параболическая регрессия

Квадратичная функция имеет вид y = ax2 + bx + c, следовательно, требуется найти три параметра: a, b, c, с условием, что даны координаты n точек. Для этого составим функцию S = i - (axi2 + bxi + c))2, раскроем скобки S = i - axi2 - bxi - c)2 и составим систему:

Решим эту систему линейных алгебраических уравнений методом Крамера и, таким образом, найдем искомые значения параметров a, b и c:

Таблица. Имеются точки:

Используя способ вычисления параметров квадратичной функции, получаем:

a = 0,5272728 , b = -5,627879 , c = 14,87333.

График функции y = 0,5272728x2 - 5,627879x + 14,87333:

Рис.

Блок-схема

Решение уравнений вида f(x)=0

Уравнение вида f(x) = 0 является нелинейным алгебраическим уравнением с одной переменной, где функция f(x) определена и непрерывна на конечном или бесконечном интервале a < x < b. Всякое значение C???[a, b], обращающее функцию f(x) в ноль, называется корнем уравнения f(x) = 0. Большинство алгебраических нелинейных уравнений вида f(x) = 0 аналитически (т.е. точно) не решается, поэтому на практике для нахождения корней часто используются численные методы.

Задача численного нахождения корней уравнения состоит из двух этапов: отделения корней, т.е. нахождения таких окрестностей рассматриваемой области, в которых содержится одно значение корня, и уточнения корней, т.е. их вычисления с заданной степенью точности в этих окрестностях.

Отделение корней

Процесс отделения корней предполагает нахождение отрезков, на которых имеется лишь один корень. Согласно теореме Больцано-Коши, если непрерывная функция принимает два значения, то она принимает и любое значение между ними. Используем эту теорему для нашей ситуации: пусть на конечном отрезке [a, b] значения функции f(x) на его концах противоположны по знакам (т.е. f(a)*f(b)<0), то функция может принимать любое значение между ними, следовательно, она может принять значение равное нулю f(С)=0, т.е. точка C???[a, b] является корнем уравнения f(x)=0.

Рис.

Корни на практике вычисляют приближенно несколькими способами. Одним из самых распространенных и не очень точных является графический метод, заключающийся в том, что f(х) представляют как f(х) = =?(х) + ?(х), где ?(х) и ?(х) более простые по сравнению с f(х) функции. Далее строят два графика y = ?(х), y = ?(х) и определяют точки их пересечения. Другим, не менее распространенным является метод производных. Он заключается в том, что ищут и приравнивают к нулю производную функции f'(х). Затем на отрезках рассматривают знак функции f'(х), где хi - корни уравнения f'(х) = 0. Таким образом, всю числовую ось разбивают на два интервала и более. Третий метод предполагает оценку знаков функции в произвольно выбранных точках, и тогда число смен знаков функции будет равно числу корней. Например, имеется некая функция f(x)=0 на отрезке [-100,100], тогда составим следующую таблицу:

Таблица

На отрезке [-100,100] три раза меняется знак, следовательно, функция имеет три корня на отрезках [-10,-1], [0,1] и [1,10]. Также существуют и другие методы.

Уточнение приближенных корней

На практике предполагаемые корни уточняют различными специальными вычислительными методами. Одним из них является метод дихотомии (бисекции, половинного деления), относящийся к итерационным. Он состоит в построении последовательности вложенных отрезков, на концах которых f(х) имеет разные знаки. Каждый последующий отрезок получают делением пополам предыдущего. Этот процесс построения последовательности вложенных отрезков позволяет найти корень функции f(х) = 0 с любой заданной точностью.

Рис.

Рассмотрим один шаг итерации. Имеется отрезок [а, b], на концах которого f(х) меняет знак. Разделим теперь отрезок [а, b] пополам и выделим f(x1), где x1 - середина [а, b]. Здесь возможны два случая: первый, когда f(x1) = 0, тогда мы говорим, что корень найден; второй, когда f(x1) 0, тогда сравниваем знак f(x1) с f(а) и f(b) и из двух половин [а, x1] и [x1, b] выбираем ту, на концах которой функция меняет свой знак. Таким образом, а = а , b = x1, если f(x1)*f(а) < 0 , и а = x1, b = b, если f(x1)*f(b) < 0. При заданной точности а деление пополам продолжают до тех пор, пока длина отрезка не станет меньше , тогда координата середины последнего найденного отрезка и есть значение корня требуемой точности.

Дана функция: y = -x4 + 68x3 - 58x2 - 35x + 43 на [-100, 100]. Составим таблицу:

Таблица

Два раза меняется знак, следовательно, будем искать корни на двух интервалах С1 [-1, 0] и C2 [10, 100] два корня соответственно x1 и x2. Используя метод дихотомии, получаем:

X1 = -0,7919922 , X2 = 67,12822.

График функции y = -x4 + 68x3 - 58x2 - 35x + 43:

Рис.

Блок-схема

Вычисление определенного интеграла

Задача состоит в том, чтобы, пользуясь численными методами, вычислить значение определенного интеграла непрерывной функции f(x) на отрезке [a, b]. В практической жизни возможна ситуация, когда применение формулы Ньютона-Лейбница затруднено рядом причин, например, у первообразной отсутствует представление в элементарных функциях, или вид первообразной настолько сложен, что быстрее вычислить значение интеграла численным методом. Численное интегрирование основывается на том, что абсолютная величина интеграла равна площади криволинейной трапеции, ограниченной осью абсцисс, графиком интегрируемой функции и отрезками прямых x = a и x = b, где a и b -- пределы интегрирования.

Рис.

Существует множество численных методов, но все они предполагают разбиение отрезка [a, b] на n частей и замену подынтегральной функции на n простых функций, интеграл от которых легко вычисляется. И тогда интеграл исходной функции примерно будет равен сумме элементарных площадей простых функций.

Метод прямоугольников

Пусть отрезок [а, b] на оси Ох разбит на n элементарных отрезков [хi, хi+1]. Ясно, что х0 = а, хn = b и х0 < х1 < ... < хn. Через h = обозначим длину элементарного отрезка. Приближенное значение интеграла функции будет равно сумме площадей прямоугольников со сторонами h и yi.

Рис.

В зависимости от того с какого значения y начинается подсчет площадей (с y0 или с y1), различают две разновидности метода прямоугольников: по левой стороне и по правой.

Метод трапеций

Аналогично для нахождения интеграла по методу трапеций отрезок [а, b] на оси Ох разбит на n элементарных отрезков [хi, хi+1]. Также х0 = а, хn = b и х0 < х1 < ... < хn. Через h = обозначим длину элементарного отрезка. Приближенное значение интеграла функции будет равно сумме площадей прямоугольных трапеций с основаниями f(хi) и f(хi+1) и высотой h, т.е. I = h( + + ... + )= h( + i).

Рис.

Метод Симпсона

Метод Симпсона, также известный как метод парабол, заключается в следующем. Отрезок [a, b] разбивается на четное количество элементарных отрезков n = 2m, тогда длина элементарного отрезка равна h = .

Пусть ветви параболы с вершиной в точке (x1, y1) проходят через точки (x0, y0) и (x2, y2), где x0 = -h, x1 = 0, x2 = h, тогда y0 = Ah2 - Bh + C, y1 = C, y2 = Ah2 + Bh + C. Найдем площадь под этой параболой на [-h, h] = Ax2 + Bx + C)dx = + 2Ch. Из системы

выразим A = , где С = y1, тогда A = . Подставим А и С в площадь и получим, что = (y0 + 4y1 + y2).

Рис.

Тогда = (y2 + 4y3 + y4), а вся площадь I = = [(y0 + y2m) + 4(y1 + y3 + ... + y2m-1) + 2(y2 + y4 + ... + y2m-2)].

Дана функция: y = 7 + 15x - 12x2 - 16x3 на [2; 3,1]. Используя методы нахождения интеграла, получаем:

Интеграл методом прямоугольников по левой стороне: Ipl = -321,1243;

Интеграл методом прямоугольников по правой стороне: Ipr = -365,0667;

Интеграл методом трапеций: Itr = -343,0955;

Интеграл методом Симпсона: Isi = -342,7974.

График функции y = 7 + 15x - 12x2 - 16x3:

Рис.

Блок-схема:

Интерполирование. Интерполяционная формула Лагранжа

Предположим, что задано некоторое упорядоченное множество вещественных абсцисс х0, х1, ..., хn и связанное с ним множество вещественных ординат у0, у1, ..., уn. Пусть х0 < х1< ... < хn и каждое уi есть некоторое вещественное число, соответствующее хi. Точки (xi, yi) называются узлами интерполяции. Кривая, которая точно проходит через эти узлы, называется интерполяционной кривой.

Рис.

Задача интерполяции заключается в построении такой непрерывной функции Ln(x), которая должна проходить абсолютно точно через заданные узлы интерполяции. Однако при этом L(xk) должна принимать "разумные" значения для всех xk, лежащих между заданными точками хi. Кроме того должна быть достаточно гладкой.

По формуле Лагранжа Ln(x) = l0(x) + l1(x) +...+ ln(x), т.е. Ln(x) = i(x), где li(x) - полином степени n, причем li(xk) = 1, если i = k, и li(xk) = 0, если i ? k.

И li(x) = Ci(x - x0)(x - x1)...(x - xi-1)(x - xi+1)...(x - xn), если x = xi , то li(xk) = yi , тогда yi = Ci(xi - x0)(xi - x1)...(xi - xi-1)(xi - xi+1)...(xi - xn), из последнего равенства выражаем Ci и подставляем в li(x) = Ci(x - x0)(x - x1)...(x - xi-1)(x - xi+1)...(x - xn).

Тогда Ln(x) = i.

Дана таблица точек:

Таблица

Требуется построить полином, проходящий через узлы интерполяции (-3;2), (-1;-10), (2;9), (3;8) и найти значения y(-2), y(0), y(1). Используя интерполяционную формулу Лагранжа, получаем: y(-2) = -9.3333, y(0) = -4.3, y(1) = 3.4666.

График функции:

Рис.

Блок-схема

Решение СЛАУ методом Гаусса.

Система n линейных алгебраических уравнений с n неизвестными в общем виде может быть записана следующим образом:

Решением системы называется такая упорядоченная совокупность чисел x1 = c1, x2 = c2, ..., xn = cn , которая обращает все уравнения системы в верные равенства. Из курса линейной алгебры известно, что решение системы линейных уравнений можно найти по правилу Крамера - через отношение определителей. Но этот способ не очень удобен для решения систем уравнений с числом неизвестных больше 5, когда найти определитель сложно. В этих случаях применяют иные методы решения, среди которых самым распространенным является метод Гаусса, который делится на два этапа: 1) прямой ход (приведение системы к ступенчатому виду путем элементарных операций) и 2) обратный ход (подстановка решений «снизу вверх»).

1) Среди элементов первого столбца выбираем ненулевой (a11 ? 0), перемещаем его на крайнее верхнее положение перестановкой строк и вычитаем получившуюся после перестановки первую строку из остальных строк, помножив её на величину, равную отношению первого элемента каждой из этих строк к первому элементу первой строки, обнуляя тем самым столбец под ним. После того, как указанные преобразования были совершены, первую строку и первый столбец мысленно вычёркиваем и продолжаем, исключая неизвестные с x2 по xn-1. Получаем систему:

2) Начинаем с последнего уравнения. Выражаем соответствующую переменную и подставляем в вышестоящие уравнения, и так далее, поднимаясь по «ступенькам» наверх. Получаем, что xn = bn-1n /an-1nn , а xi = (1/ai-1ij)(bn-1i - i-1ijxj).

Блок-схема

Оптимизация

Оптимизация - процесс нахождения экстремума (максимума или минимума) определённой функции в некоторой области, т.е. задача оптимизация состоит в определение хотя бы одной из точек минимума (максимума) этой функции на множестве. Задача одномерной оптимизации представляет собой простейшую математическую модель оптимизации, в которой целевая функция y = f(x) зависит от одной переменной, а допустимым множеством является отрезок вещественной оси [a, b]. Для решения задачи минимизации функции f(x) на отрезке [a, b] на практике, как правило, применяют приближенные методы. Они позволяют найти решения этой задачи с необходимой точностью в результате определения конечного числа значений функции f(x) и ее производных в некоторых точках отрезка [a, b]. Методы, использующие только значения функции и не требующие вычисления ее производных, называются прямыми методами оптимизации. В методах будем рассматривать нахождение точки минимума и минимального значения функции.

Метод равномерного поиска

Метод равномерного поиска является простейшим из прямых методов минимизации и состоит в следующем. Разобьем отрезок [a, b] на n равных частей точками деления: xi = a + i(b - a)/n, где i = 0,...n.

Вычислив значения f(x) в точках xi, путем сравнения найдем точку xm, где m - это число от 0 до n, такую, что f(xm) = min f(xi) для всех i от 0 до n.

Погрешность определения точки минимума xm функции f(x) методом равномерного поиска не превосходит величины h = (b - a)/n, которая называется шагом оптимизации.

Словесный алгоритм метода:

1) Находим значение функции в точке a: f(a);

2) Находим следующую точку отрезка: xi = a + ih;

3) Находим значение функции в этой точке: f(xi);

4) Сравниваем значения функций в последней и предыдущей точке: f(xi-1) > f(xi);

5) Если условие выполняется, то переходим к шагу 2), если нет, то xi = xmin и f(xmin) = min.

Рис.

Метод дихотомии

Дана функция y = f(x). Необходимо найти x, доставляющий минимум функции f(x) на интервале [a, b] с заданной точностью e.

Запишем словесный алгоритм метода:

1) На каждом шаге процесса поиска делим отрезок [a, b] пополам, x = (a + b)/2 - координата середины отрезка [a, b].

2) Вычисляем значение функции f(x) в окрестности ±e вычисленной точки x, т.е. f(x1) = f( - e) и f(x2) = f( + e).

3) Сравниваем f(x1) и f(x2) и отбрасываем одну из половинок отрезка [a, b]. Если f(x1) < f(x2), то b = x2, иначе a = x1, и если f(x1) = f(x2), то a = x1 и b = x2.

4) Деление отрезка [a, b] продолжается, пока его длина не станет меньше заданной точности e, т.е. ? e.

Рис.

Метод «золотого сечения»

В методе дихотомии на каждом шаге уменьшения интервала нам дважды приходилось вычислять значение целевой функции (в точках х1 и х2).

В методе же золотого сечения мы будем выбирать расположение точек х1 и х2, рассекающих интервал, таким образом, чтобы на каждом шаге уменьшения интервала одна из этих точек совпадала с одной из аналогичных точек предыдущего шага, т.е. на каждом шагу уменьшения интервала фактически вводится только одна новая точка, для которой требуется произвести только одно вычисление значения целевой функции.

Такое рассечение интервала новой точкой может быть точно рассчитано.

Точки х1 и х2 расположены симметрично относительно середины [a, b].

Для определения точек x1 и х2 рассмотрим сначала отрезок [0, 1] и для определенности положим, что при уменьшении исключается правая часть этого отрезка.

Пусть х2 = k, тогда симметрично расположенная точка x1 = 1 - k. Пробная точка х1 отрезка [0, 1] перейдет в пробную точку х1' = 1 - k нового отрезка [1, k]. Чтобы точки x2 = k и x2' = 1 - k делили отрезки [0, 1] и [0, k] в одном и том же отношении, должно выполняться равенство:

1/k = k/(1 - k) или k2 = 1 - k. Откуда находим положительное значение k = 0.61803... Таким образом, для произвольного отрезка [a, b] выражения для пробных точек примут вид:

x1 = a + (1 - k)(b - a) и x2 = a + k(b - a).

Словесный алгоритм метод

Находим точку х1;

Находим точку x2;

Проверяем условие |х2 - х1|<e, где e - заданная точность. Если условие выполняется, то х = (х1+х2)/2. Если условие не выполняется, переходим к шагу 5);

Проверяем условие f(x1) > f(x2). Если условие выполняется, то a = x1, x1 = x2 при этом переходим к шагу 2). Если условие не выполняется, переходим к шагу 5);

Проверяем условие f(x1) ? f(x2), если оно выполняется, то b = x2, x2 = x1, переходим к шагу 1), затем к шагу 3).

Блок-схема

Код программы:

CLS

SCREEN 12

LINE (100, 0)-(539, 479), 17, B

LINE (101, 1)-(538, 478), 17, B

LOCATE 2, 22

PRINT "Ministerstvo obrazovaniya i nauki RF"

LOCATE 3, 37

PRINT "GOU VPO"

LOCATE 4, 39

PRINT "..."

LOCATE 5, 35

PRINT "..."

LOCATE 14, 33

PRINT "KURSOVAYA RABOTA"

LOCATE 15, 32

PRINT "Chislennye metody"

LOCATE 16, 35

PRINT "... variant"

LOCATE 24, 38

PRINT "Sabotu vypolnil:"

LOCATE 25, 39

PRINT "Student gruppy:"

LOCATE 26, 45

PRINT "Proveril:"

LOCATE 28, 30

PRINT "Gorod ..., ... god"

1 IF INKEY$ = "" THEN GOTO 1

GOTO 222

111 END

222 CLS

LINE (100, 0)-(539, 479), 17, B

LINE (101, 1)-(538, 478), 17, B

DO UNTIL s$ = "7"

LOCATE 3, 33

PRINT "Soderzhanie."

LOCATE 5, 25

PRINT "1-Approksimaciya."

LOCATE 6, 25

PRINT "2-Reshenie uravneniy vida f(x)=0."

LOCATE 7, 25

PRINT "3-Opredelennyi integral."

LOCATE 8, 25

PRINT "4-Interpolirovanie."

LOCATE 9, 25

PRINT "5-Optimizaciya."

LOCATE 10, 25

PRINT "6-Reshenie SLAU."

LOCATE 11, 25

PRINT "7-Vyhod."

s$ = INKEY$

SELECT CASE s$

CASE "1"

GOTO 10

CASE "2"

GOTO 20

CASE "3"

GOTO 30

CASE "4"

GOTO 40

CASE "5"

GOTO 50

CASE "6"

GOTO 60

CASE "7"

GOTO 111

END SELECT

LOOP

10 CLS

LINE (100, 0)-(539, 479), 17, B

LINE (101, 1)-(538, 478), 17, B

DO UNTIL s$ = "4"

LOCATE 3, 33

PRINT "Approksimaciya."

LOCATE 5, 25

PRINT "1-Lineynaya regressiya."

LOCATE 6, 25

PRINT "2-Stepennaya regressiya."

LOCATE 7, 25

PRINT "3-Parabolicheskaya regressiya."

LOCATE 8, 25

PRINT "4-Vernutsya v soderzhanie."

s$ = INKEY$

SELECT CASE s$

CASE "1"

GOTO 100

CASE "2"

GOTO 200

CASE "3"

GOTO 300

CASE "4"

GOTO 222

END SELECT

LOOP

100 CLS

RESTORE 101

101 DATA 2, 4, 6, 8, 10, 12, 14, 16, 18, 20

DATA .12, .29, .41, .89, .84, 1.07, 1.58, 1.72, 2.21, 2.1

FOR i = 1 TO 10

READ x(i)

NEXT i

FOR i = 1 TO 10

READ y(i)

NEXT i

FOR i = 1 TO 10

a = a + x(i)

b = b + y(i)

c = c + x(i) * y(i)

d = d + (x(i)) ^ 2

NEXT i

dd = d * 10 - a * a

da = c * 10 - a * b

db = d * b - a * c

a = da / dd

b = db / dd

SCREEN 12

PRINT "a="; a, "b="; b

PRINT "y="; a; "*x+("; b; ")"

VIEW (0, 0)-(427, 427)

WINDOW (-21, -9)-(21, 9)

LINE (0, -7)-(0, 7)

LINE (-21, 0)-(21, 0)

LINE (-.5, 6.5)-(0, 7)

LINE (0, 7)-(.4, 6.5)

LINE (20, .2)-(21, 0)

LINE (21, 0)-(20, -.2)

FOR i = 1 TO 10

PSET (x(i), y(i)), 4

CIRCLE (x(i), y(i)), .2, 4

NEXT i

FOR k = 0 TO 20 STEP .01

f = a * k + b

PSET (k, f), 3

NEXT k

CLEAR

2 IF INKEY$ = "" THEN GOTO 2

GOTO 10

200 CLS

RESTORE 201

201 DATA 2, 4, 6, 8, 10, 12, 14, 16, 18, 20

DATA 3.26,6.21,8.84,12.55,17.44,20.54,20.16,27.13,27.36,31.68

FOR i = 1 TO 10

READ x(i)

NEXT i

FOR i = 1 TO 10

READ y(i)

NEXT i

FOR i = 1 TO 10

a = a + LOG(x(i))

b = b + LOG(y(i))

c = c + LOG(x(i)) * LOG(y(i))

d = d + (LOG(x(i))) ^ 2

NEXT i

dd = d * 10 - a * a

da = c * 10 - a * b

db = d * b - a * c

a = da / dd

b = EXP(db / dd)

SCREEN 12

PRINT "a="; a, "b="; b

PRINT "y="; b; "*x^("; a; ")"

VIEW (0, 0)-(427, 427)

WINDOW (-33, -33)-(33, 33)

LINE (0, -33)-(0, 33)

LINE (-33, 0)-(33, 0)

LINE (-.5, 31)-(0, 33)

LINE (0, 33)-(.5, 31)

LINE (31, .5)-(33, 0)

LINE (33, 0)-(31, -.5)

FOR i = 1 TO 10

PSET (x(i), y(i)), 4

CIRCLE (x(i), y(i)), .3, 4

NEXT i

FOR k = .01 TO 20 STEP .01

f = b * k ^ a

PSET (k, f), 3

NEXT k

CLEAR

3 IF INKEY$ = "" THEN GOTO 3

GOTO 10

300 CLS

RESTORE 301

301 DATA 1,2,3,4,5,6,7,8,9,10

DATA 9.7,6.3,1.9,1.0,0.0,0.2,1.1,3.8,7.0,11.2

FOR i = 1 TO 10

READ x(i)

NEXT i

FOR i = 1 TO 10

READ y(i)

NEXT i

FOR i = 1 TO 10

a = a + x(i)

b = b + y(i)

c = c + (x(i)) ^ 2

d = d + (x(i)) ^ 3

e = e + (x(i)) ^ 4

f = f + x(i) * y(i)

g = g + (x(i)) ^ 2 * y(i)

NEXT i

dd = e * c * 10 + d * a * c + d * a * c - c * c * c - d * d * 10 - a * a * e

da = g * c * 10 + b * d * a + f * c * a - b * c * c - f * d * 10 - a * a * g

db = e * f * 10 + c * g * a + d * b * c - c * c * f - e * b * a - d * g * 10

dc = e * c * b + d * g * a + d * f * c - c * c * g - d * d * b - e * f * a

a = da / dd

b = db / dd

c = dc / dd

SCREEN 12

PRINT "a="; a, "b="; b, "c="; c

PRINT "y="; a; "*x^2+("; b; ")*x+("; c; ")"

VIEW (0, 0)-(427, 427)

WINDOW (-16, -16)-(16, 16)

LINE (0, -16)-(0, 13.6)

LINE (-16, 0)-(16, 0)

LINE (15, .3)-(16, 0)

LINE (16, 0)-(15, -.3)

LINE (-.3, 12.6)-(0, 13.6)

LINE (0, 13.6)-(.3, 12.6)

FOR i = 1 TO 10

PSET (x(i), y(i)), 4

CIRCLE (x(i), y(i)), .12, 4

NEXT i

FOR k = .6 TO 10.5 STEP .01

f = a * k ^ 2 + b * k + c

PSET (k, f), 3

NEXT k

CLEAR

4 IF INKEY$ = "" THEN GOTO 4

GOTO 10

20 CLS

INPUT "Otrezok [a,b]="; a, b

INPUT "Tochnost e="; e

11 x = a

FX = -x ^ 4 + 68 * x ^ 3 - 58 * x ^ 2 - 35 * x + 43

FA = FX

IF ABS(b - a) <= 2 * e THEN PRINT "X="; (a + b) / 2: GOTO 5

x = (a + b) / 2

FX = -x ^ 4 + 68 * x ^ 3 - 58 * x ^ 2 - 35 * x + 43

IF FX * FA < 0 THEN b = x ELSE a = x

SCREEN 12

VIEW (0, 0)-(427, 427)

WINDOW (-100, -10000000)-(100, 10000000)

LINE (0, -10000000)-(0, 10000000)

LINE (-100, 0)-(100, 0)

LINE (-2, 9450000)-(0, 10000000)

LINE (0, 10000000)-(2, 9450000)

LINE (94, 180000)-(100, 0)

LINE (100, 0)-(94, -180000)

FOR x = -100 TO 100 STEP .1

y = -x ^ 4 + 68 * x ^ 3 - 58 * x ^ 2 - 35 * x + 43

PSET (x, y), 3

NEXT x

GOTO 11

5 CLEAR

IF INKEY$ = "" THEN GOTO 5

GOTO 222

30 CLS

SCREEN 12

DEF fny (x) = 7 + 15 * x - 12 * x ^ 2 - 16 * x ^ 3

a = 2

b = 3.1

n = 10

h = (b - a) / n

FOR i = 0 TO n - 1

x = a + i * h

s1 = s1 + fny(x)

NEXT i

Ipl = h * s1

PRINT "Metod pryamougolnikov po levoy storone:"; Ipl

FOR i = 1 TO n

x = a + i * h

s2 = s2 + fny(x)

NEXT i

Ipr = h * s2

PRINT "Metod pryamougolnikov po pravoy storone:"; Ipr

h = (b - a) / (2 * n)

FOR i = 1 TO 2 * n - 1 STEP 2

x = a + i * h

s3 = s3 + 4 * fny(x)

NEXT i

FOR i = 2 TO 2 * n - 2 STEP 2

x = a + i * h

s3 = s3 + 2 * fny(x)

NEXT i

s3 = s3 + fny(a) + fny(b)

Isi = s3 * (h / 3)

PRINT "Metod Simpsona:"; Isi

h = (b - a) / n

FOR i = 1 TO n - 1

x = a + i * h

s4 = s4 + fny(x)

NEXT i

Itr = h * ((fny(a) + fny(b)) / 2 + s4)

PRINT "Metod trapeciy:"; Itr

VIEW (0, 0)-(427, 427)

WINDOW (-4, -900)-(4, 900)

LINE (-4, 0)-(4, 0)

LINE (0, -900)-(0, 700)

LINE (-.09, 650)-(0, 700)

LINE (0, 700)-(.09, 650)

LINE (3.8, 20)-(4, 0)

LINE (4, 0)-(3.8, -20)

FOR x = -3 TO 4 STEP .001

y = fny(x)

PSET (x, y), 3

NEXT x

FOR i = a TO b STEP .001

LINE (i, -5)-(i, fny(i)), 4

NEXT i

CLEAR

6 IF INKEY$ = "" THEN GOTO 6

GOTO 222

40 CLS

RESTORE 41

41 DATA -3,-1,2,3

DATA 2,-10,9,8

FOR i = 1 TO 4

READ x(i)

NEXT i

FOR i = 1 TO 4

READ y(i)

NEXT i

SCREEN 12

VIEW (0, 0)-(427, 427)

WINDOW (-11, -11)-(11, 11)

LINE (-11, 0)-(11, 0)

LINE (0, -11)-(0, 11)

LINE (-.3, 10)-(0, 11)

LINE (0, 11)-(.3, 10)

LINE (10, .3)-(11, 0)

LINE (11, 0)-(10, -.3)

FOR i = 1 TO 4

PSET (x(i), y(i)), 4

CIRCLE (x(i), y(i)), .16, 4

NEXT i

FOR xm = -11 TO 11 STEP .125 / 16

ym = 0

FOR i = 1 TO 4

pv = 1

pn = 1

FOR j = 1 TO 4

IF i = j THEN GOTO 333

pv = pv * (xm - x(j))

pn = pn * (x(i) - x(j))

333 NEXT j

ym = ym + pv / pn * y(i)

NEXT i

PSET (xm, ym), 3

IF xm = -2 THEN PRINT "y(-2)="; ym

IF xm = 0 THEN PRINT "y(0)="; ym

IF xm = 1 THEN PRINT "y(1)="; ym

NEXT xm

CLEAR

7 IF INKEY$ = "" THEN GOTO 7

GOTO 222

50 CLS

DEF fnf (x) = -30 - 494 * x + 9 * x ^ 2

e = .01

PRINT "Metod ravnomernogo poiska:"

INPUT "otrezok [a,b]="; a, b

FOR xmin1 = a TO b STEP e

IF fnf(xmin1) < fnf(xmin1 + e) THEN EXIT FOR

NEXT xmin1

PRINT "xmin="; xmin1

PRINT "y(xmin)="; fnf(xmin1)

PRINT "Metod dihotomii:"

INPUT "otrezok [a,b]="; a, b

WHILE ABS(b - a) > 2 * e

x1 = (a + b - e) / 2

x2 = (a + b + e) / 2

IF fnf(x1) > fnf(x2) THEN a = x1

IF fnf(x1) < fnf(x2) THEN b = x2

IF fnf(x1) = fnf(x2) THEN a = x1: b = x2

WEND

xmin2 = (b + a) / 2

PRINT "xmin="; xmin2

PRINT "y(xmin)="; fnf(xmin2)

PRINT "Metod zolotogo secheniya:"

INPUT "otrezok [a,b]="; a, b

k = (SQR(5) - 1) / 2

WHILE ABS(b - a) > 2 * e

x1 = a + (1 - k) * (b - a)

x2 = a + k * (b - a)

IF fnf(x1) >= fnf(x2) THEN a = x1: x1 = x2

IF fnf(x1) < fnf(x2) THEN b = x2: x2 = x1

WEND

xmin3 = (b + a) / 2

PRINT "xmin="; xmin3

PRINT "y(xmin)="; fnf(xmin3)

CLEAR

8 IF INKEY$ = "" THEN GOTO 8

GOTO 222

60 CLS

INPUT "chislo uravneniy="; n

DIM a60(n, n), b60(n), x60(n)

RESTORE 61

61 DATA 3,8,-7,-4,78,5,-4,2,5,170,8,-6,-1,-1,236,-3,9,-8,8,-360

FOR i = 1 TO n

FOR j = 1 TO n

READ a60(i, j)

NEXT j

READ b60(i)

NEXT i

FOR i = 1 TO n - 1

FOR j = i + 1 TO n

a60(j, i) = -a60(j, i) / a60(i, i)

FOR k = i + 1 TO n

a60(j, k) = a60(j, k) + a60(j, i) * a60(i, k)

NEXT k

b60(j) = b60(j) + a60(j, i) * b60(i)

NEXT j

NEXT i

x60(n) = b60(n) / a60(n, n)

FOR i = n - 1 TO 1 STEP -1

h60 = b60(i)

FOR j = i + 1 TO n

h60 = h60 - x60(j) * a60(i, j)

NEXT j

x60(i) = h60 / a60(i, i)

NEXT i

PRINT "Korni uravneniy"

FOR i = 1 TO n

PRINT "x"; i; "="; x60(i)

NEXT i

CLEAR

9 IF INKEY$ = "" THEN GOTO 9

GOTO 222

Размещено на Allbest.ru


Подобные документы

  • Использование MS Excel для математических расчетов. Описание численных методов решения системы линейных алгебраических уравнений. Решение систем линейных алгебраических уравнений с методами Крамера и Зейделя и с помощью табличного процессора MS Excel.

    курсовая работа [1,6 M], добавлен 14.02.2021

  • Итерационные методы решения нелинейных уравнений, системы линейных алгебраических уравнений (СЛАУ). Решение нелинейных уравнений методом интерполирования. Программная реализация итерационных методов решения СЛАУ. Практическое применение метода Эйлера.

    курсовая работа [1,6 M], добавлен 20.01.2010

  • Изучение систем линейных алгебраических уравнений (СЛАУ) с использованием табличного процессора MS Excel 2007. Пример решения системы линейных алгебраических уравнений методом Крамера. Прикладное программное обеспечение, применяемое для решения СЛАУ.

    курсовая работа [184,5 K], добавлен 20.11.2013

  • Характеристика методов решений систем линейных алгебраических уравнений, основные виды численных методов и применение программного продукта Delphi 5.0 как наиболее эффективного. Сущность методов Гаусса, Гаусса-Жордана и Якоби, особенности метода Зейделя.

    курсовая работа [2,2 M], добавлен 25.06.2010

  • Требования к языкам программирования, их эффективность, лаконичность, ясность, реальные возможности. Создание языка С#. Применение систем линейных алгебраических уравнений для практических задач, сущность и особенности метода Крамера для их решения.

    курсовая работа [118,1 K], добавлен 13.11.2009

  • Численные методы решения задач, сводящиеся к арифметическим и некоторым логическим действиям над числами, к действиям, которые выполняет ЭВМ. Решение нелинейных, системы линейных алгебраических, обыкновенных дифференциальных уравнений численными методами.

    дипломная работа [1,4 M], добавлен 18.08.2009

  • Аппроксимация линейной, степенной и квадратичной функции. Определение корней уравнения вида f(x)=0 методом половинного деления. Вычисление определенного интеграла методом прямоугольников, трапеций, парабол и Эйлера. Интерполяция формулой Лагранжа.

    курсовая работа [1,3 M], добавлен 21.09.2011

  • Этапы развития языков программирования. Способы решения системы линейных алгебраических уравнений методом Крамера, рассмотрение особенностей. Анализ языка программирования С++. С # как прямой потомок двух самых успешных в мире компьютерных языков.

    курсовая работа [770,2 K], добавлен 27.01.2013

  • Математическое описание численных методов решения уравнения, построение графика функции. Cтруктурная схема алгоритма с использованием метода дихотомии. Использование численных методов решения дифференциальных уравнений, составление листинга программы.

    курсовая работа [984,2 K], добавлен 19.12.2009

  • Общее понятие о линейных уравнениях и их системах. Разработка программного продукта в среде Delphi 7 для решения методом Крамера квадратных систем линейных алгебраических уравнений с ненулевым определителем основной матрицы. Описание конкретных примеров.

    курсовая работа [193,7 K], добавлен 07.07.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.