繁体   English   中英

如何打印function的计算方法

[英]How to print the calculating method of a function

给出以下问题: https://imgur.com/a/2OpPKfW

编写一个 function polyPrint,它以一种很好的方式打印方程 (1) 的多项式。 例如,如果 a 对应于向量 c(2, 0, 1, -2, 5),则 polyPrint(a) 应该打印:

2 + x^2 + (-2)*x^3 + 5*x^4

注意 polyPrint 应该如何处理 a 的元素为 0、1 或负数的情况!

目前我正在使用循环和猫。 这很粗糙,因为我需要对 1,0 和任何负数的 ifelse 语句做很多例外。

我可以使用其他任何功能来简化此过程吗?

# Regular function
polyFunction <- function(x,a){
  n <- seq(1, length(a))
  sum(ax^(n-1))
}

# Printing the calculation method
a <- c(2,0,1,-2,5)

polyPrint <- function(a){
  n <- seq(1, length(a))
  for(i in n){
    result <- c()
    result <- c(result, cat(a[i],'x^', 1+i, '+ '))
  }
}

polyPrint(a)

预期的 output 是具有以下格式的多项式 function:

p(x) = a0 + a1x + a2x^2 +... + anxn

目前我得到 2 *x^ 2 + 0 *x^ 3 + 1 *x^ 4 + -2 *x^ 5 + 5 *x^ 6 +

与向量 c(2, 0, 1, -2, 5)

我认为您在汇总值的方式以及考虑特殊值(0,1,负值)的方式方面存在错误。 这是一个如何做到这一点的例子(也许不是最好的解决方案,但它可以完成工作):

polyPrint <- function(a){
  formule = NULL
  for(i in 1:length(a))
  {
    if(a[i]==0){}
    else{
      if(i == 1) {formule = a[i]}
      else{
        if(a[i]<0){formule = paste0(formule, " + (",a[i],")x^",i)}
        else{
          if(a[i] == 1){formule = paste0(formule," + x^",i)}
          else{formule = paste0(formule, " + ", a[i],"x^",i)}
        }
      }
    }
  }
  print(formule)
}

结果a <- c(2,0,1,-2,5)

> polyPrint(a)
[1] "2 + x^3 + (-2)x^4 + 5x^5"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM