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

📄 3matrx.cpp

📁 求解三对角方程组,有详细的注释。 节省存储空间的算法
💻 CPP
字号:
#include "myinclude.h"
#include <math.h>
#define fenmu 0.00001//分母要求
#define JZ 4 //矩阵的维数
typedef float FL; 
int main()

{

	FL a[3]={1, 1, 1};//下对角线a
	FL b[4]={4, 4, 4, 4};//对角线b
	FL c[3]={2, 2, 2};//上对角线c
	FL f[4]={1, 2, 3, 4};//y值


    //b[0]=b[0];              //l1=b1
	if (fabs(b[0])>fenmu)
	{
	f[0]=f[0]/b[0];//y1=f1/l1
    c[0]=c[0]/b[0];//u1=c1/l1	
	cout<<"l"<<"\t\t"<<"y"<<"\t\t"<<"u"<<endl;
	cout<<b[0]<<"\t\t"<<f[0]<<"\t\t"<<c[0]<<endl;
	}
	else
	{
		cout<<"分母不符合要求"<<endl;
		return 0;
	}

	for (int i=1;i<JZ-1;i++)
	{  
		//数组中的a[i] 相当于公式中的 a(i+2),因为a的下标由2开始; 
		b[i]=b[i]-a[i-1]*c[i-1];//li=bi-ai*u(i-1)
		if (fabs(b[i])>fenmu)
		{
		f[i]=(f[i]-a[i-1]*f[i-1])/b[i];//yi=(fi-ai*y(i-1))/li
		c[i]=c[i]/b[i];//ui=ci/li
		cout<<b[i]<<"\t\t"<<f[i]<<"\t\t"<<c[i]<<endl;
		}
		else
	{
		cout<<"分母不符合要求"<<endl;
		return 0;
	}

	}//for结束
///////////////////////////第N次求解///////////////////////
	b[i]=b[i]-a[i-1]*c[i-1];
	if (fabs(b[i])>fenmu)
	{
		f[i]=(f[i]-a[i-1]*f[i-1])/b[i];
	    cout<<b[i]<<"\t\t"<<f[i]<<"\t\t"<<endl<<endl;
	}
	else
	{
		cout<<"分母不符合要求"<<endl;
		return 0;
	}

	//回代过程
	cout<<"x["<<i+1<<"]="<<f[i]<<endl;

	for (int j=JZ-2;j>=0;j--)
	{
		f[j]=f[j]-c[j]*f[j+1];

		cout<<"x["<<(j+1)<<"]="<<f[j]<<endl;
		
	}
	return 1;
}

⌨️ 快捷键说明

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