用c++编写程序,编写一个3*3矩阵转置的函数,在main()函数中输入数据

用c++编写程序,编写一个3*3矩阵转置的函数,在main()函数中输入数据,第1张

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]

}

}

所以这种程序是超级大型的,一般没人能独立写出来。

编程计算器和一些程序能实现,但是源代码都是不公布的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11877530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存