用C++解二元方程组

用的方法多一些,解个二元二次方程组,很简单,但是要方法... 用的方法多一些,解个二元二次方程组,很简单,但是要方法 展开
 我来答
匿名用户
2013-08-30
展开全部
我用C做了一个高斯消去法:你自己去把改为C++吧··#include<stdio.h>
#define MAX 20
float gauss(int n,float x[][MAX],float y[]);
float selectmain(int k,int n,float x[][MAX],float y[]);
float sum(int n,int i,int j,float x[][MAX],float y[]);
void main()
{
int i,j,n,end=1;
float a[MAX][MAX]={};
float b[MAX]={};
while(end==1)
{
printf("input n=");
scanf("%d",&n);
printf("input a[%d][%d]=",n,n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%f",&a[i][j]);
}
}
printf("input b[%d]=",n);
for(i=1;i<=n;i++)
{
scanf("%f",&b[i]);
}
gauss(n,a,b);
printf("输入end的值(1代表继续输入/0代表结束)");
scanf("%d",&end);
}
exit(0);
}
float gauss(int n,float a[][MAX],float b[])
{
int i,j,k;
for(k=1;k<=n;k++)
{
selectmain(k,n,a,b);
for(j=k+1;j<=n;j++)
{
a[k][j]=a[k][j]/a[k][k];
}
b[k]=b[k]/a[k][k];
for(i=k+1;i<=n;i++)
{
for(j=k+1;j<=n;j++)
{
a[i][j]=a[i][j]-a[i][k]*a[k][j];
}
}
for(i=k+1;i<=n;i++)
{
b[i]=b[i]-a[i][k]*b[k];
}
}
for(i=n-1;i>=1;i--)
{
b[i]=b[i]-sum(n,i,j,a,b);
}
for(i=1;i<=n;i++)
{
printf("b[%d]=%f",i,b[i]);
printf("\n");
}
}
float selectmain(int k,int n,float a[][MAX],float b[])
{
int i,j,l;
float d,t;
d=a[k][k];
l=k;
for(i=k+1;i<n;i++)
{
if(fabs(a[i][k]>fabs(d)))
{
d=a[i][k];
l=i;
}
}
if(d==0)
{
printf("error");
exit(0);
}
while(l!=k)
{
for(j=k;j<=n;j++)
{
t=a[l][j];
a[l][j]=a[k][j];
t=a[k][j];
}
t=b[k];
b[k]=b[l];
t=b[l];
}
return a[k][k];
}
float sum(int n,int i,int j,float a[][MAX],float b[])
{
float s=0;
for(j=i+1;j<=n;j++)
{
s=s+a[i][j]*b[j];
}
return s;
}
东莞大凡
2024-11-14 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
奔走的奶牛
推荐于2017-10-12 · 知道合伙人生活技巧行家
奔走的奶牛
知道合伙人生活技巧行家
采纳数:10857 获赞数:54732
成为公司年度最佳培训讲师

向TA提问 私信TA
展开全部
具体代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ double a,b,c,root1,root2;
cout<<"请输入一元二次方程的系数(a,b,c):"<<endl;
cin>>a>>b>>c;
if(a==0) //判断系数a是否为0
{ cout<<"不是一个一元二次方程"<<endl;
return -1;
}
double t =b*b-4*a*c;
if(t<0) //判断议程是否有实根
{ cout<<"方程没有实根"<<endl;
return -1;
}
if(t==0) //判断议程是否有等根
root1=root2=-b/(2*a);
else
{
root1=(-b+sqrt(t))/(2*a);
root2=(-b-sqrt(t))/(2*a);
}
cout<<"方程的根为:"<<root1<<"和"<<root2<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-30
展开全部
include <iostream>
include <cmath>
int main()
{
using namespace std;
float a,b,c,d,e,f;
cout<<"请输入二元一次方程组"<<endl<<"ax+by+c=0"<<endl<<"dx+ey+f=0"<<endl;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
cout<<"d=";
cin>>d;
cout<<"e=";
cin>>e;
cout<<"f=";
cin>>f;
if(a*e==b*d)
{
cout<<"此方程无解"<<endl;
}
else
{
cout<<"x="<<(b*f-e*c)/(a*e-b*d)<<endl;
cout<<"y="<<(a*f-d*c)/(b*d-a*e)<<endl;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bjhfgbv
2015-11-10 · TA获得超过130个赞
知道答主
回答量:186
采纳率:0%
帮助的人:24.5万
展开全部
让他和他分用户
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-30
展开全部
全部用公式。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式