求解二次函数
Posted bboykaku
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解二次函数相关的知识,希望对你有一定的参考价值。
代码如下:
1 //二次函数求解 2 # include<stdio.h> 3 # include<math.h> 4 float a,b,c; 5 struct d{ 6 double x1; 7 double x2; 8 }; 9 d R; 10 d func1(float,float,float); 11 double func2(float,float); 12 d func3(float,float,float); 13 int main() 14 { 15 scanf("%f%f%f",&a,&b,&c); 16 if(fabs(a)<1e-6) 17 { 18 printf("非二次函数 "); 19 return 0; 20 } 21 if(pow(b,2)-4*a*c>0) 22 { 23 printf("x1=%7.2f x2=%7.2f ",func1(a,b,c).x1,func1(a,b,c).x2); 24 } 25 else if(fabs(pow(b,2)-4*a*c)<1e-6) 26 { 27 printf("x1=x2=%7.2f ",func2(a,b)); 28 } 29 else 30 { 31 printf("x1=%7.2f+%7.2fi x2=%7.2f-%7.2fi ",func3(a,b,c).x1,func3(a,b,c).x2,func3(a,b,c).x1,func3(a,b,c).x2); 32 } 33 34 return 0; 35 } 36 37 d func1(float a,float b,float c) 38 { 39 d r; 40 double p1=-b/(2.0*a); 41 double p2=sqrt(pow(b,2)-4*a*c)/(2.0*a); 42 r.x1=p1+p2; 43 r.x2=p1-p2; 44 return r; 45 } 46 47 double func2(float a,float b) 48 { 49 return -b/(2.0*a); 50 } 51 52 d func3(float a,float b,float c) 53 { 54 d r; 55 double p1=-b/(2.0*a); 56 double p2=sqrt(-(pow(b,2)-4*a*c))/(2.0*a); 57 r.x1=p1; 58 r.x2=p2; 59 return r; 60 }
运行结果:
以上是关于求解二次函数的主要内容,如果未能解决你的问题,请参考以下文章
线性共轭梯度法求解正定二次函数极小点以及线性方程组的解--MATLAB源程序