多项式与连分式函数的计算

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "ComplexNumber.h"
#include "Multinomial.h"

//复系数多项式求值
void ncply(double ar[], double ai[], int n, double x, double y, double *u, double *v)
{
 int i;
 double p,q,s,t;
 s=ar[n-1];
 t=ai[n-1];
 for (i=n-2; i>=0; i--)
 {
  ocmul(s,t,x,y,&p,&q);
  s=p+ar[i];
  t=q+ai[i];
 }
 *u=s;
 *v=t;
 return;
}


//一维多项式多组求值
void nplys(double a[], int n, double x[], int m, double p[])
{
 int i,j,mm,nn,ll,t,s,kk,k;
 double *b,y,z;
 b=(double *)malloc(2*n*sizeof(double));
 y=a[n-1];
 for (i=0; i<=n-1; i++) b[i]=a[i]/y;
 k=log(n-0.5)/log(2.0)+1;
 nn=1;
 for (i=0; i<=k-1; i++) nn=2*nn;
 for (i=n; i<nn-1; i++) b[i]=0.0;
 b[nn-1]=1.0;
 t=nn;
 s=1;
 for (i=1; i<=k-1; i++)
 {
  t=t/2;
  mm=-t;
  for (j=1; j<=s; j++)
  {
   mm=mm+t+t;
   b[mm-1]=b[mm-1]-1.0;
   for (kk=2; kk<=t; kk++)
    b[mm-kk]=b[mm-kk]-b[mm-1]*b[mm+t-kk];
  }
  s=s+s;
 }
 for (kk=1; kk<=m; kk++)
 {
  for (i=0; i<=(nn-2)/2; i++)
   a[i]=x[kk-1]+b[2*i];
  mm=1;
  z=x[kk-1];
  for (i=1; i<=k-1; i++)
  {
   mm=mm+mm;
   ll=mm+mm;
   z=z*z;
   for (j=0; j<=nn-1; j=j+ll)
    a[j/2]=a[j/2]+a[(j+mm)/2]*(z+b[j+mm-1]);
  }
  z=z*z/x[kk-1];
  if (nn!=n) a[0]=a[0]-z;
  p[kk-1]=a[0]*y;
 }
 return;
}


//复系数多项式相乘
void ncmul(double pr[], double pi[], int m, double qr[], double qi[], int n, double sr[], double si[], int k)
{
 int i,j;
 double a,b,c,d,u,v;
 for (i=0; i<=k-1; i++)
 {
  sr[i]=0.0;
  si[i]=0.0;
 }
 for (i=0; i<=m-1; i++)
  for (j=0; j<=n-1; j++)
  {
   a=pr[i];
   b=pi[i];
   c=qr[j];
   d=qi[j];
   ocmul(a,b,c,d,&u,&v);
   sr[i+j]=sr[i+j]+u;
   si[i+j]=si[i+j]+v;
  }
 return;
}


//多项式相乘
void npmul(double p[], int m, double q[], int n, double s[], int k)
{
 int i,j;
 for (i=0; i<=k-1; i++) s[i]=0.0;
 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;
}


//多项式相除
void npdiv(double p[], int m, double q[], int n, double s[], int k, double r[], int l)
{
 int i,j,mm,ll;
 for (i=0; i<=k-1; i++) s[i]=0.0;
 if (q[n-1]+1.0==1.0) return;
 ll=m-1;
 for (i=k; i>=1; i--)
 {
  s[i-1]=p[ll]/q[n-1];
  mm=ll;
  for (j=1; j<=n-1; j++)
  {
   p[mm-1]=p[mm-1]-s[i-1]*q[n-j-1];
   mm=mm-1;
  }
  ll=ll-1;
 }
 for (i=0; i<=l-1; i++) r[i]=p[i];
 return;
}


//复系数多项式相除
void ncdiv(double pr[], double pi[], int m, double qr[], double qi[], int n, double sr[], double si[], int k, \
     double rr[], double ri[], int l)
{
 int i,j,mm,ll;
 double a,b,c,d,u,v;
 for (i=0; i<=k-1; i++)
 {
  sr[i]=0.0;
  si[i]=0.0;
 }
 d=qr[n-1]*qr[n-1]+qi[n-1]*qi[n-1];
 if (d+1.0==1.0) return;
 ll=m-1;
 for (i=k; i>=1; i--)
 {
  a=pr[ll];
  b=pi[ll];
  c=qr[n-1];
  d=qi[n-1];
  ocdiv(a,b,c,d,&u,&v);
  sr[i-1]=u;
  si[i-1]=v;
  mm=ll;
  for (j=1; j<=n-1; j++)
  {
   a=sr[i-1];
   b=si[i-1];
   c=qr[n-j-1];
   d=qi[n-j-1];
   ocmul(a,b,c,d,&u,&v);
   pr[mm-1]=pr[mm-1]-u;
   pi[mm-1]=pi[mm-1]-v;
   mm=mm-1;
  }
  ll=ll-1;
 }
 for (i=0; i<=l-1; i++)
 {
  rr[i]=pr[i];
  ri[i]=pi[i];
 }
 return;
}


//一维多项式求值
double nplyv(double a[], int n, double x)
{
 int i;
 double u;
 u=a[n-1];
 for (i=n-2; i>=0; i--)
  u=u*x+a[i];
 return(u);
}


//函数连分式的计算
double nfpqv(double x[], double b[], int n, double t)
{
 int k;
 double u;
 u=b[n-1];
 for (k=n-2; k>=0; k--)
 {
  if (fabs(u)+1.0==1.0)
   u=1.0e+35*(t-x[k])/fabs(t-x[k]);
  else
   u=b[k]+(t-x[k])/u;
 }
 return(u);
}


//二维多项式求值
double nbply(double a[], int m, int n, double x, double y)
{
 int i,j;
 double u,s,xx;
 u=0.0;
 xx=1.0;
 for (i=0; i<=m-1; i++)
 {
  s=a[i*n+n-1]*xx;
  for (j=n-2; j>=0; j--)
   s=s*y+a[i*n+j]*xx;
  u=u+s;
  xx=xx*x;
 }
 return(u);

}

                                 ----根据《C语言常用算法程序集》整理

 

投票>

转载于:https://my.oschina.net/RapidBird/blog/3424

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多项式与连分式函数的计算 的相关文章

  • 今天是 Java 诞生日,Java 24 岁了!

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 今天是 Java 诞生日 xff0c Java 今年 24 岁了 xff0c 比栈长还年轻 还有得搞 xff0c 别慌 xff01 作为一名Java语言的学习者 xff0c
  • [原创]求两个经纬度之间的距离

    经常要根据两个经纬度值 求它们之间的距离 delphi实现代码 xff1a 求两个经纬度之间的距离 function Distince const lon1 lat1 lon2 lat2 double double var alpha1 a
  • cmake的命令execute_process

    execute process COMMAND lt cmd1 gt args1 COMMAND lt cmd2 gt args2 WORKING DIRECTORY lt directory gt TIMEOUT lt seconds g
  • php 输出数组内容_php数组怎么输出

    PHP数组的输出方式有两种 xff1a print r 函数和var dump 函数 1 print r 利用 print r 函数可以打印输出整个数组内容及结构 xff0c 按照一定格式显示键和元素 注意 print r 函数不仅是只用于
  • VNC常用操作及常见问题解决办法汇总

    VNC登录用户缺省是root xff0c 但在安装oracle时必须用oracle用户的身份登录 xff0c 下面我们就以oracle为例说明如何配置VNC xff0c 从而可以使用不同的用户登录到主机 步骤描述如下 xff1a 步骤一 x
  • Xsens 在ROS环境下读取数据

    Xsens 在ROS环境下读取数据 1 Xsens 参数配置2 Xsens ROS环境下读取数据2 1 安装ROS二进制包2 2 Xsens修改rule文件2 3 启动节点 参考资料 1 Xsens 参数配置 软件可以在官网上进行下载 1
  • 交换机***查询篇

    如何确定 类型 当设备遭受 时 xff0c 通常伴随着如下现象 xff1a 用户无法获取ARP 用户上线成功率较低 用户无法访问网络 l严重时可能导致设备上所有用户都无法正常访问网络 当大量用户或固定某个端口下的所有用户出现上述现象时 xf
  • tomcat部署war包访问显示404

    在eclipse导出的maven项目war包 xff0c 放到tomcat下启动 xff0c 顺利启动且无报错 xff0c 但是浏览器访问该项目时显示404 原因 xff1a 未在server xml中配置这几个项目 xff0c 导致服务器
  • Pycharm: 代码跳转如何回退 (小技巧)

    背景 玩Python已经有段时间了 一般都是通过vim和Pycharm来开发 真心觉得这两个是神器 Vim神器暂且不说 今天来分享Pycharm的一个小技巧 用Pycharm的童鞋都知道 它有个跳转的功能 可以让我们在想深入了解某个函数 库
  • 最近沉迷美女图片无法自拔,所以我决定用PHP扒海量妹子图

    为什么80 的码农都做不了架构师 xff1f gt gt gt 学习PHP 43 MySQL制作WEB应用有一阵子了 xff0c 没有上过学所以只能学习到CURD的地步 最近对国产美女图片 私房写真特别感兴趣 xff0c 什么周妍希 刘飞儿
  • elementui的loading啊。。。踩坑了。。。

    为什么80 的码农都做不了架构师 xff1f gt gt gt 总结如下 xff1a 1 elementui的loading其实是fullscreen才是全局唯一 xff0c 不然会Loading service一次创建一次实例 2 ele
  • a padding to disable MSIE and Chrome friendly error page 填充禁用MSIE铬友好的错误页面

    一个网页在用户登录后 xff0c 应该自动刷新后 xff0c 显示登录用户信息 xff0c 但是没有自动刷新反而报错 xff0c 手动刷新后显示正常 显示如下 xff1a 检查代码 xff1a 可能原因 xff1a 文件读写权限 权限和用户
  • 边缘检测:Canny算子,Sobel算子,Laplace算子

    1 canny算子 Canny边缘检测算子是John F Canny于 1986 年开发出来的一个多级边缘检测 算法 更为重要的是 Canny 创立了边缘检测计算理论 xff08 Computational theory ofedge de
  • ProtocolException : 已超过传入消息(65536)的最大消息大小配额。

    SilverLight调用WCF xff0c 提交的是一个List lt Linq2SqlEntity gt xff1b 当List中数据量不大的时候 xff0c 不会报错 xff1b 当数据量稍微大一点儿 xff0c 就会出现这个错误 发
  • 最简单的限制edit输入

    procedure TForm1 Edt NumKeyPress Sender TObject var Key Char begin If not key in 48 57 then begin key 61 0 ShowMessage 3
  • 构建安全的数据访问-异常管理(八)

    异常条件可能会由配置错误 代码中的错误或恶意输入引起 如果没有正确的异常管理 xff0c 这些条件可能会透露有关数据源位置和特性的敏感信息 xff0c 以及有价值的连接详细信息 下面的建议适用于数据访问代码 xff1a 捕获和记录 ADO
  • 开源自主导航小车MickX4(四)底盘URDF模型

    开源自主导航小车MickX4 xff08 四 xff09 底盘URDF模型 1 底盘URDF模型1 1 URFD语法1 2 基于URDF语法绘制机器人1 3 URDF文件加载stl模型 2 绘制机器人URDF模型参考资料 1 底盘URDF模
  • 中国移动5G测试路线图

    中国移动通信研究院首席科学家易芝玲博士表示 xff0c 中国移动5G技术更新的目标是实现提供高分辨率视频的传输 xff0c 2020年中国移动将推出真正的5G商用服务 谈到中国移动目前5G测试的进展 xff0c 易芝玲介绍说 xff0c 中
  • sphinx+reStructuredText制作文档

    1 spinx简介 Sphinx 是一种文档工具 xff0c 它可以令人轻松的撰写出清晰且优美的文档 由 Georg Brandl 在BSD 许可证下开发 新版的Python文档 就是由Sphinx生成的 xff0c 并且它已成为Pytho
  • C\C++程序员面试宝典---持续整理

    1 C 43 43 中有哪几种基本数据类型 C 43 43 中的基础数据类型分为3种 xff1a 整数型 xff0c 浮点型 xff0c void型 转载于 https www cnblogs com yangyuqing p 103741

随机推荐