Выравнивание рядом динамики с оценкой погрешности. Метод наименьших квадратов логарифмический тренд
Нахождение коэффициентов логарифмической модели методом наименьших квадратов. Освоение методов логарифмической и линейной аппроксимации. Выявление значения функции в заданной точке. Анализ точности и правильности вычислений разработанных алгоритмов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 16.05.2016 |
Размер файла | 583,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное образовательное учреждение высшего профессионального образования
российский государственный аграрный университет -
МСха имени К.А. Тимирязева
(ФБГОУ ВПО ргау - МСХА имени К.А. Тимирязева)
Учетно-финансовый факультет
Кафедра прикладной информатики
КУРСОВОЙ ПРОЕКТ
по дисциплине «Информатика и программирование»
НА ТЕМУ: Выравнивание рядом динамики с оценкой погрешности. Метод наименьших квадратов логарифмический тренд
Выполнил: Плешков А.Д.
факультет экономики и финансов
107 группы
МОСКВА - 2015
Оглавление
логарифмический линейный аппроксимация квадрат
1. Индивидуальное задание на выполнение курсовой работы
2. Теоретическая часть
2.1 Метод наименьших квадратов
2.2 Сущность метода наименьших квадратов
2.3 МНК в регрессионном анализе
2.4 Пример метода для линейной аппроксимации вида ax+b
2.5 Пример метода для логарифмической аппроксимации вида a* ln(x)+b
3. Практическая часть
3.1 Описание программы в целом
3.2 Входные и выходные данные
3.3 Реализация метода
3.4 Контроль и анализ результатов
Выводы
Список литературы
Приложения
1. Индивидуальное задание на выполнение курсовой работы
Выравнивание рядом динамики с оценкой погрешности. Метод наименьших квадратов. Логарифмический тренд
Нахождение коэффициентов логарифмической модели методом наименьших квадратов
Требуется найти значение функции в соответствии с логарифмической моделью в заданной точке; таблица эмпирических значений вводится из файла специального формата; вывод результатов на экран, а по желанию пользователя на принтер или в файл.
2. Теоретическая часть
Большой пласт задач и моделей в математике сводятся к так называемым численным задачам, когда аналитическое решение или невозможно в принципе, или очень трудоемко, такие задачи и методы их решения принято называть численными. С развитием вычислительной техники, с ростом ее мощности, быстродействия и объемов доступной памяти в нашу жизнь все чаще входят вычисления тех или иных моделей.
Применение численных методов основано на двух принципах:
Замена сложной модели более простой
Представление решения сложной задачи в виде последовательности более простых задач.
Прямые (аналитические) методы, конечно, дают точный результат, но не всегда они применимы в реальной жизни.
Численные методы всегда приближенны и имеют помимо преимуществ и ряд недостатков. К таким недостаткам можно отнести, например:
погрешность модели
погрешность вычислений (у каждой ЭВМ числа представлены в дискретном виде и, конечно же, бесконечной точности обеспечить не могут)
погрешность входных данных
Большая точность вычислений всегда сопряжена с дополнительным расходом вычислительных ресурсов и памяти вычислительных машин. Конечно в повседневных и «учебных» задачах этого можно и не заметить, но когда счет идет на терабайты исходных данных и сотни и тысячи машино-часов процессорного времени (как например, в модели расчета данных геологической сейсморазведки) это уже, мягко говоря, заметно, и по памяти и по процессорному времени.
Ряд простых примеров таких моделей и их численного решения приведем ниже.
2.1 Метод наименьших квадратов
Любой метод численной аппроксимации сводится к упрощению функции до легко вычислимой, например до линейной или полинома степени 2,3 и так далее. Или если аналитической функции нет, то по экспериментальным данным подбирается функция и ее неизвестные коэффициенты таким образом, что бы наилучшим образом огибать все заданные точки.
Одним из таких методов является метод наименьших квадратов.
Метод наименьших квадратов -- математический метод, применяемый для решения различных задач, основанный на минимизации суммы квадратов отклонений некоторых функций от искомых переменных. Он может использоваться для «решения» переопределенных систем уравнений (когда количество уравнений превышает количество неизвестных), для поиска решения в случае обычных (не переопределенных) нелинейных систем уравнений, для аппроксимации точечных значений некоторой функцией. МНК является одним из базовых методов регрессионного анализа для оценки неизвестных параметров регрессионных моделей по выборочным данным.
Рис.1. Пример кривой, проведённой через точки, имеющие нормально распределённое отклонение от истинного значения.)
2.2 Сущность метода наименьших квадратов
Пусть -- набор неизвестных переменных (параметров), , , -- совокупность функций от этого набора переменных. Задача заключается в подборе таких значений x, чтобы значения этих функций были максимально близки к некоторым значениям . По существу речь идет о «решении» переопределенной системы уравнений , в указанном смысле максимальной близости левой и правой частей системы. Сущность МНК заключается в выборе в качестве «меры близости» суммы квадратов отклонений левых и правых частей . Таким образом, сущность МНК может быть выражена следующим образом:
.
В случае если система уравнений имеет решение, то минимум суммы квадратов будет равен нулю, и могут быть найдены точные решения системы уравнений аналитически или, например, различными численными методами оптимизации. Если система переопределена, то есть, говоря нестрого, количество независимых уравнений больше количества искомых переменных, то система не имеет точного решения и метод наименьших квадратов позволяет найти некоторый «оптимальный» вектор в смысле максимальной близости векторов и или максимальной близости вектора отклонений к нулю (близость понимается в смысле евклидова расстояния).
2.3 МНК в регрессионном анализе
Пусть имеется значений некоторой переменной (это могут быть результаты наблюдений, экспериментов и т. д.) и соответствующих переменных . Задача заключается в том, чтобы взаимосвязь между и аппроксимировать некоторой функцией , известной с точностью до некоторых неизвестных параметров , то есть фактически найти наилучшие значения параметров , максимально приближающие значения к фактическим значениям . Фактически это сводится к случаю «решения» переопределенной системы уравнений относительно :
.
В регрессионном анализе и в частности в эконометрике используются вероятностные модели зависимости между переменными
,
где -- так называемые случайные ошибки модели.
Соответственно, отклонения наблюдаемых значений от модельных предполагается уже в самой модели. Сущность МНК (обычного, классического) заключается в том, чтобы найти такие параметры , при которых сумма квадратов отклонений (ошибок, для регрессионных моделей их часто называют остатками регрессии) будет минимальной:
,
где -- англ. Residual Sum of Squares определяется как:
.
В общем случае решение этой задачи может осуществляться численными методами оптимизации (минимизации). В этом случае говорят о нелинейном МНК (NLS или NLLS -- англ. Non-Linear Least Squares). Во многих случаях можно получить аналитическое решение. Для решения задачи минимизации необходимо найти стационарные точки функции , продифференцировав её по неизвестным параметрам , приравняв производные к нулю и решив полученную систему уравнений:
.
2.4 Пример метода для линейной аппроксимации вида ax+b
Пусть задан некий набор данных х и у:
x |
0,68 |
1,13 |
1,58 |
2,03 |
2,48 |
2,93 |
3,33 |
3,83 |
4,29 |
|
y |
0,52 |
0,65 |
0,75 |
0,95 |
1,12 |
1,36 |
1,69 |
2,16 |
2,82 |
Будем искать функциональную зависимость в виде , где a - коэффициент регрессии. В этом случае сумма квадратов отклонений
Для определения неизвестных параметров a и b нужно решить систему:
После преобразований система примет вид
Имеем таблицу и значения сумм:
x |
0,68 |
1,13 |
1,58 |
2,03 |
2,48 |
2,93 |
3,33 |
3,83 |
4,29 |
|
y |
0,52 |
0,65 |
0,75 |
0,95 |
1,12 |
1,36 |
1,69 |
2,16 |
2,82 |
|
x^2 |
0,4624 |
1,2769 |
2,4964 |
4,1209 |
6,1504 |
8,5849 |
11,0889 |
14,6689 |
18,4041 |
|
xi·yi |
0,3536 |
0,7345 |
1,185 |
1,9285 |
2,7776 |
3,9848 |
5,6277 |
8,2728 |
12,0978 |
|
суммы |
||||||||||
x |
22,28 |
|||||||||
y |
12,02 |
|||||||||
x^2 |
67,2538 |
|||||||||
xy |
36,9623 |
Подставим в систему:
Откуда коэффициенты:
Подсчитаем коэффициент детерминации по формулам:
Где
у линейная |
0,26608 |
0,53411 |
0,80214 |
1,07017 |
1,33820 |
1,60623 |
1,84448 |
2,14230 |
2,41628 |
|
(y-y лин)^2 |
0,06448 |
0,01343 |
0,00272 |
0,01444 |
0,04761 |
0,06063 |
0,02387 |
0,00031 |
0,16299 |
|
(y-y cр)^2 |
0,66513 |
0,46999 |
0,34288 |
0,14865 |
0,04646 |
0,00060 |
0,12563 |
0,67971 |
2,20358 |
|
сум у-у лин |
0,39048 |
|||||||||
сум у-у ср |
4,68262 |
|||||||||
R^2= |
0,91661 |
Рис 2. Графическая интерпретация результатов расчета)
2.5 Пример метода для логарифмической аппроксимации вида a* ln(x)+b
Аналогично предыдущему разделу зададим набор данных и целевую функцию, затем найдя ее производную по параметрам и приравняв к нулю (необходимое условие существования экстремума), найдем эти параметры:
Пусть задан некий набор данных х и у:
x |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
y |
0,1 |
0,4 |
0,5 |
0,6 |
0,7 |
0,74 |
0,8 |
Будем искать функциональную зависимость в виде , где a - коэффициент регрессии. В этом случае сумма квадратов отклонений
Для определения неизвестных параметров a и b нужно решить систему:
После преобразований система примет вид
Имеем таблицу и значения сумм:
x |
y |
lnx |
ln^2(x) |
y*ln(x) |
||
1 |
0,1 |
0 |
0 |
0 |
||
2 |
0,4 |
0,693147 |
0,480453 |
0,277259 |
||
3 |
0,5 |
1,098612 |
1,206949 |
0,549306 |
||
4 |
0,6 |
1,386294 |
1,921812 |
0,831777 |
||
5 |
0,7 |
1,609438 |
2,59029 |
1,126607 |
||
6 |
0,74 |
1,791759 |
3,210402 |
1,325902 |
||
7 |
0,8 |
1,94591 |
3,786566 |
1,556728 |
||
3,84 |
8,525161 |
13,19647 |
5,667578 |
СУММЫ |
Подставим в систему:
Откуда коэффициенты:
Подсчитаем коэффициент детерминации по формулам:
Где
x |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
y среднее |
|
y |
0,1 |
0,4 |
0,5 |
0,6 |
0,7 |
0,74 |
0,8 |
0,548571 |
|
y model |
0,1197 |
0,3638 |
0,5066 |
0,6079 |
0,6865 |
0,7507 |
0,8050 |
||
(y-y mod)^2 |
0,0004 |
0,0013 |
0,0000 |
0,0001 |
0,0002 |
0,0001 |
0,0000 |
||
(y-y cp)^2 |
0,2012 |
0,0221 |
0,0024 |
0,0026 |
0,0229 |
0,0366 |
0,0632 |
Summ y-y mod |
0,0021 |
|
Summ y-y cp |
0,3511 |
|
R^2 |
0,9939 |
Рис 3. Графическая интерпретация результатов расчета)
3. Практическая часть
3.1 Описание программы в целом
Программа реализована на алгоритмическом языке Паскаль, в интегрированной среде разработки Borland Delphi 7.
При запуске программа пытается считать входные данные в бинарном виде (формат real) в файле input.bin при невозможности найти или считать этот файл производится попытка считать данные из текстового файла Input.txt. Точность вычислений ограничена точностью представления данных в формате real с плавающей точкой и составляет (для разных систем по разному) около 10-15. Далее производится требуемый расчет коэффициентов линейной регрессии и расчет значений функции в 10 (параметр density) значениях х на интервале от минимального до максимального значения х, в начальных данных. То есть если данные заданы:
х у
1 3
2 3
3 5
5 7
7 7
9 8
то расчет производится на интервале от 1 до 9, разбив интервал на 10 отрезков, более подробно о входных и выходных данных ниже.
По окончании расчет программа сохраняет данные, как в текстовом, так и в бинарном виде.
Также расчет коэффициентов и значений функции дублируется на экран.
3.2 Входные и выходные данные
а) Формат входных данных в файле input.bin:
файл содержит пары координат точек (х,у) в формате real, примерный вид файла в16тиричном формате:
Рис. 4 вид файла input.bin
Координат точек может быть сколько угодно, файл читается до достижения конца.
б) Формат входных данных в файле input.txt:
файл содержит пары координат точек (х, у) в обычном текстовом формате, разделенные пробелом, примерный вид файла:
Рис.5 вид файла input.txt
Координат точек может быть сколько угодно, файл читается до достижения конца.
в) По окончании вычислений программа выдает результаты на экран и тоже самое дублирует в файлы output.txt,output. bin,
Приблизительный вид выходного файла output.txt показан на рисунке:
Рис.6. Внешний вид выходного файла output.txt
Файл output. bin содержит пару коэффициентов ab, а затем следуют рассчитанные точки - пары координат ху.
Рис.7. Внешний вид выходного файла output.bin
Красным обведено значение коэффициента а, синим - b в формате real. Остальное координаты х,у.
В случае когда файлы недоступны об этом пользователь уведомляется:
Рис 8. Недоступен один файл данных
Рис 9. Недоступны оба файла данных
3.3 Реализация метода
Основной метод расчета (как и методы, вводы вывода) реализован в отдельной функции.
function log_min_sq(x,y:arraytype;n:integer;var a,b:real):integer;
- Функция принимает в качестве параметров наборы координат икс и игрек, их количество - n, возвращает коэффициенты a,b и в случае успешного расчета значение 0. В случае если метод неприменим, то значение минус один.
Основной метод - рассчитывает необходимые суммы (иксов игреков и логарифмов) и решает систему как показано выше в предыдущем разделе, относительно а и b.
В случае невозможности решить систему (определитель равен нулю или исходные данные некорректны ) выдается соответствующее предупреждение:
'Min square method is not applicable'.
Ниже опишем вспомогательные функции и значения переменных:
const maxn = 1000; - ограничение на количество считанных из файла координат.
const dencity =10; - «плотность» - количество расчетных точек в выходных данных.
procedure parse(str:string;var s1,s2:string); - процедура разбиения строки на две подстроки , разделенные пробелом(пробелами).
function load_bin_data(filename:string; var x,y:arraytype; var n:integer):integer; - загрузка данных из бинарного файла
function load_txt_data(filename:string; var x,y:arraytype; var n:integer):integer; - загрузка данных из текстового файла
procedure found_minmax(x:arraytype;n:integer; var xmin,xmax:real); - нахождение минимума и максимума в массиве х.
procedure print(var f:text;a,b:real;x:arraytype;n:integer); - вывод как в текстовый файл так на экран или принтер (зависит от параметра f - с чем связан файл вывода - туда и осуществляется).
procedure print_bin(var f:realfile;a,b:real;x:arraytype;n:integer); - вывод в бинарный файл
procedure print_results(a,b:real;x:arraytype;n:integer); - вывод всеми способами
3.4 Контроль и анализ результатов
Для контроля результатов вычислений, на одних и тех же данных был проведен аналогичный расчет значений в математических пакетах МатКад (MathCad) и Ексель(Excel):
а) результаты вычислений для :
б)Те же результаты в Маткад:
в) тот же расчет в Ексель:
x |
y |
lnx |
ln^2(x) |
y*ln(x) |
|||||
1 |
0,1 |
0 |
0 |
0 |
|||||
2 |
0,4 |
0,6931 |
0,4805 |
0,2773 |
D= |
19,6969 |
|||
3 |
0,5 |
1,0986 |
1,2069 |
0,5493 |
D1= |
6,9364 |
|||
4 |
0,6 |
1,3863 |
1,9218 |
0,8318 |
D2= |
2,3574 |
|||
5 |
0,7 |
1,6094 |
2,5903 |
1,1266 |
a= |
0,352158 |
|||
6 |
0,74 |
1,7918 |
3,2104 |
1,3259 |
b= |
0,119685 |
|||
7 |
0,8 |
1,9459 |
3,7866 |
1,5567 |
|||||
3,84 |
8,52516 |
13,1964 |
5,66757 |
СУММЫ |
|||||
n= |
7 |
||||||||
x |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
y среднее |
|
y |
0,1 |
0,4 |
0,5 |
0,6 |
0,7 |
0,74 |
0,8 |
0,548571 |
|
y model |
0,1197 |
0,3638 |
0,5066 |
0,6079 |
0,6865 |
0,7507 |
0,8050 |
||
(y-y mod)^2 |
0,0004 |
0,0013 |
0,0000 |
0,0001 |
0,0002 |
0,0001 |
0,0000 |
||
(y-y cp)^2 |
0,2012 |
0,0221 |
0,0024 |
0,0026 |
0,0229 |
0,0366 |
0,0632 |
||
Summ y-y mod |
0,0021 |
||||||||
Summ y-y cp |
0,3511 |
||||||||
R^2 |
0,9939 |
К записке прилагаются тексты программ (2 шт.) и лист расчета MathCAD и лист расчета Excel.
Выводы
Были освоены численные методы логарифмической и линейной аппроксимации и разработаны и опробованы соответствующие методы на языке Паскаль.
Контроль точности и правильности вычислений показал правильность разработанных алгоритмов.
Также по результатам работы программы можно судить о точности и быстродействии того или иного метода.
Список литературы
1. Ракитин Т.А., Первушин В.А. “Практическое руководство по численным методам с приложением программ на языке Pascal“
2. Демидович и Марон “Основы вычислительной математики“
3. Копченова и Марон “Вычислительная математика в примерах и задачах”
4. Вольвачев А.Н., Крисевич В.С. Программирование на языке Паскаль для ПЭВМ ЕС. Минск.: 1989 г
5. Фаронов. Язык программирования Turbo Pascal. М.1992 г
6. Скляров В.А. Знакомьтесь: Паскаль. М. 1988 г
7. Научная библиотека http://edu.sernam.ru/book_p_math1.php?id=148
Математика > Дифференциальное и интегральное исчисления для втузов, т.1
8. Учебник по Delphi 7 для начинающих
http://soft.mydiv.net/win/download-chebnik-po-delphi-7-dlya-nachinayuschih.html
Приложение А
Скриншоты тестовых прогонов программы и состав курсовой (пофайлово).
kurs-pas-dinam-rows-artem-680264-020715.docx - текст записки
min_sq.dpr - основной файл проекта Дельфи
key_to_bin.dpr - вспомогательная утилита (запись чисел в файл типа real)
input.* - входные файлы
output.* - выходные данные
CRT32.pas - модуль CRT для Дельфи
*.mcd - расчеты в МатКаде.
*.xlsx - расчеты в Екселе.
Остальные вспомогательные файлы типа *.dof *.cfg - созданы системой Дельфи.
Приложение Б
Полный листинг программы.
program min_sq;
{$APPTYPE CONSOLE}
uses
SysUtils,Windows,Crt32;
const maxn = 1000;
const dencity =10; eps = 1e-12; ahead = 0.2;
type arraytype = array[1..maxn]of real;
realfile = file of real;
procedure parse(str:string;var s1,s2:string);
var j,i,i1,len:integer;
begin
s1:=''; s2:='';
len:=length(str);
if (len<3) then exit;
i:=2;
while (i<=len) and (str[i]<>' ') do
inc(i);
for j:=1 to i-1 do
if str[j]<>' ' then
s1:=s1+str[j];
i1:=i+1;
while (i1<=len) and (str[i1]<>' ') do
inc(i1);
for j:=i+1 to i1-1 do
if str[j]<>' ' then
s2:=s2+str[j];
end;
{{{{{{{{{{{{{{{{{{{{{{{{{{}
function load_bin_data(filename:string; var x,y:arraytype; var n:integer):integer;
var f:file of real;
i,code1,code2:integer;
xtmp,ytmp:real;
begin
{$I-}
assign(f,filename);
reset(f);
{$I+}
if (IOresult<>0) then begin
load_bin_data:=-1;
n:=0;
exit;
end;
i:=0;
while (not eof(f)) do begin
{$I-}
read(f,xtmp);
{$I+}
code1:=IOresult;
{$I-}
read(f,ytmp);
{$I+}
code2:=IOresult;
if (code1=0) and (code2=0)and (not((xtmp=0)and(ytmp=0))) then begin
inc(i);
x[i]:=xtmp;
y[i]:=ytmp;
end;
end;
close(f);
n:=i;
if (n=0) then
load_bin_data:=-2
else
load_bin_data:=0;
end;
{{{{{{{{{{{{{{{{{}
function load_txt_data(filename:string; var x,y:arraytype; var n:integer):integer;
var f:text;
i,code1,code2:integer;
xtmp,ytmp:real;
str,s1,s2:string;
begin
{$I-}
assign(f,filename);
reset(f);
{$I+}
if (IOresult<>0) then begin
load_txt_data:=-1;
n:=0;
exit;
end;
i:=0;
while (not eof(f)) do begin
readln(f,str);
parse(str,s1,s2);
val(s1,xtmp,code1);
val(s2,ytmp,code2);
if (code1=0) and (code2=0) and (not((xtmp=0)and(ytmp=0)))then begin
inc(i);
x[i]:=xtmp;
y[i]:=ytmp;
end;
end;
close(f);
n:=i;
if (n=0) then
load_txt_data:=-2
else
load_txt_data:=0;
end;
function log_min_sq(x,y:arraytype;n:integer;var a,b:real):integer;
var sx,sy,sx2,sxy,d,da,db:real;
i:integer;
begin
sx:=0; sy:=0;sxy:=0;sx2:=0;
for i:=1 to n do begin
if (x[i]<=0) then begin
log_min_sq:=-1;
exit;
end;
sx:=sx+ln(x[i]);
sy:=sy+y[i];
sx2:=sx2+ln(x[i])*ln(x[i]);
sxy:=sxy+ln(x[i])*y[i];
end;
d:=sx*sx-n*sx2;
if (d=0) then begin
log_min_sq:=-1;
exit;
end;
da:=sy*sx-n*sxy;
db:=sx*sxy-sy*sx2;
a:=da/d;
b:=db/d;
log_min_sq:=0;
end;
procedure found_minmax(x:arraytype;n:integer; var xmin,xmax:real);
var i:integer;
begin
xmin:=x[1];
xmax:=x[1];
for i:=2 to n do begin
if (x[i]>xmax) then xmax:=x[i];
if (x[i]<xmin) then xmin:=x[i];
end;
end;
{{{{{{{{{{{{{{{{{{{{{{{{{{}
procedure print(var f:text;a,b:real;x:arraytype;n:integer);
var xc,xmin,xmax,dx:real;
begin
{ writeln(f);}
textcolor(yellow);
write(f,'Min square method, Found y(x)=a*ln(x)+b, ');
textcolor(lightred);
writeln(f,' a = ',a:9:6,' , b = ',b:9:6);
textcolor(yellow);
Writeln(f,'It can be aproximeted function on the some X between Xmin and Xmax:');
textcolor(lightgreen);
found_minmax(x,n,xmin,xmax);
xc:=xmin;
dx:=abs(xmax-xmin)/dencity;
while (xc<=xmax+ahead*(xmax-xmin)+eps) do begin
writeln(f,' x = ',xc:6:3,' y = ',a*ln(xc)+b:6:3);
xc:=xc+dx;
end;
end;
{{{{{{{{{{{{{{{{{{{{{{{{{{}
procedure print_bin(var f:realfile;a,b:real;x:arraytype;n:integer);
var xc,xmin,xmax,dx,yc:real;
begin
write(f,a,b);
found_minmax(x,n,xmin,xmax);
xc:=xmin;
dx:=abs(xmax-xmin)/dencity;
while (xc<=xmax+eps) do begin
yc:=a*xc+b;
write(f,xc,yc);
xc:=xc+dx;
end;
end;
{{{{{{{{{{{{{{{{{{{{{{{{{{}
procedure print_results(a,b:real;x:arraytype;n:integer);
var ftxt,printer:text; fbin:realfile;
txtfname,binfname:string; key:char;
begin
print(output,a,b,x,n);
{$I-}
txtfname:='output.txt'; binfname:='output.bin';
assign(ftxt,txtfname); rewrite(ftxt);
{$I-}
if IOresult<>0 then begin
textcolor(lightred);
write('Write data into ', txtfname, ' fail.');
end;
print(ftxt,a,b,x,n);
close(ftxt);
textcolor(yellow);
write('Write data into ', txtfname, ' done.');
{{{{{{{{{{{}
{$I-}
assign(fbin,binfname); rewrite(fbin);
{$I-}
if IOresult<>0 then begin
textcolor(lightred);
write('Write data into ', binfname, ' fail.');
end;
print_bin(fbin,a,b,x,n);
close(fbin);
textcolor(yellow);
write('Write data into ', binfname, ' done.');
textcolor(lightcyan);
writeln;
write('Press any key to exit');
repeat until keypressed;
{key:=readkey;
if (key='p')or(key='P') then begin
{$I-}{
assign(printer,'prn');
rewrite(printer);
{$I+} {
print(printer,a,b,x,n);
close(printer);
end; }
end;
var result,n,i:integer;
x,y:arraytype;
a,b:real;
fname:string;
begin
textcolor(white);
fname := 'input.bin';
result := load_bin_data(fname,x,y,n);
if (result<>0) then begin
textcolor(lightred);
write('File ',fname,' not found or read error!');
fname := 'input.txt';
textcolor(yellow);
writeln(' Trying load file ',fname,' ~ ');
result := load_txt_data(fname,x,y,n);
if (result<>0) then begin
textcolor(lightred);
writeln('File ',fname,' not found or read error!');
repeat until keypressed;
exit;
end;
end;
textcolor(yellow);
writeln('Data load succesfull! Initial array :');
textcolor(lightblue);
for i:=1 to n do
writeln(' x = ',x[i]:6:3,' y = ',y[i]:6:3);
result := log_min_sq(x,y,n,a,b);
if (result<>0) then begin
writeln('Min square method is not applicable');
readln;
exit;
end;
print_results(a,b,x,n);
end.
Приложение С
Текст утилиты для записи бинарных файлов в формате real.
program key_to_bin;
{$APPTYPE CONSOLE}
uses
SysUtils;
var x,y:real;
f:file of real;
begin
x:=-1;
assign(f,'input.bin');
rewrite(f);
while (x<>0) do begin
write('x = ');readln(x);
write('y = ');readln(y);
write(f,x);
write(f,y);
end;
close(f);
end.
Пример работы утилиты:
Размещено на Allbest.ru
...Подобные документы
Обзор методов аппроксимации. Математическая постановка задачи аппроксимации функции. Приближенное представление заданной функции другими, более простыми функциями. Общая постановка задачи метода наименьших квадратов. Нахождение коэффициентов функции.
курсовая работа [1,5 M], добавлен 16.02.2013Анализ методов идентификации, основанных на регрессионных процедурах с использованием метода наименьших квадратов. Построение прямой регрессии методом Асковица. Определение значения дисперсии адекватности и воспроизводимости, коэффициентов детерминации.
курсовая работа [549,8 K], добавлен 11.12.2012Построение эмпирических формул методом наименьших квадратов. Линеаризация экспоненциальной зависимости. Элементы теории корреляции. Расчет коэффициентов аппроксимации, детерминированности в Microsoft Excel. Построение графиков функций, линии тренда.
курсовая работа [590,9 K], добавлен 10.04.2014Идентификация объектов методом наименьших квадратов. Анализ коэффициентов парной, частной и множественной корреляции. Построение линейной модели и модели с распределенными параметрами. Итерационный численный метод нахождения корня (нуля) заданной функции.
курсовая работа [893,3 K], добавлен 20.03.2014Определение параметров линейной зависимости из графика. Метод парных точек. Метод наименьших квадратов. Блок-схема программного комплекса в Microsoft Visual Studio и Microsoft Excel. Инструкция пользователя, скриншоты. Общий вид программного кода.
курсовая работа [2,1 M], добавлен 29.11.2014Определение зависимости одной физической величины от другой. Применение метода наименьших квадратов с помощью программного обеспечения Mathcad. Суть метода наименьших квадратов. Корреляционный анализ, интерпретация величины корреляционного момента.
курсовая работа [63,8 K], добавлен 30.10.2013Разработка алгоритма аппроксимации данных методом наименьших квадратов. Средства реализации, среда программирования Delphi. Физическая модель. Алгоритм решения. Графическое представление результатов. Коэффициенты полинома (обратный ход метода Гаусса).
курсовая работа [473,6 K], добавлен 09.02.2015Метод Гаусса и одно из его приложений в экономике (простейшая задача о рационе). Модель Леонтьева межотраслевого баланса. Алгебраический метод наименьших квадратов. Анализ данных эксперимента. Метод наименьших квадратов в Excel и аппроксимация данных.
курсовая работа [598,7 K], добавлен 11.07.2015Развитие навыков работы с табличным процессором Microsoft Excel и программным продуктом MathCAD и применение их для решения задач с помощью электронно-вычислительных машин. Схема алгоритма. Назначение функции Линейн и метода наименьших квадратов.
курсовая работа [340,4 K], добавлен 17.12.2014Построение эмпирических формул методом наименьших квадратов. Линеаризация экспоненциальной зависимости. Элементы теории корреляции. Расчет аппроксимаций в табличном процессоре Excel. Описание программы на языке Turbo Pascal; анализ результатов ее работы.
курсовая работа [390,2 K], добавлен 02.01.2015Аппроксимация эмпирических данных линейной и квадратичной зависимостью. Теория корреляции: расчет коэффициентов детерминированности. Построение алгоритма и вычисление приближённых функций методом наименьших квадратов в среде программирования Turbo Pascal.
курсовая работа [766,6 K], добавлен 26.12.2011Определение ускорения свободного падения с помощью физического маятника. Период колебания физического маятника. Нахождение ускорения свободного падения методом наименьших квадратов. Решение задач методами Гаусса-Ньютона и квазиньютоновскими методами.
лабораторная работа [32,4 K], добавлен 29.03.2015Аппроксимация функции зависимости крутящего момента косозубого шестеренного пневмодвигателя К3М от числа оборотов вала в безразмерных величинах с помощью Microsoft Excel и PTC MathCad. Суть метода наименьших квадратов. Оценка точности аппроксимации.
курсовая работа [1,2 M], добавлен 10.03.2012Традиционные языки высокоуровневого программирования. Обзор методов интегрирования. Оценка апостериорной погрешности. Численное решение систем линейных уравнений. Аппроксимация функций методом наименьших квадратов. Решение дифференциальных уравнений.
методичка [6,4 M], добавлен 23.09.2010Точность вычислений, классификация погрешностей. Оценка апостериорной погрешности, численное дифференцирование. Численное решение систем линейных уравнений. Аппроксимация функций методом наименьших квадратов. Решение нелинейных уравнений с неизвестным.
методичка [611,8 K], добавлен 10.10.2010Основные методы и алгоритмы исследования. Нахождение минимума среднеквадратичного отклонения. Особенности решения нормальных уравнений. Параметры линейной аппроксимирующей функции. Расчет значений аппроксимирующей функции и среднеквадратичного уклонения.
курсовая работа [749,3 K], добавлен 08.06.2019Метод наименьших квадратов. Возможные варианты расположения экспериментальных точек. Аппроксимация экспериментальных данных в программах Microsoft Excel, MathCAD и MatLAB. Вычисление средних значений и их сумм. Коэффициенты корреляции и детерминации.
курсовая работа [890,9 K], добавлен 30.10.2012Подбор параметров линейной функции. Вычисление значения функции в заданных промежуточных точках с использованием математических пакетов. Исследование математической модели решения задачи. Составление программы для вычисления коэффициента корреляции.
курсовая работа [2,3 M], добавлен 21.10.2014Анализ матрицы коэффициентов парной корреляции. Выбор факторных признаков для построения двухфакторной регрессионной модели. Оценка параметров регрессии по методу наименьших квадратов. Нахождение определителей матриц. Применение инструмента Регрессия.
контрольная работа [1,0 M], добавлен 13.01.2013Идентификация объектов методом наименьших квадратов, построение линейной модели для неравноточных измерений входной величины. Численные процедуры оценивания параметров нелинейной регрессии; аналитическая модель химического реактора; линеаризация.
курсовая работа [1,2 M], добавлен 12.12.2010