105.多项式乘法

简介: 105.多项式乘法
#include <stdio.h>
#include <math.h>
#define MAX 50
/* 下面的两个数组可以根据具体要求解的多项式来决定其值*/
static double p[6]={4,-6,3,1,-1,5}; /*表示多项式4x^5 - 6x^4 + 3x^3 + x^2 - x + 5 */
static double q[4]={3,2,-5,1};    /*表示多项式3x^3 + 2x^2 - 5x + 1 */
static double result[9]={0,0,0,0,0,0,0,0,0};    /*存放乘积多项式*/
void npmul(p,m,q,n,s)
int m,n;
double p[],q[],s[];
{
  int i,j;
  for (i=0; i<=m-1; i++)
  for (j=0; j<=n-1; j++)
    s[i+j]=s[i+j]+p[i]*q[j];    /*迭带计算各项系数*/
  return;
}
double compute(s,k,x)         /*计算所给多项式的值*/
double s[];
int k;
float x;
{
  int i;
  float multip = 1;
  double sum = 0;
  for (i=0;i<k;i++)
    multip = multip * x;      /*先求出x的最高次项的值*/
  for (i=k-1;i>=0;i--)
  {
    sum = sum + s[i] * multip;    /*依次从高到低求出相对应次项的值*/
    if (x!=0)
    multip = multip / x;
  }
  return sum;
}
void main()
{
  int i,j,m,n;
  double  px[MAX],qx[MAX],rx[MAX];
  float x;
  clrscr();
  for(i=0;i<MAX;i++)
    rx[i]=0;
  puts("      This is a polynomial multiplication program.");
  puts("It calculate the product of two polynomials: P(x) and Q(x)");
  puts("       P(x)=Pm-1*x^(m-1)+Pm-2*x^(m-2)+...+P1*x+P0");
  puts("       Q(x)=Qn-1*x^(n-1)+Qn-2*x^(n-2)+...+Q1*x+Q0");
  printf("\n >> Please input m (>=1): ");
  scanf("%d",&m);
  printf(" >> Please input P%d, P%d, ... P1, P0 one by one:\n",m-1,m-2);
  for(i=0;i<m;i++)
    scanf("%f",&px[i]);
  printf("\n >> Please input n (>=1): ");
  scanf("%d",&n);
  printf(" >> Please input Q%d, Q%d, ... Q1, Q0 one by one:\n",n-1,n-2);
  for(i=0;i<n;i++)
    scanf("%f",&qx[i]);
  npmul(p,m,q,n,rx);
  printf("\nThe product of two polynomials R(x) is :\n");
  for (i=m+n-1,j=0;i>=1;i--)          /*逐行逐项打印出结果多项式*/
  {
    printf(" (%f*x^%d) + ",rx[m+n-1-i],i-1);
    if(j==2)
    {
      printf("\n");
      j=0;
    }
    else
      j++;
  }
  printf("\n");
  printf("Input the value of x: ");
  scanf("%f",&x);
  printf("\nThe value of the R(%f) is: %13.7f",x,compute(rx,m+n-1,x));
  puts("\n Press any key to quit...");
  getch();
}
相关文章
|
算法 Shell 测试技术
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
|
前端开发 JavaScript 数据可视化
Echarts 折线图完全配置指南 - 手把手教你设置 Echarts 折线图详细教程
Echarts 折线图是图表中最常用的显示形式之一。使用 Echarts 做出基本的折线图很简单,但要是想把多组数据放在一张图表中,展示的漂亮又直观就不容易了。本文将带领大家从最基本的折线图,一步步完善,最终做出可读性很高的可视化图表。 根据本教程在卡拉云中搭建的折线图 Demo,你可以立即注册卡拉云,跟随本教程学习 跟随本教程你将学到 1.折线外观属性 折线增加弧线平滑过渡 折线图变为散状圆点 实线改为虚线 折线指定颜色 增加数据显示 表格外观属...
1990 0
|
SQL 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.5 应用实践之 TPCH性能优化
PolarDB在复杂查询、大数据量计算与分析场景的测试和优化实践.
488 7
|
12月前
|
资源调度 安全 Java
服务中国13亿社保持卡人:金保信与阿里云的“一云多芯”升级之路
在全球科技竞争与自主创新的双重驱动下,中国信息技术产业正加速推进科技创新与产业融合等多维布局,积极应对科技领域“卡脖子”难题,构建技术升级与安全保障体系。 而云平台作为产业发展的核心IT基础设施,也已成为数字化转型和升级的关键支撑。2019年,阿里云基于“开放兼容”的理念率先提出并践行“一云多芯”战略,并通过飞天企业版实现从CPU扩展到GPU、网络设备,以及各类行业生态应用、自建应用的全域兼容能力。
1000 1
|
Linux Shell 调度
使用Linux命令chrt优化任务调度:chrt详解
`chrt`是Linux命令,用于改变进程的调度策略和优先级,支持SCHED_FIFO、SCHED_RR和SCHED_OTHER策略。命令语法:`chrt [options] [priority] [command [arg...]]`。选项包括:`-f`(前台运行)、`-p`(修改已有进程)、`-m`(设置子进程默认值)。例子包括设置命令调度策略和优先级、修改已有进程属性。使用实时策略需谨慎,可能影响系统稳定性,且可能需要root权限。
|
网络协议 网络架构
计算机网络中MSS和MTU的区别
【4月更文挑战第11天】
2632 0
计算机网络中MSS和MTU的区别
|
缓存 算法 前端开发
协同文档工作机制简介
随着在线办公的兴起,传统办公套件 Office 的在线化需求也随之增加。钉钉文档作为钉钉核心办公套件之一,上线已经三年,其间持续迭代,已成为一个极其复杂的产品。对前端工程师而言,协同文档是一个较为有挑战的领域,除了传统天坑富文本编辑器外,还引入了协同编辑这一挑战,钉钉文档甚至还支持专业排版能力。 来自钉钉的前端技术专家本杰,就在第十六届D2前端技术论坛进行了分享,本次分享以钉钉文档为例,简述协同文档的工作机制。
1151 0
协同文档工作机制简介
|
消息中间件 运维 监控
中间件技术选型
【7月更文挑战第7天】
501 6
|
安全 Linux 网络安全
2023年全国职业院校技能大赛信息安全管理与评估-模块二任务书
2023年全国职业院校技能大赛信息安全管理与评估-模块二任务书
|
自然语言处理 搜索推荐 黑灰产治理
天猫超市·享淘卡兑换指南
天猫超市·享淘卡兑换指南