1、打开vs2015,新建一个Windows Form窗体程序或者控制台都可以。
2、 定义一个名为array1的数组并赋值:double[,] array1 = new double[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }。
3、右键解决方案下的项目名,添加-类,创建一个名为“turnzhi”的类。
4、转置类的代码为:public static double[,] 转置(double[,] A){ int m, nm = A.GetLength(0)n = A.GetLength(1)double[,] C = new double[n, m]for (int i = 0i <mi++){for (int j = 0j <nj++){C[j, i] = A[i, j]}} return C}。
5、在主程序调用转置类,用两个for循坏将转置后的数组(array)输出来;并将结果显示在textbox中。
6、最后运行程序查看我们编写的结果。
你的意思是说,输入一些数据,让程序拟合出来一个函数。这个很复杂。比如我举个例子。
多项式拟合函数polyfit之C语言的源码
2010-11-25 10:05:57| 分类: VC++编程 | 标签:double poly_n polyfit int for |字号 订阅
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
{
int i,j,m,n=7,poly_n=2
double x[7]={1,2,3,4,6,7,8},y[7]={2,3,6,7,5,3,2}
double a[3]
void polyfit(int n,double *x,double *y,int poly_n,double a[])
system("cls")
polyfit(n,x,y,poly_n,a)
for (i=0i<poly_n+1i++)/*这里是升序排列,Matlab是降序排列*/
printf("a[%d]=%g\n",i,a[i])
getch()
}
/*==================polyfit(n,x,y,poly_n,a)===================*/
/*=======拟合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n========*/
/*=====n是数据个数 xy是数据值 poly_n是多项式的项数======*/
/*===返回a0,a1,a2,……a[poly_n],系数比项数多一(常数项)=====*/
void polyfit(int n,double x[],double y[],int poly_n,double a[])
{
int i,j
double *tempx,*tempy,*sumxx,*sumxy,*ata
void gauss_solve(int n,double A[],double x[],double b[])
tempx=calloc(n,sizeof(double))
sumxx=calloc(poly_n*2+1,sizeof(double))
tempy=calloc(n,sizeof(double))
sumxy=calloc(poly_n+1,sizeof(double))
ata=calloc((poly_n+1)*(poly_n+1),sizeof(double))
for (i=0i<ni++)
{
tempx[i]=1
tempy[i]=y[i]
}
for (i=0i<2*poly_n+1i++)
for (sumxx[i]=0,j=0j<nj++)
{
sumxx[i]+=tempx[j]
tempx[j]*=x[j]
}
for (i=0i<poly_n+1i++)
for (sumxy[i]=0,j=0j<nj++)
{
sumxy[i]+=tempy[j]
tempy[j]*=x[j]
}
for (i=0i<poly_n+1i++)
for (j=0j<poly_n+1j++)
ata[i*(poly_n+1)+j]=sumxx[i+j]
gauss_solve(poly_n+1,ata,a,sumxy)
free(tempx)
free(sumxx)
free(tempy)
free(sumxy)
free(ata)
}
void gauss_solve(int n,double A[],double x[],double b[])
{
int i,j,k,r
double max
for (k=0k<n-1k++)
{
max=fabs(A[k*n+k])/*find maxmum*/
r=k
for (i=k+1i<n-1i++)
if (max<fabs(A[i*n+i]))
{
max=fabs(A[i*n+i])
r=i
}
if (r!=k)
for (i=0i<ni++) /*change array:A[k]&A[r] */
{
max=A[k*n+i]
A[k*n+i]=A[r*n+i]
A[r*n+i]=max
}
max=b[k] /*change array:b[k]&b[r] */
b[k]=b[r]
b[r]=max
for (i=k+1i<ni++)
{
for (j=k+1j<nj++)
A[i*n+j]-=A[i*n+k]*A[k*n+j]/A[k*n+k]
b[i]-=A[i*n+k]*b[k]/A[k*n+k]
}
}
所以这种程序是超级大型的,一般没人能独立写出来。
编程计算器和一些程序能实现,但是源代码都是不公布的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)