вопрос о полиномиальном умножении - PullRequest
1 голос
/ 23 мая 2010

я знаю, что метод horners для умножения полиномов быстрее, но здесь я не знаю, что здесь происходит, код

public class horner{

  public static  final  int n=10;
  public static  final  int x=7;

  public static void main(String[] args){
    //non fast version
    int a[]=new int[]{1,2,3,4,5,6,7,8,9,10};
    int xi=1;
    int y=a[0];
    for (int i=1;i<n;i++){
      xi=x*xi;
      y=y+a[i]*xi;
    }
    System.out.println(y);
    //fast method
    int y1=a[n-1];
    for (int  i=n-2;i>=0;i--){
      y1=x*y+a[i];
    }

    System.out.println(y1);
  }
}

результат этих двух методов не одинаков результат первого метода

462945547

и результат второго метода

-1054348465

помогите пожалуйста

Ответы [ 2 ]

2 голосов
/ 23 мая 2010

Вы используете y во втором цикле:

y1=x*y+a[i];

Здесь вам пригодится написание двух функций - невозможно будет повторно использовать одну и ту же переменную.

0 голосов
/ 23 мая 2010

Посмотрите на этот цикл:

for (int i=1;i<n;i++){ 
            xi=x*xi; 
            y=y+a[i]*xi; 
        } 

Я думаю, вы должны использовать

for (int i=0;i<n;i++){ 
            xi=x*xi; 
            y=y+a[i]*xi; 
        } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...