正文
c语言多项式函数图像 c语言简单多项式求值
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
用C语言编写多项式相加的程序,下面图中前两个是要相加的多项式 第三个是相加后的结果,求好心人拜托了
#include stdio.h
#include stdlib.h
#include math.h
#define EPS 1E-6
typedef struct item {
double coefficient;
int power;
struct item *next;
} *POLYNOMIAL,*pItem;
POLYNOMIAL Create() { // 创建多项式
pItem head,p;
double coe;
int pwr;
head = p = (pItem)malloc(sizeof(item));
while(1) {
printf("系数 幂次(0 0结束) : ");
scanf("%lf%d",coe,pwr);
if(fabs(coe) = EPS !pwr) break;
p-next = (pItem)malloc(sizeof(item));
p-next-coefficient = coe;
p-next-power = pwr;
p = p-next;
}
p-next = NULL;
return head;
}
void Sort(POLYNOMIAL head) { // 按幂次降排序
pItem pt,q,p = head;
while(p-next) {
q = p-next;
while(q-next) {
if(p-next-power q-next-power) {
pt = p-next;
p-next = q-next;
q-next = p-next-next;
p-next-next = pt;
}
else q = q-next;
}
p = p-next;
}
}
void Show(POLYNOMIAL head) { // 显示多项式
POLYNOMIAL p = head-next;
int flag = 1;
if(p == NULL) return;
while(p) {
if(flag) {
if(fabs(p-coefficient) = EPS) {
if(p-power == 0) printf("%.2lf ",p-coefficient);
else if(p-power == 1) {
if(p-coefficient == 1.0) printf("x ");
else if(p-coefficient == -1.0) printf("-x ");
else printf("%.2lfx ",p-coefficient);
}
else if(p-coefficient == 1.0) printf("x^%d ",p-power);
else if(p-coefficient == -1.0) printf("-x^%d ",p-power);
else printf("%.2lfx^%d ",p-coefficient,p-power);
flag = 0;
}
}
else if(p-coefficient 0.0 fabs(p-coefficient) = EPS) {
if(p-power == 0) printf("+ %.2lf ",p-coefficient);
else if(p-power == 1) {
if(p-coefficient == 1.0) printf("+ x ");
else printf("+ %.2lfx ",p-coefficient);
}
else if(p-coefficient == 1.0) printf("+ x^%d ",p-power);
else printf("+ %.2lfx^%d ",p-coefficient,p-power);
}
else if(p-coefficient 0.0 fabs(p-coefficient) = EPS) {
if(p-power == 0) printf("- %.2lf ",-p-coefficient);
else if(p-power == 1) {
if(p-coefficient == -1.0) printf("- x ");
else printf("- %.2lfx ",-p-coefficient);
}
else if(p-coefficient == -1.0) printf("- x^%d ",p-power);
else printf("- %.2lfx^%d ",-p-coefficient,p-power);
}
p = p-next;
}
printf("\n");
}
double Power(double x,int n) {
double value = 1.0;
int i;
for(i = 0; i n; ++i) value *= x;
return value;
}
double Value(POLYNOMIAL head,double x) { // 多项式求值
POLYNOMIAL p;
double value = 0.0;
for(p = head-next; p; p = p-next)
value += p-coefficient * Power(x,p-power);
return value;
}
POLYNOMIAL Copy(POLYNOMIAL A) {
POLYNOMIAL head,t,p;
head = t = (pItem)malloc(sizeof(item));
for(p = A-next; p; p = p-next) {
t-next = (pItem)malloc(sizeof(item));
t-next-coefficient = p-coefficient;
t-next-power = p-power;
t = t-next;
}
t-next = NULL;
return head;
}
POLYNOMIAL Additive(POLYNOMIAL A, POLYNOMIAL B) { // 多项式相加
POLYNOMIAL head,p,q,t;
head = Copy(A);
for(p = B; p-next; p = p-next) {
q = head;
while(q-next) {
if(p-next-power == q-next-power) {
q-next-coefficient += p-next-coefficient;
if(fabs(q-next-coefficient) = EPS) {
t = q-next;
q-next = t-next;
free(t);
}
break;
}
q = q-next;
}
if(q-next == NULL) {
q-next = (pItem)malloc(sizeof(item));
q-next-coefficient = p-next-coefficient;
q-next-power = p-next-power;
q-next-next = NULL;
}
}
Sort(head);
return head;
}
POLYNOMIAL Subtract(POLYNOMIAL A, POLYNOMIAL B) { // 多项式相减
POLYNOMIAL head,p,q,t;
head = Copy(A);
for(p = B; p-next; p = p-next) {
q = head;
while(q-next) {
if(p-next-power == q-next-power) {
q-next-coefficient -= p-next-coefficient;
if(fabs(q-next-coefficient) = EPS) {
t = q-next;
q-next = t-next;
free(t);
}
break;
}
q = q-next;
}
if(q-next == NULL) {
q-next = (pItem)malloc(sizeof(item));
q-next-coefficient = -p-next-coefficient;
q-next-power = p-next-power;
q-next-next = NULL;
}
}
Sort(head);
return head;
}
POLYNOMIAL Multiplication(POLYNOMIAL A, POLYNOMIAL B) { // 多项式相乘
POLYNOMIAL head,t,p,q;
head = t = (pItem)malloc(sizeof(item));
for(p = A-next; p; p = p-next) { // 完成相乘过程
for(q = B-next; q; q = q-next) {
t-next = (pItem)malloc(sizeof(item));
t-next-coefficient = p-coefficient * q-coefficient;
t-next-power = p-power + q-power;
t = t-next;
}
}
t-next = NULL;
Sort(head); // 排序
p = head;
while(p-next) { // 合并同类项
q = p-next;
while(q-next) {
if(p-next-power == q-next-power) {
p-next-coefficient += q-next-coefficient;
t = q-next;
q-next = t-next;
free(t);
}
else q = q-next;
}
p = p-next;
}
return head;
}
void FreeMemory(POLYNOMIAL head) {
POLYNOMIAL q,p = head;
while(p) {
q = p;
p = q-next;
free(q);
}
}
int main() {
printf("创建多项式A:\n");
POLYNOMIAL A = Create();
Sort(A);
printf("A(x) = ");Show(A);
printf("创建多项式B:\n");
POLYNOMIAL B = Create();
Sort(B);
printf("B(x) = ");Show(B);
POLYNOMIAL C = Additive(A,B);
printf("C(x) = ");Show(C);
POLYNOMIAL D = Subtract(A,B);
printf("D(x) = ");Show(D);
POLYNOMIAL E = Multiplication(A,B);
printf("E(x) = ");Show(E);
printf("A(%.2lf) = %.4lf\n",2.0,Value(A,2.0));
printf("B(%.2lf) = %.4lf\n",2.0,Value(B,2.0));
printf("C(%.2lf) = %.4lf\n",2.0,Value(C,2.0));
printf("D(%.2lf) = %.4lf\n",2.0,Value(D,2.0));
printf("E(%.2lf) = %.4lf\n",2.0,Value(E,2.0));
FreeMemory(A);
FreeMemory(B);
FreeMemory(C);
FreeMemory(D);
FreeMemory(E);
return 0;
}
多项式函数怎么解啊 图像怎么画?
多项式,比如:f(x)
=
p(x)
=
x^3
+
x^2
+
x
+
1
画图:可以取x为一序列,得到对应的f(x)然后描点绘图即可
C语言多项式
#include stdio.h
#define DEGREE_MAX 8
void get_poly(double coeff[], int *degree)
{
int i;
printf("please enter the biggest degree:");
scanf("%d", degree);
for (i = *degree; i = 0; i--) {
printf("enter %d `s Coefficient:", i);
scanf("%lf", coeff[i]);
}
printf("\nyour polynomial is:\n");
for (i = *degree; i = 0; i--) {
printf("%.2lfX^%d%c", coeff[i], i, (i 0?' ' : '\n'));
}
}
double eval_poly(const double coeff[], int degree, double x)
{
int i;
double m = x, ret = 0;
ret += coeff[0];
for (i = 1; i = degree; i++) {
ret += coeff[i]*m;
m *= x;
}
return ret;
}
int main() {
double coeff[DEGREE_MAX],x;
int degree;
get_poly(coeff, degree);
printf("\nplease enter X value:");
scanf("%lf", x);
printf("the answer is %.2lf\n", eval_poly(coeff, degree, x));
return 0;
}
用C语言输出CosX,SinX函数图像的问题,新手求解
把你c语言多项式函数图像的printf("*/n")改为printf("*\n")c语言多项式函数图像,其它的/n也改为\n看看行不行。
#include stdio.h
#include math.h
int main()
{
double y;
double x, m, i;
for(y=1;y=-1;y-=0.1)
{
if(y=0)
{
m=asin(y)*10;
for(x=1;xm;x++)
printf(" ");
printf("+");
for(;x31-m;x++)
printf(" ");
printf("*\n");
}
else
{
m=-1*asin(y)*10;
for(i=0;i32;i++)
printf(" ");
for(x=1;xm;x++)
printf(" ");
printf("_");
for(;x31-m;x++)
printf(" ");
printf("m\n");
m=asin(y)*10;
for(x=1;xm;x++)
printf(" ");
}
}
return 0;
}
如何用c语言画函数图像
用GDI绘图吧,比较简单。绘图的思想是让x以固定的值在区间内持续增长,比如x=0.1,0.2,0.3.....,以计算出的y值来确定y坐标。用线连接所有的点就行了。MoveTo(),LineTo()函数你用得着,具体情况请自行查看MSDN。
多项式函数图像怎么画?
这样说吧,n是最高次方,A是次方前面的倍数。如果n(最高次)是偶数,并且An(最高项系数)0,那么图像左边下降,右边上升c语言多项式函数图像;
如果n是偶数且An0, 那么图像左边上升,右边下降
如果n是奇数且An0, 那么图像从左到右都上升
如果n是奇数且An0, 那么图像从左到右都下降。
还要注意图像从右往左看,奇穿偶不穿,符号看象限。c语言多项式函数图像我也正在找攻略呢,所以自己也不大明白,不知道能不能帮到c语言多项式函数图像你……
关于c语言多项式函数图像和c语言简单多项式求值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。