Использование численных методов при решении инженерных задач
Основные особенности решения системы линейных алгебраических уравнений методом Крамера. Сравнительный анализ численных методов. Приблизительное нахождение корней уравнений. Характеристика теоремы Больцано-Коши. Анализ интерполяционной формулы Лагранжа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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