程序运行过了,没有问题,记得给分
#include<iostreamh>
#include<mathh>
class Equation{
float a,b,c;
public:
float x[2];
Equation(float a1=00,float b1=00,float c1=00)
{
a=a1;
b=b1;
c=c1;
}
~Equation(){}
long CalResult();
};
long Equation::CalResult()
{
long temp;
if ((bb-4ac)==0)
{
temp=1;
x[0]=(float)(-(b/2a));
return temp;
}
if ((bb-4ac)>0)
{
temp=2;
x[0]=(-b+sqrt(bb-4ac))/(2a);
x[1]=(-b-sqrt(bb-4ac))/(2a);
return temp;
}
else
{
temp=0;
}
return temp;
}
int main()
{
float a,b,c;
char ch;
do{
cout<<"请输入一元二次方程系数"<<endl;
cin>>a>>b>>c;
Equation obj=new Equation(a,b,c);
cout<<"方程有"<<obj->CalResult()<<"个根"<<endl;
if (obj->CalResult()==1)
{
cout<<"X="<<obj->x[0]<<endl;
}
if (obj->CalResult()==2)
{
cout<<"X1="<<obj->x[0]<<endl;
cout<<"X2="<<obj->x[1]<<endl;
}
delete obj;
cout<<"是否继续计算?(1)"<<endl;
cin>>ch;
}while(ch=='1');
return 0;
}
以下是一个求解一元二次方程的示例程序,可以手动输入方程的系数a、b、c,然后计算判别式d并判断方程有几个根:
#include <stdioh>
#include <mathh>
int main() {
double a, b, c, d, x1, x2; printf("请输入一元二次方程的系数a、b、c:
"); scanf("%lf %lf %lf", &a, &b, &c);
d = b b - 4 a c; if (d > 0) {
x1 = (-b + sqrt(d)) / (2 a);
x2 = (-b - sqrt(d)) / (2 a); printf("方程有两个不相等的实根:x1=%2f,x2=%2f
", x1, x2);
} else if (d == 0) {
x1 = -b / (2 a); printf("方程有一个重根:x=%2f
", x1);
} else { printf("方程没有实根!
");
} return 0;
}
在程序中,首先使用scanf函数从标准输入中读取系数a、b、c的值,然后计算判别式d的值,根据d的值判断方程有几个根,最后使用printf函数输出结果。
如果要手动输入d等于三角形的面积,可以稍微修改一下程序,如下所示:
#include <stdioh>
#include <mathh>
int main() {
double a, b, c, d, x1, x2, p, s; printf("请输入三角形的三条边长a、b、c:
"); scanf("%lf %lf %lf", &a, &b, &c);
p = (a + b + c) / 2; // 计算半周长
s = sqrt(p (p - a) (p - b) (p - c)); // 计算面积
d = b b - 4 a c - 4 s s; // 计算判别式
if (d > 0) {
x1 = (-b + sqrt(d)) / (2 a);
x2 = (-b - sqrt(d)) / (2 a); printf("方程有两个不相等的实根:x1=%2f,x2=%2f
", x1, x2);
} else if (d == 0) {
x1 = -b / (2 a); printf("方程有一个重根:x=%2f
", x1);
} else { printf("方程没有实根!
");
} return 0;
}
在程序中,除了输入三角形的三条边长a、b、c外,还需要计算三角形的面积s和判别式d。根据一元二次方程的求解公式,判别式d的值应该是b^2 - 4ac - 4s^2,其中s是三角形的面积。如果d大于0,则方程有两个不相等的实根;如果d等于0,则方程有一个重根;如果d小于0,则方程没有实根。
一、工具:Matlab2012b
二、 *** 作步骤:
A解一元方程
1先举一例,解方程"x^2+100x+99=0"在matlab ”Command Window"中输入如下命令:x=solve('x^2+100x+99=0','x')见下图
2回车后,matlab就求出了这个一元二次方程的解。见下图
3再举一例,解一元三次方程"x^3+1=0"在matlab ”Command Window"中输入如下命令:x=solve('x^3+1=0','x')见下图
4 回车后,matlab就求出了这个一元三次方程"x^3+1=0"的解。见下图matlab解出来的解有三个,其中有一个实数解,两个虚数解。都知道一元三次方程在复数范围内的解有3个,matlab的解是对的。其实只要"x^3+1=0”的实数解,只要取下面图中的第一个解“-1”。
B解二元方程:
1 首先来求一个二元一次方程组
9x+8y=10 式1
13x+14y=12 式2
一般的解法是代入法,或者加减消去法。比较繁琐。这里只需输入如下命令即可求出解:[x,y]=solve('9x+8y=10','13x+14y=12','x','y')
2回车后,matlab就求出了这个二元一次方程组的解。见下图
3再来求一个二元非线性方程组
x^2+y^2=10 式1
2x+3y=0 式2
这里只需输入如下命令即可求出解:[x,y]=solve('x^2+y^2=10','2x+3y=0','x','y')
4x^2+y^2=10 式1
2x+3y=0 式2
其实不少人能看出来,上面的二元非线性方程组的解是一个圆与一条直线的交点坐标,一般解法是先消去y,整理成关于x的一元二次方程,然后求出x值,再求出对应y值。但这里,只用到了上面里的的一句命令,就求了这两个交点坐标。见下图。
注意事项:Matlab可以进行复数运算,所以不需要计算方程的判别式,直接根据公式可求根。和c语言相比,简化了编程工作量。
一元二次方程四中解法。
一、公式法。
二、配方法。
三、直接开平方法。
四、因式分解法。
公式法1先判断△=b_-4ac,若△<0原方程无实根;
2若△=0,原方程有两个相同的解为:X=-b/(2a);
3若△>0,原方程的解为:X=((-b)±√(△))/(2a)。
配方法。先把常数c移到方程右边得:aX_+bX=-c。将二次项系数化为1得:X_+(b/a)X=-c/a,方程两边分别加上(b/a)的一半的平方得X_+(b/a)X+(b/(2a))_=-c/a+(b/(2a))_方程化为:(b+(2a))_=-c/a+(b/(2a))_。
5①、若-c/a+(b/(2a))_<0,原方程无实根;
②、若-c/a+(b/(2a))_=0,原方程有两个相同的解为X=-b/(2a);
③、若-c/a+(b/(2a))_>0,原方程的解为X=(-b)±√((b_-4ac))/(2a)。
以上就是关于C++程序设计:求解一元二次方程全部的内容,包括:C++程序设计:求解一元二次方程、c语言求一元二次方程有几个根手动输入d等于三角形大于等于0、怎么用matlab解一元二次方程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)