⑴ 一元多項式的計算 能夠按照指數降序排列建立並輸出多項式 能夠完成兩個多項式的相加及相減
#include<stdio.h>
typedef struct polynode
node *create() //用尾插法建立一元多項式的鏈表
printf("exp: ");
scanf("%d",&e);
while(c!=0) //輸入系數為0時,多項式的輸入結束
s->coef=c;
printf("coef:");
scanf("%d",&c);
scanf("%d",&e);
void print(node *p) //輸出函數,列印出一元多項式
temp=q->next;free(q);q=temp;
if(p!=NULL) //將多項式A中剩餘的結點加入到和多項式中
pre->next=p;
else
void multipoly(node *ha,node *hb)
{ node *p,*q,*n,*m;
p=ha->next;
m->exp=p->exp+q->exp;
p=p->next;
polyadd(n,m);
printf("多項式的積是: ");
printf("請輸入多項式hb的系數與指數: ");
hb=create();
printf("多項式的和是: ");
multipoly(ha,hb);
簡介
在數學中,多項式(polynomial)是指由變數、系數以及它們之間的加、減、乘、冪運算(非負整數次方)得到的表達式。
對於比較廣義的定義,1個或0個單項式的和也算多項式。按這個定義,多項式就是整式。實際上,還沒有一個只對狹義多項式起作用,對單項式不起作用的定理。0作為多項式時,次數定義為負無窮大(或0)。單項式和多項式統稱為整式。
⑵ C++編程:一元多項式計算 任務:能夠按照指數降序排列建立並輸出多項式; 能夠完成兩個多項式的相加、相減
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct polynode
{
int coef; //多項式的系數
int exp; //指數
struct polynode *next;
}node;
node *create() //用尾插法建立一元多項式的鏈表
{
node *h,*r,*s;
int c,e;
h=(node*)malloc(sizeof(node));
r=h;
printf("coef:");
scanf("%d",&c);
printf("exp: ");
scanf("%d",&e);
while(c!=0) //輸入系數為0時,多項式的輸入結束
{
s=(node*)malloc(sizeof(node));
s->coef=c;
s->exp=e;
r->next=s;
r=s;
printf("coef:");
scanf("%d",&c);
printf("exp: ");
scanf("%d",&e);
}
r->next=NULL;
return(h);
}
void print(node *p) //輸出函數,列印出一元多項式
{
while(p->next!=NULL)
{
p=p->next;
printf(" %d*x^%d",p->coef,p->exp);
}
}
void polyadd(node *ha, node *hb)//一元多項式相加函數,用於將兩個多項式相加,然後將和多項式存放在多項式ha中,並將多項式hb刪除
{
node *p,*q,*pre,*temp;
int sum;
p=ha->next;
q=hb->next;
pre=ha;
while(p!=NULL&&q!=NULL)
{
if(p->exp<q->exp)
{
pre->next=p;
pre=pre->next;
p=p->next;
}
else if(p->exp==q->exp)
{
sum=p->coef+q->coef;
if(sum!=0)
{
p->coef=sum;
pre->next=p;pre=pre->next;p=p->next;
temp=q;q=q->next;free(temp);
}
else //如果系數和為零,則刪除結點p與q,並將指針指向下一個結點
{
temp=p->next;free(p);p=temp;
temp=q->next;free(q);q=temp;
}
}
else
{
pre->next=q;
pre=pre->next;
q=q->next;
}
}
if(p!=NULL) //將多項式A中剩餘的結點加入到和多項式中
pre->next=p;
else
pre->next=q;
}
void multipoly(node *ha,node *hb)
{ node *p,*q,*n,*m;
p=ha->next;
n=(node*)malloc(sizeof(node));
n->next=NULL;
while(p!=NULL)
{ m=(node*)malloc(sizeof(node));
for(q=hb->next;q;q=q->next)
{ m->coef=p->coef*q->coef;
m->exp=p->exp+q->exp;
m->next=NULL;
}
p=p->next;
polyadd(n,m);
}
printf("多項式的積是:\n");
print(n);
}
void main()
{
node *ha,*hb;
printf("請輸入多項式ha的系數與指數:\n");
ha=create();
print(ha);
printf("\n");
printf("請輸入多項式hb的系數與指數:\n");
hb=create();
print(hb);
printf("\n");
printf("多項式的和是:\n");
polyadd(ha,hb);
print(ha);
printf("\n");
multipoly(ha,hb);
}
⑶ 多項式計算
#include <stdio.h>
#include<malloc.h>
typedef struct
{
float coef;//系數
int expn;//指數
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//創建鏈表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void Creat(LinkList L,ElemType x)//創建多項式
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void Insert(LinkList L,LNode p)//插入鏈表
{
LinkList q,pc;
pc=(LinkList)malloc(sizeof(LNode));
*pc=p;
q=L;
while(q->next)
q=q->next;
pc->next=q->next;
q->next=pc;
}
void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多項式求和
{
LinkList qa,qb;
LNode qc;
float sum;
int a,b;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
a=qa->data.expn;
b=qb->data.expn;;
if(a<b)
{
Insert(pc,*qa);
qa=qa->next;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qc=*qa;
qc.data.coef=sum;
Insert(pc,qc);
qa=qa->next;
qb=qb->next;
}
else
{
qa=qa->next;
qb=qb->next;
}
}
if(a>b)
{
Insert(pc,*qb);
qb=qb->next;
}
while(qa)
{
Insert(pc,*qa);
qa=qa->next;
}
while(qb)
{
Insert(pc,*qb);
qb=qb->next;
}
}
}
void Plus(LinkList pa,LinkList pb,LinkList pc)//多項式的差
{
LinkList qb;
qb=pb->next;
while(qb)
{
qb->data.coef=-(qb->data.coef);
qb=qb->next;
}
AddPolyn(pa,pb,pc);
}
void Print(LinkList L)//輸出多項式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()//主函數
{
LinkList La,Lb,Lc,Ld;ElemType c;
int a,i;
La=InitList();
Lb=InitList();
Lc=InitList();
Ld=InitList();
printf("輸入La的項數:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("輸入La第%d項系數和指數:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(La,c);
}
printf("輸入Lb的項數:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("輸入Lb第%d項系數和指數:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(Lb,c);
}
printf("La為");
printf("\n");
Print(La);
printf("\n");
printf("Lb為");
printf("\n");
Print(Lb);
printf("\n");
printf("多項式和為");
printf("\n");
AddPolyn(La,Lb,Lc);
Print(Lc);
printf("\n");
printf("多項式差為");
printf("\n");
Plus(La,Lb,Ld);
Print(Ld);
}
給你編好了,你先試試,有問題再問我。
⑷ 多項式的計算:
(1)(2x+3y)(3x-2y)
=6x²-4xy+9xy-6y²
=6x²+5xy-6y²
(2)(x+2)(x+3)-(x+6)(x-1)
=x²+5x+6-(x²+5x-6)
=12
(3)2(x+5)(x-8)-(2x-1)(x+2)
=2(x²-3x-40)-(2x²+3x-2)
=2x²-6x-80-2x²-6x+4
=-12x-76
⑸ 多項式逆運算
0.0022a^3 - 0.4435a^2 - 6.2764a + 6.7177 = 0
系數之和為 0, 必有根是 a = 1
0.0022a^3 - 0.4435a^2 - 6.2764a + 6.7177
= (a-1)(0.0022a^2-0.4413a-6.7177)
= 0.0001(a-1)(22a^2-4413a-67177) = 0
另兩根滿足 22a^2 - 4413a - 67177 = 0
a = [4413±√(4413^2+4*22*67177)]/44
a ≈ 214.806, a ≈ -14.215
⑹ 多項式的運演算法則
1、幾個多項式相加減的法則是:首先把帶減號的多項式中的每個單項式都變號合成一個多項式,然後合並同類項,並按字典排列法寫出結果。
例如:設A=7a²-2ab+b²,B=6a²-ab-b²,C=4a²+3ab+2b²,則A-B+C=A+B′+C,其中B′=-B=-6a²+ab+b²。
即A-B+C=(7a²-2ab+b²)-(6a²-ab-b²)+(4a²+3ab+2b²)=7a²-2ab+b²-6a²+ab+b²+4a²+3ab+2b²=5a²+2ab+4b² 。
2、由多項式乘多項式法則可以得到(a+b)(c+d)=a(c+d)+b(c+d)=ac+ad+bc+bd
上面的運算過程,也可以表示為(a+b)(c+d)=ac+ad+bc+bd,多項式乘以多項式就是利用乘法分配律法則得出的。
(6)多項式倒序相加的計算方法擴展閱讀
1、整式加減計算的一般步驟是:
(1)根據題意列出代數式;
(2)根據去括弧法則去掉括弧;
(3)合並同類項。
不難看出,整式的加減實質上是合並同類項。因此,整式加減的結果還是整式。
2、整式的加減能用豎式計算。計算的步驟是
(1)把一個加式或者被減式按照某一個字母的降冪(或升冪)排列成一行,如果有缺項留出空位;
(2)再把其它加式或者減式寫在它的下面,使同類項對齊;
(3)然後相加或相減 。
⑺ 多項式乘多項式方法
多項式與多項式相乘,先用一個多項式的每一項與另一個多項式的每一項相乘,再把所得的積相加。
由多項式乘多項式法則可以得到(a+b)(c+d)=a(c+d)+b(c+d)=ac+ad+bc+bd
上面的運算過程,也可以表示為(a+b)(c+d)=ac+ad+bc+bd
多項式乘以多項式就是利用乘法分配律法則得出的。
(7)多項式倒序相加的計算方法擴展閱讀:
一、多項式的加法和乘法
有限的單項式之和稱為多項式。不同類的單項式之和表示的多項式,其中系數不為零的單項式的最高次數,稱為此多項式的次數。
多項式的加法,是指多項式中同類項的系數相加,字母保持不變(即合並同類項)。多項式的乘法,是指把一個多項式中的每個單項式與另一個多項式中的每個單項式相乘之後合並同類項。
F上x1,x2,…,xn的多項式全體所成的集合Fx{1,x2,…,xn},對於多項式的加法和乘法成為一個環,是具有單位元素的整環。
域上的多元多項式也有因式分解惟一性定理。
二、相關應用
給出多項式 f∈R[x1,...,xn] 以及一個 R-代數 A。對 (a1,...,an)∈An,我們把 f 中的 xj都換成 aj,得出一個 A 中的元素,記作 f(a1...an)。如此, f 可看作一個由 An 到 A 的函數。
若然 f(a1...an)=0,則 (a1...an) 稱作 f 的根或零點。
例如 f=x^2+1。若然考慮 x 是實數、復數、或矩陣,則 f 會無根、有兩個根、及有無限個根!
例如 f=x-y。若然考慮 x 是實數或復數,則 f 的零點集是所有 (x,x) 的集合,是一個代數曲線。事實上所有代數曲線由此而來。
另外,若所有系數為實數多項式 P(x)有復數根Z,則Z的共軌復數也是根。
若P(x)有n個重疊的根,則 P『(x) 有n-1個重疊根。即若 P(x)=(x-a)^nQ(x),則有 a 是 P』(x)的重疊根且有n-1個。
⑻ 多項式的計算
求的這個多項式,用M表示
則有2(x²-6x-2) - M=3(4x²-7x-5)
M= 2(x²-6x-2)-3(4x²-7x-5)
=(2x²-12x-4)-(12x²-21x-15)
=2x²-11x-4-12x²+21x+15
=-10x²+9x+11
⑼ 倒序相加與等差數列求和的區別
倒序相加是一種求和技巧;等差數列的求和公式是使用倒序相加的方法得到的,是一個結論.