Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
отклонений в заданных точках xi исходных данных yi и получаемых по аппроксимации.
Возвращаемое значение функции имеет смысл кода ошибки. Оно равно нулю при успешном выполнении аппроксимации.
Заголовок функции AprPoly() имеет следующий вид:
int AprPoly(int n, LVector X, LVector Y, int m, Vector A,
double& S, int keyDemo=0, LVector DY=NULL)
Ее входными переменными являются:
- n - число точек в таблице зависимости y(x);
- X - вектор значений аргумента;
- Y - вектор значений функции;
- m - порядок полинома: от 0 до 3.
Ее выходные переменные:
- A - одномерный массив коэффициентов полинома A[0]...A[3];
- S - абсолютная среднеквадратичная погрешность аппроксимации.
Необязательными параметрами являются keyDemo и DY, имеющие тот же смысл и те же значения, что и у предыдущей функции.
Возвращаемой функцией значение представляет собой код ошибки
- AprPoly = 0 - нормальное завершение;
- AprPoly = -1 - число точек недостаточно для аппроксимации. Другие значения AprPoly передаются из подпрограммы решения СЛАУ, в качестве которой используется AprGaussPro() и которая находится в том же файле Aproxy (см. комментарии к ней).
Заголовок функции AprNonLine() имеет следующий вид:
int AprNonLine(int n, LVector X, LVector Y, LVector A, f_Xy FuncName, int nA, Vector A, double epsA, double epsF, double& S, int keyDemo=0, LVector DY=NULL).
Ее входными переменными являются:
- n - число точек в таблице зависимости y(x);
- X - вектор значений аргумента;
- Y - вектор значений функции;
- nA – число определяемых параметров аппроксимации;
- A - вектор нулевых приближений искомых параметров;
- FuncName – имя функции, которая является аппроксимирующей.
Входные переменные keyDemo, epsA и epsF имеют то же назначение, что соответствующие параметры функции AprSysNewton() и предназначены для передачи в нее.
Выходные переменные функции AprNonLine():
- A - вектор искомых параметров аппроксимирующей функции;
- S - абсолютная среднеквадратичная погрешность аппроксимации.
Необязательным выходным параметром является вектор отклонений DY.
Возвращаемой функцией значение представляет собой код ошибки
- AprNonLine = 0 - нормальное завершение;
- AprNonLine = -1 - число точек недостаточно для аппроксимации. Другие значения AprNonLine передаются из функции AprSysNewton().
Заголовок функции AprLine2() имеет следующий вид:
Заголовок функции AprPoly2() имеет следующий вид:
int AprPoly2(int n, LVector X, LVector Y, LVector Z,
int m, Vector A, double& S, int keyDemo=0, LVector DZ=NULL).
Входными параметрами являются:
- n - число точек в таблице функции;
- X - вектор значений первого аргумента;
- X - вектор значений второго аргумента;
- Z - вектор значений функции.
Ее выходные параметры:
- A - вектор коэффициентов полинома A[0]...A[9] в соответствие с формулой (8);
- S - абсолютная среднеквадратичная погрешность аппроксимации.
Необязательными параметрами являются keyDemo и DZ, имеющие тот же смысл и те же значения, что и у предыдущих функций.
Возвращаемое функцией значение представляет собой код ошибки; при нормальном завершении он равен нулю.
В работе также используются функция модуля DataFile - WritePoly() и WritePoly2(). Эти функции отличаются от ранее изученных функций модула DataFile тем, что они предназначены для вывода в файл текста, представляющего собой синтаксически правильные функции на языке С/С++ и имеющие заголовок
double y(double x) или
double z(double x, double y)
Они выполняют расчет значения по формуле полинома с жестко зашитыми коэффициентами. Эти функции могут компилироваться, присоединяться к любому проекту и использоваться для любых расчетов.
Заголовок функций WritePolу() и WritePolу2() имеет вид:
void WritePoly(int n, Vector A, string FileName=STR0)
void WritePoly2(int n, Vector A, string FileName=STR0)
Все их параметры – входные:
- n – порядок полинома. Для WritePolу() он может быть любым, а для WritePolу2()онограничивается: ;
- A – массив коэффициентов полинома;
- FileName – имя файла (является необязательным).
Пример функции, создаваемой с помощью WritePoly() представлен на листинге:
Листинг 1
#include <math.h>
#include "define.h"
double y(double x)
{
// описание данных
int i,n;
double P;
Vector A;
// задание порядка полинома
n=5;
// задание коэффициентов полинома
A[0]= 5.0000000E-01;
A[1]= 1.0000000E+00;
A[2]= 2.0000000E+00;
A[3]= 3.0000000E+00;
A[4]= 4.0000000E+00;
A[5]= 5.0000000E+00;
// расчет значения полинома
P=0;
for (i=1; i>=n; i++)
P+=A[i]*pow(x,i);
return P;
}
Эта функция осуществляет расчет полинома по его формуле.
Аналогичный текст создает функция WritePolу2().
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.