double (*)[]类型的实参与double*类型的形参不兼容该怎么办,谢谢各位大神
#include<math.h>#include<stdio.h>doublenorm(double*x,double*y,intn){inti=0;doubles=0;...
#include<math.h>
#include<stdio.h>
double norm(double *x,double *y,int n)
{
int i=0;
double s=0;
for(i=0;i<n;i++)
s=s+fabs(x[i]-y[i])*fabs(x[i]-y[i]);
return sqrt(s);
}
void Jacobi(double A[],double b[],double x0[],double x[],double w,int n1)
{
int n=100;
double ee=0.0001,s=0;
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=0;j<n1;j++)
x[j]=x0[j];
for(j=0;j<n1;j++)
{
s=0;
for(k=0;k<n1;k++)
{
s=s+A[j*n1+k]*x0[k];
}
x0[j]=x[j]+w*(b[j]-s)/A[j*n1+j];
}
if(norm(x,x0,n1)<ee)
break;
}
}
int main()
{
double a[3][3]={{8,-1,1},{2,10,-1},{1,1,-5}};
double b[3]={1,4,3};
double x0[3]={0,0,0.0};
double x[3]={0,0,0},w=1.005;
int n1=3,i;
Jacobi(a,b,x0,x,w,n1);"{{{{{【【{【"""""就是这里的a有错误"""}}】】】""
for(i=0;i<n1;i++)
printf("x(%d)=%6.4f\n",i+1,x[i]);
return(0);
} 展开
#include<stdio.h>
double norm(double *x,double *y,int n)
{
int i=0;
double s=0;
for(i=0;i<n;i++)
s=s+fabs(x[i]-y[i])*fabs(x[i]-y[i]);
return sqrt(s);
}
void Jacobi(double A[],double b[],double x0[],double x[],double w,int n1)
{
int n=100;
double ee=0.0001,s=0;
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=0;j<n1;j++)
x[j]=x0[j];
for(j=0;j<n1;j++)
{
s=0;
for(k=0;k<n1;k++)
{
s=s+A[j*n1+k]*x0[k];
}
x0[j]=x[j]+w*(b[j]-s)/A[j*n1+j];
}
if(norm(x,x0,n1)<ee)
break;
}
}
int main()
{
double a[3][3]={{8,-1,1},{2,10,-1},{1,1,-5}};
double b[3]={1,4,3};
double x0[3]={0,0,0.0};
double x[3]={0,0,0},w=1.005;
int n1=3,i;
Jacobi(a,b,x0,x,w,n1);"{{{{{【【{【"""""就是这里的a有错误"""}}】】】""
for(i=0;i<n1;i++)
printf("x(%d)=%6.4f\n",i+1,x[i]);
return(0);
} 展开
推荐于2017-12-16
展开全部
a是二维数组。
而你的参数列表是(double A[],double b[],double x0[],double x[],double w,int n1),
传递二维数组的参数列表应该是:
(double A[][3], double b[], double x0[], double x[], double w, int n1)
而你的参数列表是(double A[],double b[],double x0[],double x[],double w,int n1),
传递二维数组的参数列表应该是:
(double A[][3], double b[], double x0[], double x[], double w, int n1)
追问
昂 那我调调看。。。。。。谢谢
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询