首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

求雅可比迭代法的程序流程图及3×3结构的C程序

发布网友

我来回答

2个回答

热心网友

#include<stdio.h>
#include<math.h>
main()
{
int n,M,i,j;
printf("请输入希望迭代的次数");
scanf("%d",&M);
printf("请输入方程阶数");
scanf("%d",&n);
float p,y[n],x[n],a[n][n],b[n];
printf("请输入误差限");
scanf("%f",&p);
printf("请输入系数行列式");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
printf("请输入常数项向量");
for(i=0;i<n;i++)
scanf("%f",&b[i]);
printf("请输入初始向量");
for(i=0;i<n;i++)
scanf("%f",&x[i]);
for(k=1;k<=M;k++)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(j==i) continue;
else y[i]=(b[i]-a[i][j]x[i])/a[i][i];
}
for(i=0;i<n;i++)
if(fabs(x[i]-y[i])<p)
for(i=0;i<n;i++)
{
printf("x%d=%f",i+1,y[i]);break;
}
else for(i=0;i<n;i++)
x[i]=y[i];
}
if(k>M) printf("没有得到在误差范围内的根");
}

热心网友

在c语言中数组说明的一般形
式为:
类型说明符
数组名
[常量表达式],……;
其中,类型说明符是任一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int
a[10];
说明整型数组a,有10个元素。
float
b[10],c[20];
说明实型数组b,有10个元素,实型数组c,有20个元素。
char
ch[20];
说明字符数组ch,有20个元素。
对于数组类型说明应注意以下几点:
1.数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2.数组名的书写规则应符合标识符的书写规定。
3.数组名不能与其它变量名相同,例如:
void
main()
{
int
a;
float
a[10];
……
}
是错误的。
4.方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。
5.不能在方括号中用变量来表示元素的个数,
但是可以是符号常数或常量表达式。例如:
#define
fd
5
void
main()
{
int
a[3+2],b[7+fd];
……
}
是合法的。但是下述说明方式是错误的。
void
main()
{
int
n=5;
int
a[n];
……
}
明白了吧你所定义的数组的个数n是变量,而规定中必须是常量的,另外这一行少了"*"号
else
y[i]=(b[i]-a[i][j]x[i])/a[i][i];
应该为else
y[i]=(b[i]-a[i][j]*x[i])/a[i][i];

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com