当前位置:首页 » 编程语言 » 高斯拟合c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

高斯拟合c语言

发布时间: 2022-06-02 22:33:14

‘壹’ origin 8.0如何进行高斯拟合

origin 8.0进行高斯拟合的方法:

1、导入数据。点击file-import-single ASCII,如图示中的路径。

‘贰’ 高斯多项拟合C或者C++源代码谁有

#include
<iostream>
#include<iomanip.h>
using namespace std;

int
change_num=0;
void display(double **l_array,int r_size1,int r_size2)
//这个函数是用来显示矩阵(主要是用来调试使用的)
{
for(int i=0; i<r_size1; i++)

for(int j=0; j<r_size2; j++)
{

if(j!=0)
{

cout<<setprecision(4)<<setiosflags(ios_base::left)<<setw(7)<<l_array[i][j];

}
else
{

cout<<setprecision(4)<<setiosflags(ios_base::left)<<l_array[i][j]<<"
";
}

if(j+1==r_size2)

{
cout<<endl;
}
}

cout<<resetiosflags(ios_base::left);
}

//这个下面的是算出上三角形
bool
Change(double **&array,int r_size,int c_size)
{
int k=0;

double max=array[k][k];
int num=0;
bool flag=false;

while(k<r_size) //k表示现在在哪一行
{

max=array[k][k];
for(int i=k; i<r_size; i++)

{
if(array[i][k]>max)
{

flag=true;
max=array[i][k];

num=i; //num表示最大行的行数
}

}

if(!flag)
{
num=k;

}
if(max==0)
//如果一个列中的最大数是0的话那就说明这个矩阵的奇异矩阵
{
return
false;
}
else if(k!=num)
{

double temp=0;
for(int i=0; i<c_size; i++)

{
temp=array[k][i];

array[k][i]=array[num][i];

array[num][i]=temp;
change_num++;
}

}

for(int i=k; i<r_size-1; i++)
{

double temp=array[i+1][k];
//这里的temp一定要保存的,因为直接使用array[i+1][k],在下面的计算中会改变
for(int j=k;
j<c_size; j++)
{

array[i+1][j]-=((temp/array[k][k])*array[k][j]);
}

}
k++;
flag=false;
}
return
true;
}

double Rowlay(double **&array,int r_size, int c_size )
// 求行列式

{
double sum=1;

for(int i=0; i<r_size; i++)
{
sum*=array[i][i];

}
return sum;
}

void Equation(double **&array,int r_size,
int c_size) //求方程组解
{
for(int i=0; i<r_size; i++)

{
double temp1=array[i][i];
for(int j=i; j<c_size;
j++)
{
array[i][j]/=temp1;
}

}

for(int i=1; i<r_size; i++)
{
for(int j=i-1;
j>=0; j--)
{
double
temp2=array[j][i];
for(int h=i; h<c_size; h++)

{
array[j][h]-=(temp2*array[i][h]);

}
}
}
}

int main()
{
int count=0;

cin>>count;
double **array=new double*[count];
for(int i=0;
i<count; i++)
{
array[i]=new double[count+1];

}

for(int i=0; i<count; i++)
for(int j=0; j<count+1;
j++)
{
cin>>array[i][j];
}

bool flag=Change(array,count,count+1);
if(flag)
{

cout<<endl;
double
value=Rowlay(array,count,count+1);
if(change_num%2==1)

{
value*=-1;
}
cout<<"行列式为
"<<value<<endl;

Equation(array,count,count+1);

cout<<"方程解为"<<endl;
for(int i=0; i<count;
i++)
{
char ch='x'+i;

cout<<ch<<"= "<<array[i][count]<<endl;

}
display(array,count,count+1);

}
else

{
cout<<"这个矩阵是奇异矩阵"<<endl;

cout<<"这个方程无数解!!!"<<endl;

cout<<"行列式为"<<0<<endl;
}

for(int j=0;
j<count; j++)
{
delete array[j];
}
delete
[]array;
}

‘叁’ 求高斯算法完整c语言程序,急。。。。。

如果不是专门研究算法的,只是为了学习c语言,你研究这个的没多大意思,看看指针,结构体,拿个windows api好好研究研究写点有用的程序吧,算法看看别人的,那些就交给大学教授去研究吧

‘肆’ 高斯拟合算法c/c++怎么实现

你先把最少二乘法的原理搞懂吧,其实最少二乘法不难得。

你可以自己推到,不过这些经典的方法,都有现成公式的了。拿本书找出公式,也就是几个矩阵的运算,把你的数据带进去就直接算得出了。

‘伍’ c语言实现高斯消元法提高运算速度

最好还是换DSP

‘陆’ 什么是高斯拟合

高斯拟合(Gaussian Fitting)即使用形如:

Gi(x)=Ai*exp((x-Bi)^2/Ci^2)

的高斯函数对数据点集进行函数逼近的拟合方法。

其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,
而高斯拟合是用高斯函数系。

使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。这一点
在很多领域都有应用,特别是计算化学。着名的化学软件Gaussian98
就是建立在高斯基函数拟合的数学基础上的。

具体算法楼主可以去几大论坛上问问。现在没时间了。bbs.matwav.com
http://www.simwe.com/forum/archiver/tid-551606.html

‘柒’ 请教:高斯拟合c/c++怎么实现

搜一下圆拟合的算法,先了解算法,然后在写代码,我能想到的是,因为半径已知,通过两个点,可以求出两个原因,然后通过其他的点排除一个点,这样就有了一个初始的圆心,然后,在这个点附近的一个小范围,通过循环找出最优解。