Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2016, 13:12   #1
Яна1789
 
Регистрация: 31.05.2016
Сообщений: 9
По умолчанию Написать программу за деньги

Доброго дня.
Мне дана задача, найти параметры (С1, С2, С3) аппроксимирующей функции y= С1*f1(x)+С2*f2(x)+ С3*f3(x), пользуясь методом наименьших квадратов. А поиск параметром осуществить, по методу Гаусса.
xi- 0.79;1.57;2.36;3.12;3.81
yi- 2.50;1.20;1.12;2.25;4.28
φ1(x)- 1
φ2(x)- x
φ3(x)- x^2.
И надо,что бы выводилось в main.
Моя программа(примерно так),правда она не правильная.(поэтому и нужна помощь):
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#define n 5
#define m 3
void vvodMatrX(float X[n]);
void vvodMatrY(float Y[n]);
void matrAB(float A[m][m],float B[m],float x[n],float y[n]);
void vivodmatr(float A[m][m]);
void vivodvekt(float 
B[m]);
void gauss(float A[m][m],float B[m],float C[m]);
void tabl(float X[n],float Y[n],float C[m],float G[n], int &i, float F[n]);
void approks(float G[n],float &);
void otklonenie(float [],float X[n],float &,int &max);
float fi(float x,int k);
void vivodTabl(float X[n],float Y[n],float C[m],float G[n], int &i, float F[n]);

int main()

{
int i ,k,j,max;
float A[m][m],B[m],X[n],Y[n],C[m],G[n],J,g,F[n];
vvodMatrX(X);
vvodMatrY(Y);
matrAB(A,B,X,Y);
printf("matrica A:\n ");
vivodmatr(A);
printf("\nnvektor B:\n");
vivodvekt(B);
gauss(A,B,C);
tabl(X,Y,C,G,i,F);
printf("\nF=%4.4f+%4.4f(x)+%4.4f((3 *x*x)-1) \n",C[0],C[1],C[2]);
printf("\nkoefficienti C0=%5.4f, C1=%5.4f, C2=%5.4f \n",C[0],C[1],C[2]);
printf("\nvicheslennie znacheniya\n");
vivodTabl(X,Y,C,G,i,F);
approks(G,J);
printf("\nznachenie kriteria approksimacii: \n");
printf(" J= %7.4f ",J);
otklonenie(G,X,g,max);
printf("\nMax. po modulu otklonenie:\n");
printf("max|g[i]|= %5.4f pri x= x[%d]= %5.4f \n",g,max+1,X[max]);
getch();


}

void vvodMatrX(float X[n])
{
int i;
printf("vvod x:\n");
for (i=0; i<n; i++)
scanf("%f", &X[i]);
}

void vvodMatrY(float Y[n])
{
int i;
printf("vvod y:\n");
for (i=0; i<n; i++)
scanf("%f", &Y[i]);
}

void matrAB(float A[m][m],float B[m],float x[n],float y[n])
{
int i,j,l;
float S;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
S=0;
for(l=0;l<n;l++)
S=S+fi(x[l],i)*fi(x[l],j);
A[i][j]=S;
}
S=0;
for(l=0;l<n;l++)
S=S+y[l]*fi(x[l],i);
B[i]=S;
}
}


void vivodmatr(float A[m][m])
{
int i,j;
for(i=0;i<m;i++)
{
printf("\n");
for(j=0;j<m;j++)
printf("%9.4f",A[i][j]);
} 
printf("\n");
}


void vivodvekt(float B[m])
{
int i;
for(i=0;i<m;i++)
printf("%9.4f",B[i]);
}
void tabl(float X[n],float Y[n],float C[m],float G[n],int &i, float F[n])
{
for(i=0;i<n;i++)
{
F[i]=C[0]+C[1]*( X[i])+C[2]*((3*X[i]*X[i])-1);
G[i]=Y[i]-F[i];
}
}


void approks(float G[n],float &J)
{
int i;
J=0;
for(i=0;i<n;i++)
J=J+G[i]*G[i];
}


void otklonenie( float G[n],float X[n],float &g, int &max)
{
int i;
g=fabs(G[0]);
max=0;
for(i=0;i<n;i++)
if (fabs(G[i])>g)
{
g=fabs(G[i]);
max=i;
}
}


float fi(float x,int k)
{
if(k==0)
return (1);
else
if(k==1)
return (x);
else
if(k==2)
return ((3*x*x)-1);
}

void vivodTabl(float X[n],float Y[n],float C[m],float G[n], int &i, float F[n])
{
printf("i X[i] Y[i] F[i] G[i]\n");
for(i=0;i<n;i++)
printf("%i %5.4f %5.4f %5.4f %5.4f\n",i+1,X[i],Y[i],F[i],G[i]);
}

Последний раз редактировалось Аватар; 03.06.2016 в 13:56.
Яна1789 вне форума Ответить с цитированием
Старый 03.06.2016, 17:10   #2
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Давайте обсудим. До конца дня сделаю.
Скайп: shulz164
RomiKon вне форума Ответить с цитированием
Старый 04.06.2016, 01:37   #3
Яна1789
 
Регистрация: 31.05.2016
Сообщений: 9
По умолчанию

А почте не получится? Понимаю,по скайпу проще,но его у меня нет.
Яна1789 вне форума Ответить с цитированием
Старый 04.06.2016, 08:28   #4
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

romikon164@gmail.com
RomiKon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу за деньги stifutkin Фриланс 6 03.07.2013 09:19
Написать программу в Дельфи за деньги Gilberg15 Фриланс 5 15.05.2013 11:33
Нужно написать программу на С++ за деньги sariks Фриланс 1 13.12.2010 09:49
Просьба написать маленькую программу за деньги! Kuzmichinishe Фриланс 7 26.09.2009 14:11
Помогите написать программу на Visual C++ за деньги Игорь 89 Фриланс 1 08.06.2009 02:30