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

📄 sedial.cpp

📁 主要实现了计算方法中的曲线拟合
💻 CPP
字号:
#include <iostream.h>
#include <math.h>
#include <stdio.h>
void xishu(float s[][10],float c[10][10],float d[10],int n)          //迭代系数转换
{int i,j;
  for(i=0;i<n;i++)
		 for(j=0;j<n;j++)
		 { if(i==j) c[i][j]=0;
		   else    c[i][j]=-s[i][j]/s[i][i];
		 }
        for(i=0;i<n;i++)
			d[i]=s[i][n]/s[i][i];
}

void diedai(float c[][10],float d[10],float x[10],int n)               //迭代
{int i,j,N,k=0;
 float p,s;
 double flag1=0,flag2=0,ep;
 
 cout<< "请输入误差:";
     cin>>ep;
	 cout<<endl;

	 cout<<"请输入执行最大次数:";
	 cin>>N;
	 cout<<endl;

 do
 {   k++;
     for(i=0;i<n;i++)
	 { p=x[i];
	   s=d[i];
       for(j=0;j<n;j++)
	       s=s+c[i][j]*x[j];
	       x[i]=s;
	   flag2=fabs(x[i]-p);                
	   if(flag1<flag2)
		  flag1=flag2;
	 }
	 if(flag1<ep)
		 break;
 } while(k<N);
   cout<<k<<endl;
 
   cout<<"此题的结果为:"<<endl;
   for(i=0;i<n;i++)
     cout<<"x"<<i+1<<"="<<x[i]<<endl;

 
 
}

void main()
{float s[10][10],c[10][10],d[10];      //ep为精度
 float x[10]={0};
 int i,j,n;                            // 记录次数
 cout<<"请输入方程个数:";
 cin>>n;
 cout<<endl;
 cout<<"请输入方程组的增广矩阵:"<<endl;
 for(i=0;i<n;i++)                        //输入
	 for(j=0;j<=n;j++)
		 cin>>s[i][j];
	 cout<<endl;
	 
	 xishu(s,c,d,n);         //转换系数
	 diedai(c,d,x,n);        //迭代求值
}

⌨️ 快捷键说明

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