一元高次方程C语言实现(最高五次)

合集下载

用C语言解决一元多项式运算问题

用C语言解决一元多项式运算问题

用C语言解决一元多项式运算问题摘要本数据结构课程设计运用一元多项式运算的基本法则,对一元多项式的加法、减法运算进行设计,并有人机交换界面。

本课程设计中,系统开发平台为Windows XP;程序设计语言主要采用C语言,其中也掺入了C++部分语句,兼而两者的优势并存;开发环境为Microsoft Visual C++ 6.0,友好的界面、功能更加强大,相比较于C语言的专用开发环境Turbo C,其操作简单却已能完全在其环境中借用C语言开发设计出源程序;程序运行平台为Windows 98/2000/XP,程序兼容特性比较强,具有很好的移植特性。

在程序设计中,整个程序层次结构突出,直观性与易理解性优势明显。

程序通过调试运行后,完成了一元多项式运算的各种操作的设想,符合题目要求,初步实现了设计目标,达到了预期的效果。

关键词:数据结构课程设计; C程序语言;多项式1 引言计算机的快速发展,特别是计算机网络的发展,越来越深刻地改变了人们生活的方方面面。

但同时,也要求人们能高效、有效地完成某些运算任务。

而“数据结构”是计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其他理工专业的热门选修课。

本课程设计主要是对所学的数据结构知识进行整合和运用,解决在一元多项式的运算,包括加法、减法及乘法运算,通过该程序,将大大减少运算时间,提高工作效率。

2 课程设计目的在我们对一个具体的问题进行分析时,往往要抽象出一个模型,设计一个算法来实现所需要达到的功能。

在此程序中,我们主要是综合运用所学过的知识,回顾VC++编程的同时,熟悉并掌握数据结构中的算法分析与设计。

同时,要掌握类C语言的算法转换成C程序并上机调试的基础;这次课程设计,要求设计一个C语言程序,该程序能够按照指数的降幂排列,并完成多个一元多项式的相加、相减、相乘,并将结果输出。

通过这次课程设计,进一步巩固《数据结构》等课程所学的知识,特别加强指针、结构体、文件数据类型的应用,熟悉面向过程的结构化、了解面向对象设计方法,通过本次课程设计的实践,加强动手能力的操作,掌握程序设计的流程,以及用C程序语言编写程序,从而解决实际问题的能力,了解掌握Visual C++开发环境,在老师的指导下,独立完成课程设计的全部内容,培养严谨的科学态度和认真学习的工作作风,培养创造性思维方式。

c语言一元多项式的加法,减法,乘法的实现

c语言一元多项式的加法,减法,乘法的实现

c语言一元多项式的加法,减法,乘法的实现一元多项式是代数学中的重要概念,它由各项式的系数和幂次构成。

在C语言中,我们可以通过定义结构体来表示一元多项式,并实现加法、减法和乘法运算。

我们定义一个结构体来表示一元多项式。

结构体中包含两个成员变量,一个是整数类型的系数coeff,另一个是整数类型的幂次exp。

```ctypedef struct{int coeff; // 系数int exp; // 幂次} Polynomial;```接下来,我们可以实现一元多项式的加法运算。

加法运算的规则是将两个多项式中幂次相同的项的系数相加,若幂次不同的项,则直接将其添加到结果多项式中。

具体实现如下:```cPolynomial addPolynomial(Polynomial poly1, Polynomial poly2){Polynomial result;result.coeff = poly1.coeff + poly2.coeff;result.exp = poly1.exp;return result;}```然后,我们可以实现一元多项式的减法运算。

减法运算的规则是将被减多项式的各项的系数取相反数,然后再与减数多项式相加。

具体实现如下:```cPolynomial subtractPolynomial(Polynomial poly1, Polynomial poly2){Polynomial result;result.coeff = poly1.coeff - poly2.coeff;result.exp = poly1.exp;return result;}```我们可以实现一元多项式的乘法运算。

乘法运算的规则是将两个多项式的每一项相乘,然后将结果相加。

具体实现如下:```cPolynomial multiplyPolynomial(Polynomial poly1, Polynomialpoly2){Polynomial result;result.coeff = poly1.coeff * poly2.coeff;result.exp = poly1.exp + poly2.exp;return result;}```通过上述的实现,我们可以对一元多项式进行加法、减法和乘法运算。

c语言数据结构实现——一元多项式的基本运算

c语言数据结构实现——一元多项式的基本运算

文章标题:深入理解C语言中的数据结构实现——一元多项式的基本运算在C语言中,数据结构是非常重要的一个概念,它为我们处理各种复杂的数据提供了便利。

其中,一元多项式的基本运算是数据结构中的一个重要内容,它涉及到多种数据结构的操作和算法,是我们学习C 语言中数据结构的一个重要入口。

在本文中,我们将深入探讨C语言中一元多项式的基本运算,帮助读者更深入地理解这一重要的概念。

一、一元多项式的表示方式在C语言中,一元多项式可以使用数组来表示。

每个数组元素对应一个项,数组的下标对应每一项的次数,数组的值对应该项的系数。

一个一元多项式可以表示为:```cfloat polynomial[10] = {0, 1, 2, 0, 4}; // 表示多项式 1 + 2x + 4x^4 ```二、一元多项式的基本运算1. 一元多项式的加法有两个多项式 A 和 B,它们分别表示为 `float polynomialA[10]` 和`float polynomialB[10]`,那么它们的加法运算可以表示为:```cfor (int i = 0; i < 10; i++) {polynomialC[i] = polynomialA[i] + polynomialB[i];}```2. 一元多项式的减法一元多项式的减法是指将两个多项式相减得到一个新的多项式。

与加法类似,多项式 A 和 B 的减法运算可以表示为:```cfor (int i = 0; i < 10; i++) {polynomialC[i] = polynomialA[i] - polynomialB[i];}```3. 一元多项式的乘法式 A 和 B 的乘法运算可以表示为:```cfor (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {polynomialC[i+j] += polynomialA[i] * polynomialB[j];}}```4. 一元多项式的除法一元多项式的除法涉及到较为复杂的算法,需要考虑余数和商的处理。

一元多项式运算c语言版

一元多项式运算c语言版

#include <stdio.h>#include <stdlib.h>#include <math.h>#define OK 1;#define ERROR 0;#define TURE 1;#define FALSE 0;#define MAXSIZE 100;typedef struct{float coef;int expn;}term,elemtype;typedef struct LNode{elemtype data;struct LNode *next;}List,*LinkList;typedef LinkList polynomail;int Initlist(LinkList *p){*p=(LinkList)malloc(sizeof(List));(*p)->next=NULL;return OK;}int cmp(term a,term b){if(a.expn<b.expn) return -1;else if(a.expn==b.expn) return 0;else return 1;}int LocateElem(LinkList *p,elemtype e,LinkList *q){ if(*p==NULL) return OVERFLOW;*q=(*p)->next;if((*q)==NULL){*q=*p;return ERROR;}while((*q)!=NULL){if(cmp(e,(*q)->data)==0) break;else *q=(*q)->next;}if((*q)!=NULL) return TURE;if((*q)==NULL) {return FALSE;}}int MakeNode(LinkList *s,elemtype e){if(!(*s)) return OVERFLOW;(*s)->data=e;(*s)->next=NULL;return OK;}void InsFirst(LinkList *q,LinkList *s){ (*s)->next=(*q)->next;(*q)->next=*s;}int DelFirst(LinkList *q,LinkList *s){LinkList p;p=*s;(*q)->next=p->next;return OK;}void FreeNode(LinkList *p){LinkList q;q=*p;free(q);}LinkList NextPos(LinkList *p,LinkList *q){ return (*q)->next;}void SetCurElem(polynomail *p,float m){ ((*p)->data).coef=m;}int ListEmpty(LinkList p){if(p->next==NULL) return TURE;if(p->next!=NULL) return FALSE;}void Append(LinkList *p,LinkList *s){ LinkList q;q=*p;while(q->next!=NULL) q=q->next;q->next=*s;}void SortPolyn(polynomail *p){polynomail q,s,t,m,n,x,y,x1,x2;q=*p;Initlist(&m);m->data.coef=0.0;m->data.expn=-1;n=m;s=q;y=s->next;t=y->next;x=q->next;x1=s;x2=t;while(x2!=NULL){while(t!=NULL){if(cmp(x->data,y->data)<=0){s=s->next;y=y->next;t=t->next;}else {x=y;x1=s;x2=t;}}if(cmp(x->data,y->data)>0){x=y;x1=s;x2=t;}x1->next=x2;n->next=x;x->next=NULL;n=n->next;x1=q;x=q->next;x2=x->next;s=x1;y=x;t=x2;}n->next=x;x->next=NULL;q->next=NULL;free(q);*p=m;}void CreatePolyn(polynomail *p,int m){ polynomail h,q[100],s[100],x;int i;elemtype e;elemtype t[100];h=*p;e.coef=0.0;e.expn=-1;h->data=e;h->next=NULL;q[0]=h;Initlist(&x);for(i=0;i<m;i++){Initlist(&s[i]);printf("please input the coef: the expn:\n");scanf("%f%d",&t[i].coef,&t[i].expn);if(!LocateElem(p,t[i],&x)){if(MakeNode(&s[i],t[i])) InsFirst(&q[i],&s[i]);q[i+1]=s[i];}else q[i+1]=q[i];}SortPolyn(p);}void PrintPolyn(polynomail q){q=q->next;if((q->data).coef>0.0&&(q->data).expn!=0)printf("%.4f*x^(%d)",(q->data).coef,(q->data).expn);else if((q->data).expn==0) printf("%.4f",(q->data).coef);else printf("%.4f*x^(%d)",(q->data).coef,(q->data).expn);q=q->next;while(q!=NULL){if((q->data).coef>0.0&&(q->data).expn!=0)printf("+%.4f*x^(%d)",(q->data).coef,(q->data).expn);else if((q->data).expn==0&&(q->data).coef>0.0) printf("+%.4f",(q->data).coef);else if((q->data).expn==0&&(q->data).coef<0.0) printf("%.4f",(q->data).coef);else printf("%.4f*x^(%d)",(q->data).coef,(q->data).expn);q=q->next;}printf("\n");}void AddPolyn(polynomail *pa,polynomail *pb){polynomail ha,hb,qa,qb;ha=*pa;hb=*pb;qa=NextPos(pa,&ha);qb=NextPos(pb,&hb);elemtype a,b;float sum;while(qa&&qb){a=qa->data;b=qb->data;switch(cmp(a,b)){case -1:ha=qa;qa=NextPos(pa,&qa);break;case 0:sum=a.coef+b.coef;if(sum!=0.0){SetCurElem(&qa,sum);ha=qa;}else {DelFirst(&ha,&qa);FreeNode(&qa);}DelFirst(&hb,&qb);FreeNode(&qb);qb=NextPos(pb,&hb);qa=NextPos(pa,&ha);break;case 1:DelFirst(&hb,&qb);InsFirst(&ha,&qb);qb=NextPos(pb,&hb);ha=NextPos(pa,&ha);break;}}if(!ListEmpty(*pb)) Append(pa,&qb);FreeNode(&hb);}void SubStractPolyn(polynomail *pa,polynomail *pb){ polynomail ha,hb,qa,qb;ha=*pa;hb=*pb;qa=NextPos(pa,&ha);qb=NextPos(pb,&hb);elemtype a,b;float sum;while(qb!=NULL){qb->data.coef=-qb->data.coef;qb=qb->next;}qb=NextPos(pb,&hb);while(qa&&qb){a=qa->data;b=qb->data;switch(cmp(a,b)){case -1:ha=qa;qa=NextPos(pa,&qa);break;case 0:sum=a.coef+b.coef;if(sum!=0.0){SetCurElem(&qa,sum);ha=qa;}else {DelFirst(&ha,&qa);FreeNode(&qa);}DelFirst(&hb,&qb);FreeNode(&qb);qb=NextPos(pb,&hb);qa=NextPos(pa,&ha);break;case 1:DelFirst(&hb,&qb);InsFirst(&ha,&qb);qb=NextPos(pb,&hb);ha=NextPos(pa,&ha);break;}}if(!ListEmpty(*pb)) Append(pa,&qb);FreeNode(&hb);}double EvaluatePolyn(polynomail p,float x){ polynomail q;double y=0.0;q=p->next;while(q!=NULL){y+=(q->data.coef)*pow(x,q->data.expn);q=q->next;}return y;}void DestroyPolyn(polynomail *p){free(*p);}void ClearPolyn(polynomail *p){polynomail q;q=*p;while(*p!=NULL){*p=(*p)->next;free(q);q=*p;}}int InsertPolyn(polynomail *q,polynomail *s){while((*q)->next!=NULL){switch(cmp((*q)->next->data,(*s)->data)){case -1:*q=(*q)->next;break;case 0:(*q)->data.coef+=(*s)->data.coef;return OK;case 1:(*s)->next=(*q)->next;(*q)->next=*s;return OK;}(*q)->next=*s;return OK;}}int DeletePolyn(polynomail *q,elemtype x){polynomail t;while((*q)->next!=NULL){if(((*q)->next->data.coef==x.coef)&&((*q)->next->data.expn==x.expn)){ t=(*q)->next;(*q)->next=t->next;free(t);return OK;}else *q=(*q)->next;}if((*q)->next==NULL) return FALSE;}int ChangePolyn(polynomail *p,elemtype x,elemtype y){ polynomail s;MakeNode(&s,y);DeletePolyn(p,x);InsertPolyn(p,&s);return OK;}void DifferentialPolyn(polynomail *p,int n){polynomail q,s;int i;q=*p;s=q->next;for(i=0;i<n;i++){while(s!=NULL){if(s->data.expn!=0){s->data.coef*=s->data.expn;s->data.expn--;q=q->next;s=q->next;}else {q->next=s->next;s=q->next;}}q=*p;s=q->next;}}void MultiplyPolyn(polynomail *pa,polynomail *pb){ int n=0,i;polynomail s,t,q[100];s=*pb;while(s->next!=NULL){n++;s=s->next;}s=(*pb)->next;for(i=0;i<n;i++){q[i]=*pa;t=q[i]->next;while(t!=NULL){t->data.coef*=s->data.coef;t->data.expn+=s->data.expn;t=t->next;}s=s->next;}for(i=1;i<n;i++){AddPolyn(&q[0],&q[i]);}*pa=q[0];}void IntegratePolyn(polynomail *p){polynomail q,s;q=*p;s=q->next;while(s!=NULL){s->data.coef/=s->data.expn+1;s->data.expn++;q=q->next;s=q->next;}}double DefiniteIntegralPolyn(polynomail *p,float x,float y){ IntegratePolyn(p);double f;f=EvaluatePolyn(*p,y)-EvaluatePolyn(*p,x);return f;}void InvolutionPolyn(polynomail *p,int n){polynomail q[100];int i;for(i=0;i<n;i++) q[i]=*p;for(i=1;i<n;i++) MultiplyPolyn(&q[0],&q[i]);*p=q[0];}void DivisionPolyn(polynomail *p,polynomail *q){ polynomail s,t,x,q1,q2,rest;int n,m;s=*p;t=*q;while(s->next!=NULL) s=s->next;while(t->next!=NULL) t=t->next;m=s->data.expn;n=t->data.expn;Initlist(&x);x->data.coef=0.0;x->data.expn=-1;Initlist(&rest);rest->data.coef=0.0;rest->data.expn=-1;while(m!=0&&m>=n){Initlist(&q1);q1->data.coef=0.0;q1->data.expn=-1;AddPolyn(&q1,q);x->data.coef=s->data.coef/(t->data.coef);x->data.expn=s->data.expn-t->data.expn;InsFirst(&rest,&x);q2=(*q)->next;while(q2!=NULL){q2->data.coef*=x->data.coef;q2->data.expn+=x->data.expn;q2=q2->next;}SubStractPolyn(p,&q1);DestroyPolyn(&q1);s=*p;t=*q;while(s->next!=NULL) s=s->next;while(t->next!=NULL) t=t->next;m=s->data.expn;n=t->data.expn;}q1=*p;q2=*q;*p=rest;*q=q1;DestroyPolyn(&q2);}void main(){polynomail p,q,p1,q1;int m,n,t;Initlist(&p);Initlist(&q);Initlist(&p1);Initlist(&q1);printf("please input the length of polynomail:\n");scanf("%d",&m);CreatePolyn(&p,m);CreatePolyn(&q,m);PrintPolyn(p);PrintPolyn(q);AddPolyn(&p,&q);PrintPolyn(p);printf("please input n= \n");scanf("%d",&n);DifferentialPolyn(&p,n);PrintPolyn(p);IntegratePolyn(&p);PrintPolyn(p);printf("please input the length of polynomail:\n");scanf("%d",&t);CreatePolyn(&p1,t);CreatePolyn(&q1,t);PrintPolyn(p1);PrintPolyn(q1);DivisionPolyn(&p1,&q1);PrintPolyn(p1);PrintPolyn(q1);printf("%lf\n",EvaluatePolyn(p,3.0));}。

C语言在线实验第5次(第七章函数)-题目与答案

C语言在线实验第5次(第七章函数)-题目与答案

第五次实验题目-第七章函数教学目标31.一元二次方程的系数:a、b、c由主函数输入,编写函数求方程的根。

#include <stdio.h>#include <math.h>void root(double a, double b, double c){ double delta,x1,x2,m,n;if (fabs(a) <= 1e-6){if (fabs(b) <= 1e-6)puts("Not an equation");elseprintf("x=%.2lf",-c/b);return;}else{delta=b*b - 4*a*c;m = -b / (2*a);n = sqrt(fabs(delta)) / (2*a);x1 = m + n;x2 = m - n;if (fabs(delta) <= 1e-6)printf("x1=%.2lf, x2=%.2lf", x1, x1);else if (delta < 0)printf("x1=%.2lf+%.2lfi, x2=%.2lf-%.2lfi",m,n,m,n);elseprintf("x1=%.2lf, x2=%.2lf", x1, x2);}}int main( ){ double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);root(a,b,c);return 0;}教学目标32.输入一串字符,统计其中英文字母的个数,编写统计英文字母个数的函数。

#include<stdio.h>int numberOfLetter(char str[]) {int i=0;int num = 0;//统计字母个数while (str[i]!=’\0’) {if ((str[i]>='A'&& str[i]<='Z')||( str[i]>='a'&& str[i]<='z')) num++;i++;}return num;}int main( ) {char str[100];int letterNum;printf("Enter a string: ");gets(str);letterNum = numberOfLetter(str);printf("Number of letters is %d.\n", letterNum);return 0;}教学目标33. 求100以内所有素数的和。

用C语言解决一元多项式运算问题

用C语言解决一元多项式运算问题

用C语言解决一元多项式运算问题摘要本数据结构课程设计运用一元多项式运算的基本法则,对一元多项式的加法、减法运算进行设计,并有人机交换界面。

本课程设计中,系统开发平台为Windows XP;程序设计语言主要采用C语言,其中也掺入了C++部分语句,兼而两者的优势并存;开发环境为Microsoft Visual C++ 6.0,友好的界面、功能更加强大,相比较于C语言的专用开发环境Turbo C,其操作简单却已能完全在其环境中借用C语言开发设计出源程序;程序运行平台为Windows 98/2000/XP,程序兼容特性比较强,具有很好的移植特性。

在程序设计中,整个程序层次结构突出,直观性与易理解性优势明显。

程序通过调试运行后,完成了一元多项式运算的各种操作的设想,符合题目要求,初步实现了设计目标,达到了预期的效果。

关键词:数据结构课程设计; C程序语言;多项式1 引言计算机的快速发展,特别是计算机网络的发展,越来越深刻地改变了人们生活的方方面面。

但同时,也要求人们能高效、有效地完成某些运算任务。

而“数据结构”是计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其他理工专业的热门选修课。

本课程设计主要是对所学的数据结构知识进行整合和运用,解决在一元多项式的运算,包括加法、减法及乘法运算,通过该程序,将大大减少运算时间,提高工作效率。

2 课程设计目的在我们对一个具体的问题进行分析时,往往要抽象出一个模型,设计一个算法来实现所需要达到的功能。

在此程序中,我们主要是综合运用所学过的知识,回顾VC++编程的同时,熟悉并掌握数据结构中的算法分析与设计。

同时,要掌握类C语言的算法转换成C程序并上机调试的基础;这次课程设计,要求设计一个C语言程序,该程序能够按照指数的降幂排列,并完成多个一元多项式的相加、相减、相乘,并将结果输出。

通过这次课程设计,进一步巩固《数据结构》等课程所学的知识,特别加强指针、结构体、文件数据类型的应用,熟悉面向过程的结构化、了解面向对象设计方法,通过本次课程设计的实践,加强动手能力的操作,掌握程序设计的流程,以及用C程序语言编写程序,从而解决实际问题的能力,了解掌握Visual C++开发环境,在老师的指导下,独立完成课程设计的全部内容,培养严谨的科学态度和认真学习的工作作风,培养创造性思维方式。

用c语言,计算高次方程的根的方法

用c语言,计算高次方程的根的方法

用c语言,计算高次方程的根的方法
解高次方程根是许多程序员在学习C语言时学习的基本算法之一。

高次方程的一般形式为带有未知数x的多项式,求解其根是很重要的。

以下是如何用C语言计算高次方程根的方法:
1.先将高次方程化为标准形式
将高次方程表达式化为标准的形式,如ax³+bx²+cx+d=0,然后按照标准方程公式求解即可。

2.使用高斯消元算法解代数方程组
使用高斯消元算法解非线性的方程组是一种有效的方法。

从x的最高幂级数开始,将其最高项系数除以方程的总系数得到一个初步的x的根,然后使用这个根进行因式分解。

重复这个过程,就可以得到方程的所有x的根。

3.使用牛顿迭代法
牛顿迭代法是一种二次收敛的迭代计算方法,它可以得到高次方程的根。

其中,沉下的x轴是方程y=f(x)的连续根。

具体步骤:
(1)首先在高次多项式方程中选择一个初始根(近似值)x0。

(2)计算根x0的切线并求出切线方程。

(3)求出切线方程与x轴的交点,这个交点就是x的下一个近似根。


不同,继续重复(2)和(3)步,直到x的近似根精度达到要求。

总结
以上是用C语言解高次方程根的三种方法,每种方法都有其适用范围
和条件。

在实际使用中,可以根据具体问题和数据选择最适合的方法。

希望这篇文章能够帮助那些在学习C语言时遇到高次方程解题问题的人,提高他们的编程技能和理解。

计算机辅助求解一元高次方程

计算机辅助求解一元高次方程

计算机辅助求解一元高次方程计算机辅助求解一元高次方程高次方程是代数学中的一种常见类型,如二次方程、三次方程、四次方程等,其中最高次数通常不超过四次。

一元高次方程是指只包含一个未知数,并且最高次数为n的代数方程式。

由于高次方程的求解过程比较繁琐,直接使用手算难以完成,因此需要计算机辅助来进行求解,大大提高了求解效率。

本文将介绍一元高次方程的求解过程,以及计算机辅助求解高次方程的方法。

一、一元高次方程的求解过程一元高次方程一般写为:$a_nx^n+a_{n-1}x^{n-1}+…+a_1x+a_0=0$,其中$a_n,a_{n-1},…,a_1,a_0,n$均为已知常数,$n\geqslant 2$。

求解一元高次方程的基本思路是:先通过代数变形将高次项的系数化为1,然后使用某些特定的求根方法求解方程。

1. 代数变形(1) 高次项系数化为1有时为求解方便,可以通过约定高次项系数为1来化简原方程,即:$x^n+a_{n-1}x^{n-1}+…+a_1x+a_0=0$。

这时我们把此方程称为首项系数为1的一元高次方程。

(2) 特殊公式变形对于特殊的一元高次方程,可以通过特殊公式的变形来简化求解过程。

例如:$x^2-2x+1=0$,可以变形为$(x-1)^2=0$,从而得到$x=1$。

$x^2+2x+1=0$,可以变形为$(x+1)^2=0$,从而得到$x=-1$。

(x+1)(x+2)=0,可以得到$x=-1~或~x=-2$。

(3) 用辅助方程消去高次项一元高次方程的求解还可以通过使用辅助方程进行变形求解。

例如对于二次方程:$ax^2+bx+c=0$,可以通过配方法将其变形为:$(x+\frac{b}{2a})^2-\frac{\Delta}{4a^2}=0$,其中$\Delta=b^2-4ac$。

同样的方法,对于三次方程、四次方程等,也可以通过辅助方程简化求解。

2. 求根方法(1) 利用求根公式进行求解对于二次方程,可以通过求根公式:$x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$进行求解。

C语言课程设计一元多项式(word文档良心出品)

C语言课程设计一元多项式(word文档良心出品)

2、课程设计方案论证
2.1 设计思路
2.1.1 问题描述: 设计一个稀疏多项式简单计算器。用户输入两个多项式的项数、系数与指数,计 算加减等的结果。
2..1.2 功能设计: 提示用户输入两个多项式 A 和 B,输入形式为: 1) 先输入多项式 A 的项数, 2) 回车, 3) 输入多项式 A 第一项的系数,每一项按照先输入系数, 4) 空格或回车; 5) 输入多项式 A 第一项的指数, 6) 继续输入多项式 A 的其他项,输入方式与上同; 7) 再建立多项式 B,数据输入方式与建立多项式 A 相同。
case 5: { printf("欢迎再次使用!\n"); system("pause"); break; }
default: { printf("\t 输入错误!!!\n"); break; }
} }while(i!=5); DestroyLINE(s); DestroyLINE(g); return 0; }
putchar('X'); else if(q->exp)
printf("X^%d",q->exp); } else {
if(q->coef==1) {
if(!q->exp) putchar('1');
else if(q->exp==1) putchar('X');
else printf("X^%d",q->exp);
renturn
NO.3
图 2:多项式差流程图
沈阳大学
课程设计说明书
void DestroyLINE(LINE p) /*销毁多项式*/

一元高次方程C语言实现(最高五次)

一元高次方程C语言实现(最高五次)

一元高次方程C语言实现(最高五次)一元高次方程c语言实现(windows VC6.0版本)注意:如果在linux vine或者UNIX以及非windows的系统下运行的话将代码pow以及sqrt全部替换为powf和sqrtf以下为代码#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#define MAX 1000/*最大递归次数为1000次*/#define ERROR "math error\n"/*显示错误信息*/char Fun3[10],fx5[10]="";/*美化输出结果*/float a1,b1,c1,d1,e1,f1;/*宏定义高次方程各项系数最大五次*/int NUMjdg;/*判断函数最高次数*/float FC(float a,float b);/*解一元一次方程*/float FC3(float a,float b,float c,float d);/*解一元三次方程*/float FC2(float a,float b,float c,int num);/*解一元二次方程*/float FC4(float a,float b,float c,float d,float e);/*解一元四次方程*/ float FC5();/*解一元五次方程*/float fun(float x);/*五次函数代值求解*/float dfun(float x);/*五次导函数代值求解*/float iterate(float x);/*牛顿迭代法猜值求解*/int main(){float x5;/*五次方程最后一个解*/FILE *fp;/*解的内容以文件的形式保存*/char save;char buf[256];/*从文件内读取内容保存至buf*/buf[0]='\0';/*防止乱码,开头定义为NULL*/fp=fopen("fun.dat","w");strcpy(Fun3,"");fclose(fp);printf("Do you want to save the result? 'y' or 'n'");/*是否想保存结果数据?*/printf("\n--->");scanf("%c",&save);redo:printf("please input degree number\n--->");/*请输入最高次数*/scanf("%d",&NUMjdg);if(NUMjdg<1||NUMjdg>5) goto redo;printf("the number of a?--->");/*输入最高次项系数*/scanf("%f",&a1);if(a1==0){printf(ERROR);return 1;}printf("the number of b?--->");/*输入第二高次项系数*/scanf("%f",&b1);if(NUMjdg==1){printf("the result is %g\n",FC(a1,b1)); goto end1;}printf("the number of c?--->");/*输入第三高次项系数*/scanf("%f",&c1);if(NUMjdg==2){FC2(a1,b1,c1,1); goto end2;}printf("the number of d?--->");/*输入第四高次项系数*/scanf("%f",&d1);if(NUMjdg==3){FC3(a1,b1,c1,d1); goto end3;}printf("the number of e?--->");/*输入第五高次项系数*/scanf("%f",&e1);if(NUMjdg==4){FC4(a1,b1,c1,d1,e1); goto end4;}printf("the number of f?--->");/*输入常数项系数*/scanf("%f",&f1);x5=FC5();end2:end4:if(a1!=0) printf("\n********\nThere is following result:\n"); fp=fopen("fun.dat","r");while(fgets(buf,256,fp)!=NULL){printf("%s",buf);}fclose(fp); fp=fopen("fun.dat","a");if(NUMjdg==5){fprintf(fp,"x%s=%g\n",fx5,x5);printf("x%s=%g\n",fx5,x5);}fclose(fp);end1:end3:if(save=='n'){unlink("fun.dat");}getch();return 0;}/*以下为各项函数的定义*/float fun(float x){return(x*x*x*x*x*a1+x*x*x*x*b1+x*x*x*c1+x*x*d1+x*e1+f1);}float dfun(float x){return(5*a1*x*x*x*x+4*b1*x*x*x+3*c1*x*x+2*d1*x+e1);}float iterate(float x){float x1;x1=x-fun(x)/dfun(x);return(x1);}float FC5(){int k=0,i;float x0=-2.0,x1,de;float b,c,d,e,temp[5];b1/=a1; c1/=a1; d1/=a1; e1/=a1; f1/=a1; a1=1.0;printf("FC5 a=%g b=%g c=%g d=%g e=%g f=%g\n",a1,b1,c1,d1,e1,f1);if(b1==0.0&&c1==0.0&&d1==0.0&&e1==0.0&&f1==0.0){return 0.0;}temp[0]=-b1/5; temp[1]=-c1/(2*b1); temp[2]=-d1/c1; temp[3]=2*e1/(-d1); temp[4]=-5*f1/e1;for(i=0;i<5;i++) printf("temp[%d]: %g",i,temp[i]);if(temp[0]==temp[1]&&temp[0]==temp[2]&&temp[0]==temp[3]&&temp[0]==temp[ 4]){return temp[0];}do{k++;x1=iterate(x0);// printf(" %d %g\n",k,x1);de=fabs(x1-x0);x0=x1;}while(de>=0.00001&&k<MAX);strcpy(fx5,"[5]");b=b1+x1; c=c1+b*x1; d=d1+c*x1; e=e1+d*x1;FC4(1.0,b,c,d,e);printf("one of the result is %g\n",x1);return x1;}/*解法请参照盛金公式,费拉里公式,牛顿迭代法,一元二次求根公式*/ float FC4(float a,float b,float c,float d,float e){float y;float M,N,P;float y0[4];int i;b/=a; c/=a; d/=a; e/=a; a=1.0;printf("FC4 a:%g b:%g c:%g d:%g e:%g\n",a,b,c,d,e);y0[0]=8.0;y0[1]=-4.0*c;y0[2]=-1*(8.0*e-2.0*b*d);y0[3]=-e*(b*b-4.0*c)-d*d;for(i=1;i<=3;i++){printf("y%d:%g",i,y0[i]);}printf("\n");y=FC3(y0[0],y0[1],y0[2],y0[3]);printf("y:%g ",y);M=sqrt(8.0*y+b*b-4.0*c);N=b*y-d;printf("M:%g N:%g\n",M,N);if(M==0){P=sqrt(y*y-e);printf("P:%g\n",P);FC2(2.0,b,2.0*(y+P),1);FC2(2.0,b,2.0*(y-P),3);}else{FC2(2.0,b+M,2.0*(y+N/M),1);FC2(2.0,b-M,2.0*(y-N/M),3);}return 0.0;}float FC3(float a,float b,float c,float d){float A,B,C,delta,x[3],ni,fun[3];float y1,y2,k,T,theta;float temp;FILE *fp;int i,y_1=1,y_2=1;printf("FC3-->a=%g b=%g c=%g d=%g\n",a,b,c,d); A=b*b-3*a*c;B=b*c-9*a*d;C=c*c-3*b*d;delta=B*B-4*A*C;printf("fc3A:%g B:%g C:%g\n",A,B,C);printf("fc3 delta:%g\n",delta);if(NUMjdg==3){printf("There is following result:\n\n");fp=fopen("fun.dat","w");}else{strcpy(Fun3,"fun3:");}if(delta==0){if(A==B){if(b==0){printf("%sx[1]=x[2]=x[3]=%d\n",Fun3,0);}else{printf("%sx[1]=x[2]=x[3]=%g\n",Fun3,-b/(3*a));}if(b==0){fprintf(fp,"%sx[1]=x[2]=x[3]=%d\n",Fun3,0);}else{fprintf(fp,"%sx[1]=x[2]=x[3]=%g\n",Fun3,-b/(3*a));} fun[0]=-b/(3*a);fun[1]=fun[0];fun[2]=fun[1];if(NUMjdg==3){printf("\n"); fclose(fp);}return fun[0];}else{k=B/A;printf("%sx[1]=%g\n",Fun3,fun[0]=-b/a+k);printf("%sx[2]=%g\n",Fun3,fun[1]=-k/2);fprintf(fp,"%sx[1]=%g\n",Fun3,fun[0]=-b/a+k);fprintf(fp,"%sx[2]=%g\n",Fun3,fun[1]=-k/2);if(NUMjdg==3){printf("\n"); fclose(fp);}if(fun[0]>fun[1]){return fun[0];}else{return fun[1];}}}else if(delta>0){y1=A*b+1.5*a*(-B+pow(delta,0.5));if(y1<0.0){y_1=-1;}y2=A*b+1.5*a*(-B-pow(delta,0.5));if(y2<0){y_2=-1;}if(NUMjdg!=3)printf("y1: %g\ny2: %g\n",y1,y2);x[0]=(-b-y_1*pow(fabs(y1),1.0/3.0)-y_2*pow(fabs(y2),1.0/3.0))/(3*a);x[1]=(-2*b+y_1*pow(fabs(y1),1.0/3.0)+y_2*pow(fabs(y2),1.0/3.0))/(6*a);ni=pow(3.0,0.5)*(y_1*pow(fabs(y1),1.0/3.0)-y_2*pow(fabs(y2),1.0/3.0))/( 6*a);printf("%sx[1]=%g\n",Fun3,fun[0]=x[0]);printf("%sx[2]=%g+%gi\n",Fun3,x[1],fabs(ni));printf("%sx[3]=%g-%gi\n",Fun3,x[1],fabs(ni));fprintf(fp,"%sx[1]=%g\n",Fun3,fun[0]=x[0]);fprintf(fp,"%sx[2]=%g+%gi\n",Fun3,x[1],fabs(ni));fprintf(fp,"%sx[3]=%g-%gi\n",Fun3,x[1],fabs(ni));fun[1]=fun[0];fun[2]=fun[1];if(NUMjdg==3){printf("\n"); fclose(fp);}return fun[0];}else{T=(2*A*b-3*a*B)/(2*pow(A,1.5));theta=acos( T);theta/=3;if(NUMjdg!=3){printf("T:%g\n",T);printf("theta: %g\n",theta);}//cs = theta+2/3*i*acos(-1);x[0]=(-b-2*pow(A,0.5)*cos(theta))/(3*a);x[1]=(-b+pow(A,0.5)*(cos(theta)+pow(3,0.5)*sin(theta)))/(3*a); x[2]=(-b+pow(A,0.5)*(cos(theta)-pow(3,0.5)*sin(theta)))/(3*a);for(i=0;i<3;i++) {printf("%sx[%d]=%g\n",Fun3,i+1,fun[i]=x[i]);} if(NUMjdg==3){for(i=0;i<3;i++){fprintf(fp,"%sx[%d]=%g\n",Fun3,i+1,fun[i]=x[i]);}}if(fun[0]>fun[1]){temp=fun[0];}else{temp=fun[1];}if(NUMjdg==3){printf("\n"); fclose(fp);}。

python 求解一元多次方程

python 求解一元多次方程

python 求解一元多次方程在数学中,一元多次方程是常见的类型之一。

对于此类问题,我们可以使用 Python 编程语言来求解。

Python 是一种高级编程语言,它具有良好的可读性和易用性,让我们可以很方便地写出求解一元多次方程的程序。

以下是使用 Python 求解一元多次方程的步骤:1. 安装 Python 环境要在计算机上运行 Python 程序,需要先安装 Python 环境。

目前,Python 3.x 是最新版本,我们可以从官方网站下载最新的 Python 安装包并进行安装。

2. 导入 math 模块Python 中有一个 math 模块,它包含了数学函数,例如幂函数、三角函数、指数函数等。

在求解一元多次方程时,我们可以使用 math 模块中的 pow 函数来计算幂次。

3. 输入方程系数输入一元多次方程的系数,存储到变量中,方程的系数可以由用户进行输入。

例如,对于二次方程 ax^2 + bx + c = 0,我们可以使用input 函数提示用户输入 a、b、c 的值。

a = float(input("请输入 a 的值:"))b = float(input("请输入 b 的值:"))c = float(input("请输入 c 的值:"))4. 计算判别式判别式是指二次方程的解的判断标准,它是b² - 4ac,在计算判别式时,可以使用 pow 函数进行幂次运算。

delta = pow(b, 2) - 4 * a * c5. 判断方程的根数根据判别式的值,我们可以判断方程的根数。

当 delta 大于 0 时,方程有两个不相等的实数根;当 delta 等于 0 时,方程有一个实数根;当 delta 小于 0 时,方程有两个复数根。

if delta > 0:x1 = (-b+math.sqrt(delta))/(2*a)x2 = (-b-math.sqrt(delta))/(2*a)print("方程的两个实数根分别为:",x1,x2)elif delta == 0:x = -b/(2*a)print("方程的一个实数根为:",x)else:print("方程无实数解!")以上就是使用 Python 求解一元多次方程的基本步骤。

一元高次方程的计算机程序的求根研究

一元高次方程的计算机程序的求根研究

一元高次方程的计算机程序的求根研究
一元高次方程是指只含有一个未知数的高次方程,其一般形式为:
ax^n + bx^(n-1) + cx^(n-2) + ... + k = 0
a、b、c、...、k为已知常数,n为正整数,且n≥2。

求解一元高次方程的根是数学中的一个重要问题,在计算机程序领域有着广泛的应用和研究。

下面将从数值方法、符号方法以及程序实现三个方面进行探讨。

数值方法是求解一元高次方程根的一种常用方法,其基本思想是通过数值计算逼近方程的根。

常见的数值方法有二分法、牛顿迭代法、割线法等。

以牛顿迭代法为例,它的步骤如下:
1. 选择初始解x0;
2. 计算函数f(x)和它的导数f'(x),求得x0处的函数值f(x0)和斜率f'(x0);
3. 利用迭代公式xn+1 = xn - f(xn)/f'(xn),求得下一个近似解xn+1;
4. 重复步骤2和步骤3,直到满足收敛条件。

1. 将方程进行因式分解,得到形如(x-a)(x-b)(x-c)...=0的结果;
2. 通过解方程(x-a)(x-b)(x-c)...=0的每一个括号,求得方程的全部根;
程序实现是将上述数值方法和符号方法转化为计算机程序的过程。

具体而言,可以使用编程语言(如Python、C++等)编写相应的函数或算法,通过输入方程的系数和参数,输出方程的根。

在实现过程中,需要注意算法的效率和精度问题,避免数值计算误差和符号计算复杂度过高的情况。

含参数的一元五次方程

含参数的一元五次方程

含参数的一元五次方程介绍一元五次方程是指其中未知数的最高次数为5的方程。

含参数的一元五次方程是在方程中引入了一个或多个参数。

这些参数可以是常数、未知数或其他变量,它们的值可以在方程中进行求解或设定。

解法求解含参数的一元五次方程的一般方法是将方程转化为标准的五次方程或使用数值计算方法进行求解。

以下是一种常用的求解思路:1. 将方程中的参数表示为变量或常数,例如将参数表示为$a$。

2. 根据具体的参数值,将方程转化为标准的五次方程。

这可以通过代入的方式或特定的转化方法来完成。

3. 使用求解五次方程的方法来求解方程。

这可能包括使用数值计算方法(如牛顿法)或寻找特殊解的方法(如拉格朗日代数定理)。

4. 根据具体的参数值,得出方程的解。

这些解可以是实数解或复数解,取决于参数的取值范围。

示例以下是一个含参数的一元五次方程的示例:$$x^5 + ax^4 + bx^3 + cx^2 + dx + e = 0$$假设方程中的参数为$a=1$,$b=2$,$c=3$,$d=4$,$e=5$。

将这些参数代入方程,得到标准的五次方程:$$x^5 + x^4 + 2x^3 + 3x^2 + 4x + 5 = 0$$使用适当的求解方法,可以求得此方程的解。

总结含参数的一元五次方程是包含一个或多个参数的一元五次方程。

通过将参数代入方程,将其转化为标准的五次方程,然后使用适当的求解方法,可以求解这类方程。

各种参数的取值可能会导致不同的解,因此在实际应用中需要根据具体情况来选择参数的取值范围。

一元高次方程数值解法C程序实现探讨

一元高次方程数值解法C程序实现探讨

一元高次方程数值解法C程序实现探讨摘要一元高次方程作为方程的一部分,对我们后续的学习起着相当重要的作用。

求解一元高次方程的根在计算数学方面既是难点也是重点。

关于一元高次方程,我们在中学阶段,已经掌握了一元二次方程的公式解法;一元三次方程和一元四次方称有一般解法,但是比较复杂,且超过了一般的知识范围;5次以及5次以上的代数方程,没有一般的公式解法。

本文我们在了解了系数在有理数域且只有有理根的一元高次方程的解法技巧的基础上,通过回忆我们学过的一元二次方程根式解的方法,推敲了一元三次、四次方程的根式解;最后介绍了两种解高次方程数值解通用的两种方法:二分法、牛顿法。

要求我们在了解一元二次方程的同时掌握一元三次及四次方程的根式解意义,理解用二分法及牛顿法解一元高次方程数值解法的思想及意义关键词: 高次方程,二分法,二分法,迭代Polynomial equations C program discussAbstractPolynomial equations as part of the equation, for our subsequent learning plays a very important role. Solving a polynomial equation root in computational mathematics is a difficult and key point.On polynomial equations, we in the stage of middle school, have mastered the two once basic quadratic equation formula solution; three once basic quadratic equation and a four power said that general solutions, but are more complex, and more than the general scope of knowledge; the 5and more than 5algebraic equation, no general formula solution,In this paper we understand the coefficients in the field of rational numbers and only the rational root of polynomial equations based on techniques, Through the memories we learned two once basic quadratic equation root solution method, the study of one dollar three times, four times radical solution; finally introduced two kinds of solution of equation of higher degree numerical solution of general by two methods: the dichotomy, the Newton-Raphson method. We know two once basic quadratic equation while master of one dollar three times and four times the radical solution of equation of meaning, understand the use of dichotomy and Newtons method for solving polynomial equations numerical solution of the thought and meaningKey words: Equation of higher degree, Dichotomy,Newton method, Iterative目录摘要1 绪论2 选题分析2.1选题的研究现状2.2选题的意义2.3论文的主要内容3 解方程3.1 一元三次方程的根式解法3.3 二分法解一元高次方程3.4 牛顿法解一元高次方程参考文献致谢1.绪论整式方程未知数次数最高项次数高于2次的方程,称为高次方程。

C语言解方程

C语言解方程

C语⾔解⽅程早年作品,不是今天发现,恐怕要永远丢了。

解⽅程的种类包括:1. 多元⼀次1.1 ⼆元⼀次1.2 三元⼀次1.3 四元⼀次2. ⼀元⼆次3. ⼀元⾼次4. 进制转换转载请注明出处,联系我: t39q@本⼈热衷于数据库技术及算法的研究,志同道合之⼠, 欢迎探讨#include<stdio.h>#include<math.h>main(){code_fun();}code_fun(){long int code=123,accept_code,j;for(j=0;j<3;j++){printf("Qing shu ru mi ma:");scanf("%ld",&accept_code);if(j<2){if(code==accept_code){clrscr();menu();break;}else{clrscr();printf("Mi ma cuo wu!Ni hai you %d ji hui.\n\n",2-j);}}else{printf("\nDui bu qi,Ni yi jing shu ru cuo wu 3 ci,An ren yi jian tui chu.\n");getch();tui_chu();}}}tui_chu(){}menu(){int variable_1;printf("\n\n\n\n\n\n\n 1: Duo yuan yi ci fang cheng zu.\n");printf(" 2: Yi yuan er ci fang cheng.\n");printf(" 3: Yi yuan gao ci fang cheng.\n");printf(" 4: Jin zhi zhuan huan.\n");printf(" 5: Lian xi wo.\n");printf(" 6: Tui chu.\n");printf(" Qing shu ru:");scanf("%d",&variable_1);if(variable_1>0&&variable_1<7){{switch(variable_1){case1:duo_yuan_yi_ci();break;case2:yi_yuan_er_ci();break;case3:yi_yuan_gao_ci();break;case4:jin_zhi_zhuan_huan();break;case5:contact_me();break;case6:break;}}else{clrscr();printf("Shu ru cuo wu,Qing chong xin shu ru."); menu();}}duo_yuan_yi_ci()/*属于menu()*/{int variable_2;clrscr();printf("\n\n\n\n\n\n\n 1: Er yuan yi ci.\n");printf(" 2: San yuan yi ci.\n");printf(" 3: Si yuan yi ci.\n");printf(" 4: Hui zhu cai dan.\n");printf(" Qing shu ru:");scanf("%d",&variable_2);switch(variable_2){case1:er_yuan_yi_ci();break;case2:san_yuan_yi_ci();break;case3:si_yuan_yi_ci();break;case4:{clrscr();menu();}}}er_yuan_yi_ci()/*属于duo_yuan_yi_ci()*/{float a1,b1,c1,a2,b2,c2;clrscr();printf("Fang cheng mo shi wei: a1*x+b1*y=c1\n");printf(" a2*x+b2*y=c2\n");printf("\n\nQing shu ru a1:");scanf("%f",&a1);printf("Qing shu ru b1:");scanf("%f",&b1);printf("Qing shu ru c1:");scanf("%f",&c1);printf("\n");printf("Qing shu ru a2:");scanf("%f",&a2);printf("Qing shu ru b2:");scanf("%f",&b2);printf("Qing shu ru c2:");scanf("%f",&c2);if(a1/a2!=b1/b2){printf("\n");printf("x=%f\n",-((b1*c2-b2*c1)/(a1*b2-a2*b1)));printf("y=%f\n",(a1*c2-a2*c1)/(a1*b2-a2*b1));printf("y=%f\n",(a1*c2-a2*c1)/(a1*b2-a2*b1));}else{printf("\n");printf("a1/a2=b1/b2,fang cheng wu li.");}printf("\n");printf("Fang cheng wu li,An ren yi jian hui zhu cai dan.");getch();clrscr();menu();}san_yuan_yi_ci()/*属于duo_yuan_yi_ci()*/{float a1,b1,c1,d1, a2,b2,c2,d2, a3,b3,c3,d3, x,y,z;clrscr();/*标注模式*/printf("Fang cheng mo shi wei:a1*x+b1*y+c1*z=d1\n");printf(" a2*x+b2*y+c2*z=d2\n");printf(" a3*x+b3*y+c3*z=d3\n");printf("Qing shu ru a1:");scanf("%f",&a1);printf("Qing shu ru b1:");scanf("%f",&b1);printf("Qing shu ru c1:");scanf("%f",&c1);printf("Qing shu ru d1:");scanf("%f",&d1);printf("\n");printf("Qing shu ru a2:");scanf("%f",&a2);printf("Qing shu ru b2:");scanf("%f",&b2);printf("Qing shu ru c2:");scanf("%f",&c2);printf("Qing shu ru d2:");scanf("%f",&d2);printf("\n");printf("Qing shu ru a3:");scanf("%f",&a3);printf("Qing shu ru b3:");scanf("%f",&b3);printf("Qing shu ru c3:");scanf("%f",&c3);printf("Qing shu ru d3:");scanf("%f",&d3);printf("\n");y=((d1*a2-d2*a1)*(c3*a2-c2*a3)-(d3*a2-d2*a3)*(c1*a2-c2*a1))/((b1*a2-b2*a1)*(c3*a2-c2*a3)-(b3*a2-b2*a3)*(c1*a2-c2*a1)); z=((d1*a2-d2*a1)*(b2*a3-b3*a2)-(d2*a3-d3*a2)*(b1*a2-b2*a1))/((c1*a2-c2*a1)*(b2*a3-b3*a2)-(c2*a3-c3*a2)*(b1*a2-b2*a1)); x=(d1-c1*z-b1*y)/a1;printf("x=%f\n",x);printf("y=%f\n",y);printf("z=%f\n",z);printf("An ren yi jian hui zhu cai dan.");getch();clrscr();menu();}si_yuan_yi_ci()/*属于duo_yuan_yi_ci()*/{{float a1=1,b1=1,c1=1,d1=1,e1=10, a2=1,b2=2,c2=1,d2=1,e2=12, a3=1,b3=1,c3=2,d3=1,e3=13, a4=1,b4=1,c4=1,d4=2,e4=14, x,y,z,w, jian_ce_1,jian _ce_2;jian_ce_1=(((e1*d2-e2*d1)*(a2*d3-a3*d2)-(e2*d3-e3*d2)*(a1*d2-a2*d1))*((b2*d3-b3*d2)*(a3*d4-a4*d3)-(b3*d4-b4*d3)*(a2*d3-a3*d2))-((e2*d3-e3*d2)*(a 3*d4-a4*d3)-(e3*d4-e4*d3)*(a2*d3-a3*d2))*((b1*d2-b2*d1)*(a2*d3-a3*d2)-(b2*d3-b3*d2)*(a1*d2-a2*d1)));jian_ce_2=(((c1*d2-c2*d1)*(a2*d3-a3*d2)-(c2*d3-c3*d2)*(a1*d2-a2*d1))*((b2*d3-b3*d2)*(a3*d4-a4*d3)-(b3*d4-b4*d3)*(a2*d3-a3*d2))-((c2*d3-c3*d2)*(a3 *d4-a4*d3)-(c3*d4-c4*d3)*(a2*d3-a3*d2))*((b1*d2-b2*d1)*(a2*d3-a3*d2)-(b2*d3-b3*d2)*(a1*d2-a2*d1)));printf("%f,%f",jian_ce_1,jian_ce_2);getch();z=(((e1*d2-e2*d1)*(a2*d3-a3*d2)-(e2*d3-e3*d2)*(a1*d2-a2*d1))*((b2*d3-b3*d2)*(a3*d4-a4*d3)-(b3*d4-b4*d3)*(a2*d3-a3*d2))-((e2*d3-e3*d2)*(a3*d4-a4* d3)-(e3*d4-e4*d3)*(a2*d3-a3*d2))*((b1*d2-b2*d1)*(a2*d3-a3*d2)-(b2*d3-b3*d2)*(a1*d2-a2*d1)))/(((c1*d2-c2*d1)*(a2*d3-a3*d2)-(c2*d3-c3*d2)*(a1*d2-a2*d 1))*((b2*d3-b3*d2)*(a3*d4-a4*d3)-(b3*d4-b4*d3)*(a2*d3-a3*d2))-((c2*d3-c3*d2)*(a3*d4-a4*d3)-(c3*d4-c4*d3)*(a2*d3-a3*d2))*((b1*d2-b2*d1)*(a2*d3-a3*d2) -(b2*d3-b3*d2)*(a1*d2-a2*d1)));printf("%f",z);getch();}yi_yuan_er_ci()/*属于menu*/{float a,b,c,d,x1,x2;/*d设计为判别式*/clrscr();printf("Fang cheng mo shi wei: a*x*x+b*x+c=0\n");printf("\n\nQing shu ru a:");scanf("%f",&a);printf("Qing shu ru b:");scanf("%f",&b);printf("Qing shu ru c:");scanf("%f",&c);d=b*b-4*a*c;printf("\n");printf("\nfen xi jie guo wei:");if(d==0)/*注意:C⾥⾯的等号为“==”*/{printf("\n\nx1=x2=%f\n",(-b)/(2*a));printf("zhong zhou wei: x=%f\n",(-b)/(2*a));printf("ding dian wei:(%f,%f)\n",(-b)/(2*a),(4*a*c-b*b)/(4*a));}else if(d>0){printf("\n\nx1=%f\nx2=%f\n",((-b)+sqrt(d))/(2*a),((-b)-sqrt(d))/(2*a));printf("zhong zhou wei: x=%f\n",(-b)/(2*a));printf("ding dian wei:(%f,%f)\n",(-b)/(2*a),(4*a*c-b*b)/(4*a));}else{printf("\n\nfang cheng wu shi gen.\n");printf("zhong zhou wei: x=%f\n",(-b)/(2*a));printf("ding dian wei:(%f, %f)\n",(-b)/(2*a),(4*a*c-b*b)/(4*a));}printf("Press any key to back menu.");getch();clrscr();menu();}yi_yuan_gao_ci(){int veriable_9;clrscr();printf("\n\n\n\n\n\n\n");printf(" 1.yi yuan san ci.\n");printf(" 2.yi yuan si ci.\n");printf(" 3.Back menu.\n");printf(" Qing shu ru:");scanf("%d",&veriable_9);if(veriable_9>0&&veriable_9<4){switch(veriable_9){case1:yi_yuan_san_ci();break;case2:yi_yuan_si_ci();break;case2:yi_yuan_si_ci();break;case3:{clrscr();menu();}break;}}else{printf("shu ru cuo wu,an ren yi jian chong xin xuan ze.");getch();clrscr();yi_yuan_gao_ci();}}float f(float a9,float b9,float c9,float d9,float x)/*属于yi_yuan_gao_ci()*/{float y;y=a9*x*x*x+b9*x*x+c9*x+d9;return(y);}yi_yuan_san_ci()/*属于menu()*/{float x1,x2,x3,a8,b8,c8,d8;clrscr();printf("fang cheng mo shi wei:a*x*x*x+b*x*x+c*x+d=0\n");printf("qing shu ru a: ");scanf("%f",&a8);printf("qing shu ru b: ");scanf("%f",&b8);printf("qing shu ru c: ");scanf("%f",&c8);printf("qing shu ru d: ");scanf("%f",&d8);printf("Please input an area that include one root(like 1,2):");scanf("%f,%f",&x1,&x2);if(f(a8,b8,c8,d8,x1)*f(a8,b8,c8,d8,x2)>0){printf("yi xia shi bu neng dei dao gen de san zhong ke neng de qing kuang:\n");printf("1.shu ru de qu jian bu bao han gen.\n");printf("2.shu ru de qu jian bao han liang ge yi shang de gen.\n");printf("3.zai shu ru de qu jian shang qu xian yu x zhou xiang qie.\n");printf("Press any key to input again.");getch();yi_yuan_gao_ci();}else{do{x3=(x1+x2)/2;if(f(a8,b8,c8,d8,x3)*f(a8,b8,c8,d8,x1)>0)x1=x3;elsex2=x3;}while(fabs(f(a8,b8,c8,d8,x3))>=0.000001);/*注意写头⽂件“#include<math.h>”*/ printf("yi ge gen shi: %f",x3);printf("\n");printf("An ren yi jian hui zhu cai dan.");getch();clrscr();menu();menu();}}float f1(float a,float b,float c,float d,float e,float x)/*属于yi_yuan_gao_ci()*/{float y;y=a*x*x*x*x+b*x*x*x+c*x*x+d*x+e;return(y);}yi_yuan_si_ci()/*属于menu()*/{float x1,x2,x3,a,b,c,d,e;clrscr();printf("fang cheng mo shi wei:a*x*x*x*x+b*x*x*x+c*x*x+d*x+e=0\n");printf("qing shu ru a: ");scanf("%f",&a);printf("qing shu ru b: ");scanf("%f",&b);printf("qing shu ru c: ");scanf("%f",&c);printf("qing shu ru d: ");scanf("%f",&d);printf("qing shu ru e: ");scanf("%f",&e);printf("Please input an area that include one root(like 1,2):");scanf("%f,%f",&x1,&x2);if(f1(a,b,c,d,e,x1)*f1(a,b,c,d,e,x2)>0){printf("yi xia shi bu neng dei dao gen de san zhong ke neng de qing kuang:\n");printf("1.shu ru de qu jian bu bao han gen.\n");printf("2.shu ru de qu jian bao han liang ge yi shang de gen.\n");printf("3.zai shu ru de qu jian shang qu xian yu x zhou xiang qie.\n");printf("Press any key to input again.");getch();yi_yuan_gao_ci();}else{do{x3=(x1+x2)/2;if(f1(a,b,c,d,e,x3)*f1(a,b,c,d,e,x1)>0)x1=x3;elsex2=x3;}while(fabs(f1(a,b,c,d,e,x3))>=0.0000001);/*注意写头⽂件“#include<math.h>”*/ printf("one root is %f",x3);printf("\n");printf("Press any key to back menu.");getch();clrscr();menu();}}/*任意进制到⼗进制*/unsigned long fun1(){{unsigned long s=0;/*yjz=yuan jin zhi的⾸字母,即是原来的数是多少进制*/ int i,yjz,veriable_3,a[8];printf("Qing shu ru yao zhuan huan de shu de jin zhi:\n");scanf("%d",&yjz);/*注意地址引⽤符&*/if(yjz>1&&yjz<11){printf("Qing shu ru ni de shu ju de 8 wei xing shi\n");for(i=0;i<=7;i++){printf("di %d wei: ",8-i);scanf("%d",&a[i]);}for(i=0;i<=7;i++)s=s+a[i]*(unsigned long)pow(yjz,7-i);return(s);}else{printf("Bao qian,zhi neng zai 2-10 jin zhi zhi jian jin xing zhuan huan.\n\n"); printf("Press any key to continue.");getch();clrscr();fun1();}}/*⼗进制到任意进制*/void fun2(unsigned long m){int i,ys[8],hjz;/*ys=yu shu,hjz=hou mian de jin zhi*/printf("qing shu ru yao dei dao de jin zhi:\n");scanf("%d",&hjz);for(i=0;i<=7;i++){ys[i]=m%hjz;m=m/hjz;}for(i=7;i>=0;i--)printf("%2d",ys[i]);}/*⼦主函数*/jin_zhi_zhuan_huan()/*仅限于正数*/{unsigned long sj;/*sj=shi jin zhi*/clrscr();sj=fun1();printf("shi jin zhi wei:%ld\n",sj);fun2(sj);printf("\nPress any key to back menu.");getch();clrscr();menu();}contact_me(){clrscr();printf("E-mail:t39q@\n");printf("\n");printf(" QQ:407-959-978\n");printf("\n");printf("An ren yi jian hui zhu cai dan.");getch();clrscr();menu();}。

simplex算法 一元高次方程

simplex算法 一元高次方程

simplex算法一元高次方程Simplex算法是一种用于求解线性规划问题的优化算法,而一元高次方程是指只有一个未知数的高次方程。

虽然这两个概念看起来不太相关,但是我们可以通过使用Simplex算法来解决一元高次方程,从而得到方程的根。

我们需要了解一元高次方程的一般形式。

一元高次方程可以表示为:ax^n + bx^(n-1) + cx^(n-2) + ... + k = 0,其中a、b、c、...、k是已知系数,n是方程的次数。

我们的目标是找到方程的根,即使方程等式成立。

在使用Simplex算法求解一元高次方程之前,我们需要将方程转化为标准形式。

标准形式是指方程中各项的次数按照降序排列,并且最高次项的系数为1。

例如,对于方程3x^3 + 2x^2 - 5x + 1 = 0,我们可以将其转化为x^3 + (2/3)x^2 - (5/3)x + 1/3 = 0。

接下来,我们可以使用Simplex算法来解决这个问题。

Simplex算法的基本思想是通过迭代的方式逐步改进目标函数的值,直到找到最优解为止。

在这里,我们的目标函数是方程的根,我们希望找到使方程等式成立的根。

Simplex算法的步骤如下:1. 将方程转化为标准形式;2. 假设一个初始解,可以是方程中任意一个根的近似值;3. 计算目标函数的值,并判断是否满足停止准则,如果满足,则停止迭代,当前解即为方程的根;4. 如果不满足停止准则,则选择一个合适的方向进行搜索,并更新解;5. 重复步骤3和步骤4,直到满足停止准则。

在每一次迭代中,我们需要根据方程的形式和当前解,选择一个合适的搜索方向。

这可以通过计算目标函数的梯度来实现。

例如,如果目标函数的梯度大于0,则说明当前解偏小,我们可以向正方向移动;如果目标函数的梯度小于0,则说明当前解偏大,我们可以向负方向移动。

通过不断迭代,我们最终可以找到方程的根。

需要注意的是,Simplex算法只能用于求解线性规划问题,而一元高次方程是非线性问题。

C语言解多次方程方法

C语言解多次方程方法

C语言解多次方程方法
一、求解根的基本方法
1.逐步逼近法
所谓“逐步逼近法”就是根据其中一函数曲线图形的形状逐步缩小解区间,以及迭代法等,以寻求满足其中一函数曲线与横轴的交点,即该函数的根,分别有牛顿迭代法、切线法、二分法、泰勒展开式法等。

牛顿迭代法是根据函数在给定点处的切线方程求根的一种方法。

该方法在一个近似解的变化率上依赖于函数本身的切线斜率,把该近似解沿着切线的方向迭代式地逼近该函数的根,从而达到求解该函数根的目的。

算法步骤:
(1)给定初值x;
(2)根据x的值,求函数f(x)及其导数f′(x);
(3)利用切线方程f(x)+f′(x)(x-x0)=0,求出新的近似根x1;
(4)判断是否满足终止条件,如果不满足,转步骤(2),以x1作为新的初值继续迭代;
(5)如果满足终止条件,x1即为所求的根。

二分法(折半法)是一种求实根的简单而实用的方法,原理是将解区间[a,b]划分成两个子区间[a,c]、[c,b],其中c=(a+b)/2,函数f (x)在该节点的取值与解区间的相交情况决定加减区间,直至取得所需精度为止。

算法步骤:
(1)给定函数f(x)及解区间[a,b];。

C语言解多次方程方法

C语言解多次方程方法

一 理论背景我们先考虑线性方程,线性方程组的解便不难得出了。

与线性方程相比,非线性方程问题无论是从理论上还是从计算公式上,都要复杂得多。

对于一般的非线性方程()0f x =,计算方程的根既无一定章程可寻也无直接法可言。

例如,求解高次方程组637 1.50x x x -+-=的根,求解含有指数和正弦函数的超越方程cos()0xe x π-=的零点。

解非线性方程或方程组也是计算方法中的一个主题。

在解方程方面,牛顿(I . Newton )提出了方程求根的一种迭代方法,被后人称为牛顿算法。

三百年来,人们一直用牛顿算法,改善牛顿算法,不断推广算法的应用范围。

牛顿算法,可以说是数值计算方面的最有影响的计算方法。

对于言程式()0f x =,如果()f x 是线性函数,则它的求根是容易的。

牛顿法实质上是一种线性化方法,其基本思想是将非线性方程式()f x 逐步归结为某种线性方程来求解。

解非线性方程组只是非线性方程的一种延伸和扩展。

二 主要理论 考虑方程组111(,...)0,.................(,...)0.n n n f x x f x x =⎧⎪⎨⎪=⎩ ()1其中1,...,nf f 均为1(,...)n x x 多元函数。

若用向量记号记11(,...),(,...,)T n Tn n x x x R F f f =∈=,()1 就可写成()0.F x = (2)当2,n ≥,且(1,...,)i f i n =中至少有一个是自变量(1,...,)i x i n =的非线性函数时,则称方程组(1)为非线性方程组。

非线性方程组求根问题是前面介绍的方程即(1)n =求根的直接推广,实际上只要把单变量函数()f x 看成向量函数()F x 则可将单变量方程求根方法推广到方程组(2)。

若已给出方程组(2)的一个近似根 ()1(,...,),k k k Tn xx x = 将函数()F x 的分量()(1,...,)i f x i n =在()k x 用多元函数泰勒展开,并取其线性部分,则可表示为()()()()()()().k k k F x F x F x x x '≈+-令上式右端为零,得到线性方程组()()()()()(),k k k F x x x F x '-=- (3)其中111122221212()()()()()()()()()()n n n n n n f x f x f x x xx f x f x f x x xx F x f x f x f x x x x ∂∂∂⎡⎤⎢⎥∂∂∂⎢⎥⎢⎥∂∂∂⎢⎥∂∂∂⎢⎥'=⎢⎥⎢⎥⎢⎥⎢⎥∂∂∂⎢⎥∂∂∂⎣⎦(4)称为()F x 为雅可比(Jacobi )矩阵。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一元高次方程c语言实现(windows VC6.0版本)注意:如果在linux vine或者UNIX以及非windows的系统下运行的话将代码pow以及sqrt全部替换为powf和sqrtf以下为代码#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#define MAX 1000/*最大递归次数为1000次*/#define ERROR "math error\n"/*显示错误信息*/char Fun3[10],fx5[10]="";/*美化输出结果*/float a1,b1,c1,d1,e1,f1;/*宏定义高次方程各项系数最大五次*/int NUMjdg;/*判断函数最高次数*/float FC(float a,float b);/*解一元一次方程*/float FC3(float a,float b,float c,float d);/*解一元三次方程*/float FC2(float a,float b,float c,int num);/*解一元二次方程*/float FC4(float a,float b,float c,float d,float e);/*解一元四次方程*/ float FC5();/*解一元五次方程*/float fun(float x);/*五次函数代值求解*/float dfun(float x);/*五次导函数代值求解*/float iterate(float x);/*牛顿迭代法猜值求解*/int main(){float x5;/*五次方程最后一个解*/FILE *fp;/*解的内容以文件的形式保存*/char save;char buf[256];/*从文件内读取内容保存至buf*/buf[0]='\0';/*防止乱码,开头定义为NULL*/fp=fopen("fun.dat","w");strcpy(Fun3,"");fclose(fp);printf("Do you want to save the result? 'y' or 'n'");/*是否想保存结果数据?*/printf("\n--->");scanf("%c",&save);redo:printf("please input degree number\n--->");/*请输入最高次数*/scanf("%d",&NUMjdg);if(NUMjdg<1||NUMjdg>5) goto redo;printf("the number of a?--->");/*输入最高次项系数*/scanf("%f",&a1);if(a1==0){printf(ERROR);return 1;}printf("the number of b?--->");/*输入第二高次项系数*/scanf("%f",&b1);if(NUMjdg==1){printf("the result is %g\n",FC(a1,b1)); goto end1;}printf("the number of c?--->");/*输入第三高次项系数*/scanf("%f",&c1);if(NUMjdg==2){FC2(a1,b1,c1,1); goto end2;}printf("the number of d?--->");/*输入第四高次项系数*/scanf("%f",&d1);if(NUMjdg==3){FC3(a1,b1,c1,d1); goto end3;}printf("the number of e?--->");/*输入第五高次项系数*/scanf("%f",&e1);if(NUMjdg==4){FC4(a1,b1,c1,d1,e1); goto end4;}printf("the number of f?--->");/*输入常数项系数*/scanf("%f",&f1);x5=FC5();end2:end4:if(a1!=0) printf("\n********\nThere is following result:\n"); fp=fopen("fun.dat","r");while(fgets(buf,256,fp)!=NULL){printf("%s",buf);}fclose(fp); fp=fopen("fun.dat","a");if(NUMjdg==5){fprintf(fp,"x%s=%g\n",fx5,x5);printf("x%s=%g\n",fx5,x5);}fclose(fp);end1:end3:if(save=='n'){unlink("fun.dat");}getch();b=b1+x1; c=c1+b*x1; d=d1+c*x1; e=e1+d*x1;FC4(1.0,b,c,d,e);printf("one of the result is %g\n",x1);return x1;}/*解法请参照盛金公式,费拉里公式,牛顿迭代法,一元二次求根公式*/ float FC4(float a,float b,float c,float d,float e){float y;float M,N,P;float y0[4];int i;b/=a; c/=a; d/=a; e/=a; a=1.0;printf("FC4 a:%g b:%g c:%g d:%g e:%g\n",a,b,c,d,e);y0[0]=8.0;y0[1]=-4.0*c;y0[2]=-1*(8.0*e-2.0*b*d);y0[3]=-e*(b*b-4.0*c)-d*d;for(i=1;i<=3;i++){printf("y%d:%g",i,y0[i]);}printf("\n");y=FC3(y0[0],y0[1],y0[2],y0[3]);printf("y:%g ",y);M=sqrt(8.0*y+b*b-4.0*c);N=b*y-d;printf("M:%g N:%g\n",M,N);if(M==0){P=sqrt(y*y-e);printf("P:%g\n",P);FC2(2.0,b,2.0*(y+P),1);FC2(2.0,b,2.0*(y-P),3);}else{FC2(2.0,b+M,2.0*(y+N/M),1);FC2(2.0,b-M,2.0*(y-N/M),3);}return 0.0;}float FC3(float a,float b,float c,float d){float A,B,C,delta,x[3],ni,fun[3];float y1,y2,k,T,theta;float temp;FILE *fp;int i,y_1=1,y_2=1;printf("FC3-->a=%g b=%g c=%g d=%g\n",a,b,c,d); A=b*b-3*a*c;B=b*c-9*a*d;C=c*c-3*b*d;delta=B*B-4*A*C;printf("fc3A:%g B:%g C:%g\n",A,B,C);printf("fc3 delta:%g\n",delta);if(NUMjdg==3){printf("There is following result:\n\n");fp=fopen("fun.dat","w");}else{strcpy(Fun3,"fun3:");}if(delta==0){if(A==B){if(b==0){printf("%sx[1]=x[2]=x[3]=%d\n",Fun3,0);}else{printf("%sx[1]=x[2]=x[3]=%g\n",Fun3,-b/(3*a));}if(b==0){fprintf(fp,"%sx[1]=x[2]=x[3]=%d\n",Fun3,0);} else{fprintf(fp,"%sx[1]=x[2]=x[3]=%g\n",Fun3,-b/(3*a));} fun[0]=-b/(3*a);fun[1]=fun[0];fun[2]=fun[1];if(NUMjdg==3){printf("\n"); fclose(fp);}return fun[0];}else{k=B/A;printf("%sx[1]=%g\n",Fun3,fun[0]=-b/a+k);printf("%sx[2]=%g\n",Fun3,fun[1]=-k/2);fprintf(fp,"%sx[1]=%g\n",Fun3,fun[0]=-b/a+k);fprintf(fp,"%sx[2]=%g\n",Fun3,fun[1]=-k/2);if(NUMjdg==3){printf("\n"); fclose(fp);}if(fun[0]>fun[1]){return fun[0];}else{return fun[1];}}}else if(delta>0){y1=A*b+1.5*a*(-B+pow(delta,0.5));if(y1<0.0){y_1=-1;}y2=A*b+1.5*a*(-B-pow(delta,0.5));if(y2<0){y_2=-1;}if(NUMjdg!=3)printf("y1: %g\ny2: %g\n",y1,y2);x[0]=(-b-y_1*pow(fabs(y1),1.0/3.0)-y_2*pow(fabs(y2),1.0/3.0))/(3*a);x[1]=(-2*b+y_1*pow(fabs(y1),1.0/3.0)+y_2*pow(fabs(y2),1.0/3.0))/(6*a);ni=pow(3.0,0.5)*(y_1*pow(fabs(y1),1.0/3.0)-y_2*pow(fabs(y2),1.0/3.0))/(6*a);printf("%sx[1]=%g\n",Fun3,fun[0]=x[0]);printf("%sx[2]=%g+%gi\n",Fun3,x[1],fabs(ni));printf("%sx[3]=%g-%gi\n",Fun3,x[1],fabs(ni));fprintf(fp,"%sx[1]=%g\n",Fun3,fun[0]=x[0]);fprintf(fp,"%sx[2]=%g+%gi\n",Fun3,x[1],fabs(ni));fprintf(fp,"%sx[3]=%g-%gi\n",Fun3,x[1],fabs(ni));fun[1]=fun[0];fun[2]=fun[1];if(NUMjdg==3){printf("\n"); fclose(fp);}return fun[0];}else{T=(2*A*b-3*a*B)/(2*pow(A,1.5));theta=acos( T);theta/=3;if(NUMjdg!=3){printf("T:%g\n",T);printf("theta: %g\n",theta);}//cs = theta+2/3*i*acos(-1);x[0]=(-b-2*pow(A,0.5)*cos(theta))/(3*a);x[1]=(-b+pow(A,0.5)*(cos(theta)+pow(3,0.5)*sin(theta)))/(3*a); x[2]=(-b+pow(A,0.5)*(cos(theta)-pow(3,0.5)*sin(theta)))/(3*a);for(i=0;i<3;i++) {printf("%sx[%d]=%g\n",Fun3,i+1,fun[i]=x[i]);} if(NUMjdg==3){for(i=0;i<3;i++){fprintf(fp,"%sx[%d]=%g\n",Fun3,i+1,fun[i]=x[i]);}}if(fun[0]>fun[1]){temp=fun[0];}else{temp=fun[1];}if(NUMjdg==3){printf("\n"); fclose(fp);}if(temp>fun[2]){return temp;}else{return fun[2];}}}float FC2(float a,float b,float c,int num){FILE *fp;float d;printf("FC2 a:%g b:%g c:%g\n",a,b,c);d=b*b-4*a*c;fp=fopen("fun.dat","a");if(d<0){fprintf(fp,"x[%d]=%g+%g i\n",num,-b/2/a,pow(-d,0.5)/(2*a)); fprintf(fp,"x[%d]=%g-%g i\n",num+1,-b/2/a,pow(-d,0.5)/(2*a));}else if(d==0){if(b==0.0){fprintf(fp,"x[%d]==x[%d]==0\n",num,num+1);}else{fprintf(fp,"x[%d]==x[%d]==%g\n",num,num+1,-b/2/a);} }else{fprintf(fp,"x[%d]=%g\n",num,(-b+pow(d,0.5))/(2*a));fprintf(fp,"x[%d]=%g\n",num+1,(-b-pow(d,0.5))/(2*a));}fclose(fp);return 0.0;}float FC(float a,float b){FILE *fp;fp=fopen("fun.dat","a");fprintf(fp,"x=%g\n",-b/a);fclose(fp);return-b/a;}。

相关文档
最新文档