⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yl.cpp

📁 列主元法求解高次线性方程
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

void answer(int N,float *a,float *b)
{
    float *ats;
	float *x;
	float z[100];
	ats=z;
	x=b;
	float t,s,q;
	int i,j,l,p,k;
	for(j=0;j<N;j++)
		for(i=0;i<N;i++)
		{
			if((*(a+i+j*N))<0)
			    *(ats+i+j*N)=-(*(a+i+j*N));
			else
                *(ats+i+j*N)=(*(a+i+j*N));
		}

	for(l=1;l<N;l++)
	{
		j=l-1;
		t=*(a+l-1+j*N);
		for(k=j;k<N;k++)
		{
			if((*(ats+l-1+k*N))>(*(ats+l-1+j*N)))
			{
				p=k;
				s=*(b+k);
			}
		}
		for(i=0;i<N;i++)
		{
			t=*(a+i+p*N);
			*(a+i+p*N)=*(a+i+j*N);
			*(a+i+j*N)=t;
		}
		*(b+p)=*(b+j);
		*(b+j)=s;
		for(j=l;j<N;j++)
		{
			q=(*(a+l-1+j*N))/(*(a+l-1+(l-1)*N));
			for(i=l-1;i<N;i++)
			{
				*(a+i+j*N)=*(a+i+j*N)-(*(a+i+(l-1)*N))*q;
			}
			*(b+j)=(*(b+j))-(*(b+l-1))*q;
		}
	}
	*(x+N-1)=(*(b+N-1))/(*(a+N-1+(N-1)*N));
	for(l=2;l<=N;l++)
	{
		*(x+N-l)=*(b+N-l);
		for(i=1;i<l;i++)
		    (*(x+N-l))-=((*(a+(N-l)*N+N-i))*(*(x+N-i)));
			*(x+N-l)=(*(x+N-l))/(*(a+(N-l)*N+N-l));
	}
	printf("[");
	for(i=0;i<N;i++)
		printf("%f   ",*(x+i));
	printf("]");
}

void main()
{
	int N;
	int i;
	float x[100],y[100];
	float *a;
	float *at;
	float *b;
    printf("请输入矩阵阶数\n");
	scanf("%d",&N);
	printf("请按行输入系数矩阵\n");
    at=a=x;
	b=y;
	
    for(i=0;i<(N*N);i++)
	{
		scanf("%f",at);
		if(i!=(N*N-1))
	    printf("请按行输入系数矩阵\n");
		at+=1;
	}

	printf("请输入右端矩阵\n");
    for(i=0;i<N;i++)
	{
		scanf("%f",b+i);
	}
	printf("解向量为\n");
    answer(N,a,b);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -