| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 877 人关注过本帖
标题:高斯约当消元法解线性方程组
只看楼主 加入收藏
林暮雪
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
高斯约当消元法解线性方程组
要求用c++编写  要用到类和类的派生

#include<iostream>
#include<cmath>
#include<iomanip>
#define kk 50  //定义最大方程元数
int n;
using namespace std;
void changer(double *p,double *q);            
main()
{
 
 int i,j,k,s;
 double A[kk][kk],r,l[kk][kk],b[kk],u,temp;
aa: cout<<"输入的方程元数"<<endl;
 cin>>n;
 cout<<"请输入方程系数矩阵:"<<"\n";
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   cin>>A[i][j];
 cout<<"请输入右边向量:"<<"\n";
 for(i=0;i<n;i++)
  cin>>b[i];
 for(k=0;k<n-1;k++)
 {
  s=k;
  r=fabs(A[k][k]);
  for(i=k;i<n;i++)     
   if(r<fabs(A[i][k]))
   {
    r=fabs(A[i][k]);
    s=i;
   }//获取主元
   if(s!=k)
   {
    changer(*(A+k),*(A+s));//交换行元素
    temp=b[k];b[k]=b[s];b[s]=temp; //右边向量的交换
   }
   cout<<"第"<<k+1<<"次选取主元并交换行的顺序"<<endl;
   for (i=0;i<n;i++)
   {
    for (j=0;j<n;j++)
     cout<<setw(4)<<setprecision(4)<<A[i][j]<<"   ";
    cout<<b[i]<<endl;
   }//
   cout<<endl;
   for(i=k+1;i<n;i++)
   {
    l[i][k]=A[i][k]/A[k][k];//计算消去系数
    for(j=k;j<n;j++)
     A[i][j]=A[i][j]-l[i][k]*A[k][j];
    b[i]=b[i]-l[i][k]*b[k];
   }//消元过程
   cout<<"第"<<k+1<<"次消元"<<endl;
   for (int e=0;e<n;e++)
   {
    for (j=0;j<n;j++)
     cout<<setw(4)<<setprecision(4)<<A[e][j]<<"   ";
    cout<<b[e]<<endl;
   }
   cout<<endl;
 }
 if(A[k][k]<0.0001)
 {
  cout<<"系数矩阵是非奇异矩阵!"<<"\n";
  cout<<"所以:方程无唯一解!"<<"\n";
  cout<<"请问是否?"<<endl;
     cout<<"退出请输入1"<<endl;
     cout<<"要继续请输入任意非1的整数"<<endl;
     int g;
     cin>>g;
  if(g!=1)goto aa;
    else exit(1);
 }//判断系数矩阵的奇异性
 for(i=n-1;i>=0;i--)
 {
  u=0;
  for(j=i+1;j<n;j++)
   u=u+A[i][j]*b[j];
  b[i]=(b[i]-u)/A[i][i];
 }
 cout<<"最后得方程的根为:"<<"\n";
 for(i=0;i<n;i++)
  cout<<"x"<<i+1<<"="<<b[i]<<"\n";
 
 system("pause");
 return 0;
}
void changer(double *p,double *q)            
{
 int i;
 double temp;
 for(i=0;i<n;i++)
 {
  temp=*(p+i);
  *(p+i)=*(q+i);
  *(q+i)=temp;
 }
}
哪位大大给我改写下子嘛 类的使用我不太熟悉额
搜索更多相关主题的帖子: 方程 高斯 changer include double 
2011-06-03 21:46
林暮雪
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-19
收藏
得分:0 
话说怎么没有人回复呢
2011-06-06 10:57
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:7 
把你main当中空出来  采用函数调用的方式

然后把函数调用封装成类得方法   调用之间要用到的变量就可以封装成类的属性
2011-06-06 12:20
linw1225
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:110
专家分:145
注 册:2011-4-7
收藏
得分:7 
不觉得代码太乱了?

Einmal ist keinmal
2011-06-07 11:31
一切皆安
Rank: 2
等 级:论坛游民
帖 子:70
专家分:46
注 册:2011-4-2
收藏
得分:7 
都忘了这个消元法了
2011-06-07 22:45
林暮雪
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-19
收藏
得分:0 
回复 3楼 寒风中的细雨
给我改下撒   帮帮忙啦
2011-06-09 14:35
快速回复:高斯约当消元法解线性方程组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012441 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved