С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.06.2017
Сообщений: 10

Вычисление частных производных от полинома нескольких переменных по схеме Горнера

16.02.2023, 12:41. Показов 305. Ответов 1

Студворк — интернет-сервис помощи студентам
Пример алгоритма нахождения значения полинома от нескольких переменных в заданной точке:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class Basic_1_2_14 {
 public static void main(String[] args) {
        //Gurner scheme
        int m = 2,n = 3;
        double[] x = new double[m];
        int[][] a = new int[m][n];
        handmadeFill(a,x);
        System.out.print("a = ");print(a, x);
        gurner(a,x);
    }
 
    private static void handmadeFill(int[][] a, double[] x) {
        double[] xt = {2,3};
        int[][] at = {
                {2,5,3},
                {3,1,2}
             };
        for (int i = 0;  i<x.length; i++) {
            x[i] = xt[i];
        }
        for (int i = 0;  i<a.length; i++) {
            for (int j = 0;  j<a[0].length; j++) {
                a[i][j] = at[i][j];
            }
        }
    }
    private static void gurner(int[][] a, double[] x){
        int m = a.length;
        int n = a[0].length-1;
        double[] d = new double[m];
        double[] dy = new double[m];
        double ma = 1,y = 1;
 
        for (int i = 0; i < m; i++) {
            ma *= x[i];
            y *= a[i][n];
        }
 
        int j = 0;
 
        while (j != n) {
            j++;
            int ca = 1;
            for (int i = 0; i < m; i++) {
                ca *= a[i][n-j];
            }
            y = y * ma + ca;
        }
 
        System.out.println("value = " + y);
    }
    private static void print(int[][] a,double[] x) {
        System.out.println();
        for (int i = 0;  i<a.length; i++) {
            for (int j = 0;  j<a[0].length; j++) {
                System.out.print((j!=0?" + ":"") + a[i][j] + "*" + x[i] + "^"+ (a[0].length-j-1)+"");
            }
            System.out.println();
        }
        System.out.println();
    } 
}
Можно ли эту схему доработать для вычисления значений всех частных производных полинома?

Пример реализация нахождения производный для полинома от одной переменной:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 private static void gurner(int[] a, double x){
        int n = a.length - 1, k = 0;
        double y = (double) a[n];
        double dy = 0; //this is the derevative
        //invariant: 0 <= k <= n,
        // y = a[n]*(x in degree k)+...+a(n-1)*(x in degree k-1)+...+
        //     + a(n-k]*(x in degree 0)
        while ( k != n) {
            k++;
            dy = dy*x + y;
            y = y*x + a[n-k];
        }
        System.out.println("Value in the point f(x) = " + y + " " + x);
        System.out.println("Value in the point f'(x)  = " + dy + " " + x);
  }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2023, 12:41
Ответы с готовыми решениями:

Вычисление производных полинома в данной точке по схеме Горнера
Помогите составить программу на паскале для вычисления производных полинома в данной точке по схеме Горнера. Сам в программировании и...

Вычисление полинома по схеме Горнера
Дана вроде бы стандартная задача, на вычисление суммы, но портит ее то, что надо вычислить ее по схеме...

Вычисление полинома по схеме Горнера (исправление ошибки)
Помогите исправить ошибку. При отрицательном x программа считает неправильно. При заданных параметрах ассемблер выдает 995917 ...

1
0 / 0 / 0
Регистрация: 20.06.2017
Сообщений: 10
17.02.2023, 12:29  [ТС]
Предпринял попытку решить, так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
public class Basic_1_2_14 {
    public static void main(String[] args) {
        //Gurner scheme
        int m = 3,n = 4;
        double[] x = new double[m];
        int[][] a = new int[m][n];
        fill(a,x);
        System.out.print("a = ");print(a, x);
        gurner(a,x);
    }
 
    private static void fill(int[][] a, double[] x) {
        for (int i = 0;  i<x.length; i++) {
            x[i] = (Math.random() * 10);
        }
        for (int i = 0;  i<a.length; i++) {
            for (int j = 0;  j<a[0].length; j++) {
                a[i][j] = (int) (Math.random() * 100);
            }
        }
    }
    
    private static void gurner(int[][] sk, double[] sx){
        int m = sk.length;
        int n = sk[0].length;
        double[] x = new double[m];
        double[] a = new double[n];
        double[] y = new double[m];
        double[] dy = new double[m];
 
        //The preparation stage
        for (int j = 0; j < n; j++){
            a[j] = 1;
            for (int i = 0; i < m; i++){
                a[j] *= sk[i][j];
            }
        }
        for (int i = 0; i < m; i++){
            y[i] = 1;y[i] *= a[n-1]*Math.pow(prepareKoef(sx,i),m);
            dy[i] = 0;
            x[i] = sx[i];
        }
 
        for (int i = 0; i < m; i++) {
            int j = 0;
            while (j != n-1) {
                j++;
                dy[i] = dy[i] * x[i] + y[i];
                y[i] = y[i] * x[i] + a[n-j-1] * Math.pow(prepareKoef(sx, i), n-j-1);
            }
        }
 
        for (int i = 0; i < m; i++) {
            System.out.println("The derivative " + (i+1) + " value = " + dy[i]);
        }
    }
 
    private static double prepareKoef(double[] x, int exclude){
        double result = 1;
        for (int i = 0; i < x.length; i++) {
            result *= (i != exclude)?x[i]:1;
        }
        return result;
    }
 
    private static void print(int[][] a,double[] x) {
        for (int j = 0;  j<a[0].length; j++) {
            for (int i = 0;  i<a.length; i++) {
                System.out.print((i!=0?"*(":"(") + a[i][j] + "*" + x[i] + "^"+ (a[0].length-j-1)+")");
            }
            System.out.print((j<a[0].length - 1)?" + ":"");
        }
        System.out.println();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2023, 12:29
Помогаю со студенческими работами здесь

Поиск производных по схеме Горнера
1.Написать функцию вычисления производных многочлена в точке по схеме Горнера. (double horner1(double *poly,int deg, double x0, int...

Вычислить значение полинома по схеме Горнера
ПОМОГИТЕ МОЖАЛУЙСТА,НУЖНО НАПИСАТЬ ПРОГРАММУ: Вычислить: p(x)=a(n)x^n+a(n-1)x^(n-1)+...+a1x+a(o) для x=1.2, n=5, a=(1.3,-0.8, 1.8,...

Деление полинома p(x) на бином (x–α) по схеме Горнера
Помогите составить программу на паскале для деления полинома p (x) на бином (x–α) по схеме Горнера. Сам в программировании и...

Вычисление частных производных
HELP!!! Есть у кого нибудь код для вычисления частных производных на С#

Вычисление частных производных
помогите, проверьте укажите ошибки F(x1,x2) = c0+c1x1+c2x2+c12x1x2+c11x1^2+c22x2^2 мой вариант ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru