高斯-赛德尔迭代法
创新互联公司是一家专注于做网站、成都网站建设与策划设计,遵化网站建设哪家好?创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:遵化等地区。遵化做网站价格咨询:18982081108
#include stdio.h
#include conio.h
#include alloc.h
#include math.h
#define N 100
float *GauseSeidel(float *a,int n)
{
int i,j,nu=0;
float *x,dx;
x=(float *)malloc(n*sizeof(float));
for(i=0;i =n-1;i++)
x[i]=0.0;
do
{
for(i=0;i =n-1;i++)
{
float d=0.0;
for(j=0;j =n-1;j++)
d+=*(a+i*(n+1)+j)*x[j];
dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));
x[i]+=dx;
}
if(nu =N)
{
printf( "迭代发散\n ");
exit(1);
}
nu++;
}
while(fabs(dx) 1e-6);
return x;
}
main()
{
int i;
float *x;
float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};
float *GauseSeidel(float *,int);
x=GauseSeidel(c,3);
clrscr();
for(i=0;i =2;i++)
printf( "x[%d]=%f\n ",i,x[i]);
getch();
}
#includestdio.h
double
val(double
a00,double
a11,double
a01,double
a10)
{
return
a00*a11-a01*a10;
}
void
main()
{
double
a1,b1,c1,a2,b2,c2;
double
m1,m2,m3;
printf("Please
input
a1,b1,c1\n");
scanf("%lf%lf%lf",a1,b1,c1);
printf("Please
input
a2,b2,c2\n");
scanf("%lf%lf%lf",a2,b2,c2);
m1
=
val(a1,b2,a2,b1);
m2
=
val(c1,b2,c2,b1);
m3
=
val(c1,a2,c2,a1);
if(m1==0){
if(m2==0
m3==0)
printf("无数解\n");
else
printf("无解\n");
}else
printf("x=%lf,y=%lf\n",m2/m1,-m3/m1);
}
这个是先求行列式的值,然后判断其是否为0,讨论解的情况,当有唯一解的时候,输出x和y的值。
val()函数用于计算2x2行列式的值。
有不明白的地方可以追问,望采纳:)
首先要找到二元一次方程组的通解,例如:ax+by=m cx+dy=n不难算出 x=(md-bn)/(ad-bc) y=(mc-an)/(bc-ad) 这相当于知道了算法,接下来就可以编程序了:
int main(){
int a,b,c,d,m,n;
double x=0,y=0;
scanf("%d,%d,%d,%d,%d,%d",a,b,c,d,m,n);
if(a*d==b*c||b*c==a*d)puts("无解");
else{
x=(m*d-b*n)/(a*d-b*c);
y=(m*c-a*n)/(b*c-a*d);
printf("x=%f,y=%f",x,y);
}
return 0;
}
输入系数,就可以计算了
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器以及超级电脑等作业平台。
C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。
/*
1 -2 1 -1 -2 4
交点坐标为(1.22,0.05),(-1.22,4.95)
Press any key to continue
*/
#include stdio.h
#include math.h
double Value(double x,double a,double b,double c) {
return a * x * x + b * x + c;
}
int main() {
double x1,y1,x2,y2;
double a,b,c,d,e,f,delta;
scanf("%lf%lf%lf%lf%lf%lf",a,b,c,d,e,f);
delta = (b - e)*(b - e) - 4 * (a - d) * (c - f);
if(delta 0) {
printf("二抛物线无交点。\n");
return 0;
}
x1 = (-(b - e) + sqrt(delta))/(2.0 * (a - d));
x2 = (-(b - e) - sqrt(delta))/(2.0 * (a - d));
y1 = Value(x1,a,b,c);
y2 = Value(x2,a,b,c);
printf("交点坐标为(%.2lf,%.2lf),(%.2lf,%.2lf)\n",x1,y1,x2,y2);
return 0;
}
当前标题:c语言函数求解方程组 c语言如何求解方程
标题来源:https://www.cdcxhl.com/article24/ddsigce.html
成都网站建设公司_创新互联,为您提供云服务器、App设计、标签优化、网站收录、网站排名、网站导航
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联