编程介的小学生 2017-08-12 12:51 采纳率: 20.5%
浏览 879
已采纳

Rational Approximation

Description

A polynomial p(x) of degree n can be used to approximate a function f(x) by setting the coefficients of p(x) to match the first n coefficients of the power series of f(x) (expanded about x = 0). For example,
1/(1-x)≈1 + x + x2 + ... + xn.

Unfortunately, polynomials are "nice" and they do not work well when they are used to approximate functions that behave poorly (e.g. those with singularities). To overcome this problem, we can instead approximate functions by rational functions of the form p(x)/q(x), where p(x) and q(x) are polynomi-als. You have been asked by Approximate Calculation Machinery to solve this problem, so they can incorporate your solution into their approximate calculation software.
Given m, n, and the first m + n coefficients of the power series of f(x), we wish to compute two polynomials p(x) and q(x) of degrees at most m-1 and n-1,respectively, such that the power series expansion of q(x)*f(x)-p(x) has 0 as its first m+n-1 coefficients, and 1 as its coefficient corresponding to the xm+n-1 term. In other words, we want to find p(x) and q(x) such that
q(x)*f(x)-p(x)=xm+n-1+...

where ... contains terms with powers of x higher than m+n-1 From this, f(x) can be approximated by p(x)/q(x).
Background Definitions
A polynomial p(x) of degree n can be written as p0 + p1x + p2x2 + ... + pnxn, where pi's are integers in this problem.
A power series expansion of f(x) about 0 can be written as f0 +f1x+f2x2+... , where fi's are integers in this problem.
Input

The input will consist of multiple cases. Each case will be specified on one line, in the form m n f0 f1 ... fm+n-1where fi is the coefficient of xi in the power series expansion of f. You may assume that
1 <= m, 1 <= n <= 4, 2 <= m + n <= 10, and fi are integers such that |fi| <= 5. The end of input will be indicated by a line containing m = n = 0, and no coefficients for f. You may assume that there is a unique solution for the given input.
Output

For each test case, print two lines of output. Print the polynomial p(x) on the first line, and then q(x) on the second line. The polynomial p(x) should be printed as a list of pairs (pi, i) arranged in ascending order in i, such that pi is a non-zero coecient for the term xi. Each non-zero coecient pi should be printed as a/b, where b > 0 and a/b is the coecient expressed in lowest terms. In addition, if b = 1 then print only a (and omit b). If p(x) = 0, print a line containing only (0,0). Separate the pairs in the list by one space. The polynomial q(x) should be printed in the same manner. Insert a blank line between cases.
Sample Input

2 2 0 0 1 1
4 2 1 2 3 4 5 -2
1 1 2 3
1 4 -5 0 -2 1 -2
0 0
Sample Output

(0,0)
(1,1)

(-4/33,0) (-1/11,1) (-2/33,2) (-1/33,3)
(-4/33,0) (5/33,1)

(2/3,0)
(1/3,0)

(25/6,0)
(-5/6,0) (1/3,2) (-1/6,3)

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-08-26 15:45
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效