С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
-1 / 0 / 0
Регистрация: 05.12.2023
Сообщений: 14
1

Найти произведение двух полиномов

08.03.2024, 09:27. Показов 443. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
3. Найти произведение двух полиномов
Произведение многочленов равно многочлену, членами которого являются произведения каждого члена другого многочлена.

Чтобы найти произведение многочленов, необходимо каждый член одного многочлена умножить на каждый член другого многочлена, а полученные одночлены сложить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2024, 09:27
Ответы с готовыми решениями:

Найти скалярное произведение двух векторов
Найти скалярное произведение двух векторов

Найти произведение двух массивов
Найти произведение двух массивов. |1 2 9| |4 5 8| |1 1 3| |3 6 7| |4 5 7| |3...

Найти скалярное произведение двух массивов А и В
Найти скалярное произведение двух массивов А и В, состоящих из 5 элементов каждый и содержащие...

Найти скалярное произведение двух массивов
Найти скалярное произведение двух массивов А и В, состоящих из 5 элементов каждый и содержащие...

Найти скалярное произведение двух массивов
Найти скалярное произведение двух массивов А и В, состоящих из 5 элементов каждый,...

5
Эксперт по математике/физике
10820 / 7183 / 3899
Регистрация: 14.01.2014
Сообщений: 16,444
09.03.2024, 21:21 2
Цитата Сообщение от Bdsjsjsbsb Посмотреть сообщение
Чтобы найти произведение многочленов, необходимо каждый член одного многочлена умножить на каждый член другого многочлена, а полученные одночлены сложить
А знаете, как складываются одночлены со степенями неизвестной переменной х?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37352 / 20782 / 4277
Регистрация: 12.02.2012
Сообщений: 34,192
Записей в блоге: 14
11.03.2024, 05:15 3
Visual Basic
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
Function polyMult(a1() As Integer, a2() As Integer) As Integer()
Dim r() As Integer
    n1% = UBound(a1)
    n2% = UBound(a2)
    ReDim r(0 To n1% + n2%) As Integer
    For i1% = 0 To n1%
        For i2% = 0 To n2%
            j% = i1% + i2%
            r(j%) = r(j%) + a1(i1%) * a2(i2%)
        Next i2%
    Next i1%
    polyMult = r
End Function
 
Sub main()
Dim a(0 To 2) As Integer
Dim b(0 To 3) As Integer
Dim r() As Integer
 
    a(0) = 1    '3x^2-5x+1
    a(1) = -5
    a(2) = 3
    
    b(0) = 7    '2x^3+3x^2+6x+7
    b(1) = 6
    b(2) = 3
    b(3) = 2
    
    r = polyMult(a, b)  ' 7-29X-6X^2+5X^3-X^4+6X^5
    
    For i% = 0 To 5
        Debug.Print r(i%)
    Next i%
 
End Sub
0
2101 / 674 / 287
Регистрация: 26.03.2022
Сообщений: 1,270
Записей в блоге: 1
11.03.2024, 14:54 4
Visual Basic
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
Option Explicit
Sub MPolinom()
 
Dim P1, n1: P1 = Array(2, 1, -1)         'Коэффициенты при неизвестных по убыванию степеней
Dim P2, n2: P2 = Array(30, 20, -10, -10)    'Коэффициенты при неизвестных по убыванию степеней
Dim i, j, n, sP As String
 
n1 = UBound(P1): n2 = UBound(P2)
n = n1 + n2
 
ReDim P(n)
For i = 0 To n
    P(n) = 0
Next
 
sP = "P1="
For i = 0 To n1
    sP = sP + "(" + CStr(P1(i)) + ")" + IIf(i <> n1, "*x^" + CStr(n1 - i) + "+", vbCr + "*" + vbCr + "P2=")
Next
For i = 0 To n2
    sP = sP + "(" + CStr(P2(i)) + ")" + IIf(i <> n2, "*x^" + CStr(n2 - i) + "+", vbCr + "=" + vbCr + "P1*P2=")
Next
 
For i = 0 To n1
    For j = 0 To n2
        P(n - i - j) = P(n - i - j) + P1(n1 - i) * P2(n2 - j)
    Next
Next
 
For i = 0 To n
    sP = sP + "(" + CStr(P(i)) + ")" + IIf(i <> n, "*x^" + CStr(n - i) + "+", "")
Next
 
MsgBox sP
 
End Sub
1
Модератор
Эксперт MS Access
12091 / 4951 / 791
Регистрация: 07.08.2010
Сообщений: 14,565
Записей в блоге: 4
11.03.2024, 16:29 5
Angry Old Man,
ваш код проверила на двух комплектах данных - нормально
чуть-чуть доработала - перевела в подпрограму
Visual Basic
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
Option Explicit
Dim P1, n1    'Коэффициенты при неизвестных по убыванию степеней
Dim P2, n2    'Коэффициенты при неизвестных по убыванию степеней
Dim i, j, n, sP As String
Sub mm1()
 
P1 = Array(2, 1, -1)         'Коэффициенты при неизвестных по убыванию степеней
P2 = Array(30, 20, -10, -10)    'Коэффициенты при неизвестных по убыванию степеней
Debug.Print "primer1", Join(P1, ","), Join(P2, ",")
 
MPolinom
''primer1       3,-5,1        2,3,6,7
''P1=(3)*x^2+(-5)*x^1+(1)
''*
''P2=(2)*x^3+(3)*x^2+(6)*x^1+(7)
''=
''P1*P2=(6)*x^5+(-1)*x^4+(5)*x^3+(-6)*x^2+(-29)*x^1+(7)
End Sub
''''''''''''''
Sub mm2()
 
P1 = Array(3, -5, 1)         'Коэффициенты при неизвестных по убыванию степеней
P2 = Array(2, 3, 6, 7) 'Коэффициенты при неизвестных по убыванию степеней
Debug.Print "primer2", Join(P1, ","), Join(P2, ",")
 
MPolinom
''primer2       3,-5,1        2,3,6,7
''P1=(3)*x^2+(-5)*x^1+(1)
''*
''P2=(2)*x^3+(3)*x^2+(6)*x^1+(7)
''=
''P1*P2=(6)*x^5+(-1)*x^4+(5)*x^3+(-6)*x^2+(-29)*x^1+(7)
End Sub
 
Sub MPolinom()
  
n1 = UBound(P1): n2 = UBound(P2)
n = n1 + n2
 
ReDim P(n)
For i = 0 To n
    P(n) = 0
Next
 
sP = "P1="
For i = 0 To n1
    sP = sP + "(" + CStr(P1(i)) + ")" + IIf(i <> n1, "*x^" + CStr(n1 - i) + "+", vbCr + "*" + vbCr + "P2=")
Next
For i = 0 To n2
    sP = sP + "(" + CStr(P2(i)) + ")" + IIf(i <> n2, "*x^" + CStr(n2 - i) + "+", vbCr + "=" + vbCr + "P1*P2=")
Next
 
For i = 0 To n1
    For j = 0 To n2
        P(n - i - j) = P(n - i - j) + P1(n1 - i) * P2(n2 - j)
    Next
Next
 
For i = 0 To n
    sP = sP + "(" + CStr(P(i)) + ")" + IIf(i <> n, "*x^" + CStr(n - i) + "+", "")
Next
 
'MsgBox sP
Debug.Print sP
End Sub
1
2101 / 674 / 287
Регистрация: 26.03.2022
Сообщений: 1,270
Записей в блоге: 1
11.03.2024, 17:43 6
Цитата Сообщение от shanemac51 Посмотреть сообщение
перевела в подпрограму
Перевёл в функцию
Visual Basic
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
Option Explicit
Sub MultSub()
    Dim P
    MsgBox Mult(Array(2, 1, -1), Array(30, 20, -10, -10), P), 64, "Test 1"
    MsgBox Mult(Array(-2, -1, 1), Array(-30, -20, 10, 10), P), 64, "Test 2"
    MsgBox Mult(Array(30, 20, -10, -10), Array(2, 1, -1), P), 64, "Test 3"
    MsgBox Mult(Array(1.23), Array(100), P), 64, "Test 4"
End Sub
 
Function Mult(P1, P2, P)
    Dim n1, n2, i, j, n
    n1 = UBound(P1): n2 = UBound(P2): n = n1 + n2
    
    ReDim P(n)
    For i = 0 To n
        P(i) = 0
    Next
    For i = 0 To n1
        For j = 0 To n2
            P(n - i - j) = P(n - i - j) + P1(n1 - i) * P2(n2 - j)
        Next
    Next
    
    Mult = "P1=" + Out(P1) + vbCr + "*" + vbCr + "P2=" + Out(P2) + vbCr + "=" + vbCr + "P1*P2=" + Out(P)
End Function
Function Out(X)
    Dim i, m: m = UBound(X)
    Out = Empty
    For i = 0 To m - 1
        Out = Out + "(" + CStr(X(i)) + ")" + "*x^" + CStr(m - i) + "+"
    Next
    Out = Out + "(" + CStr(X(i)) + ")"
End Function
Возвращаемый массив P может быть использован
0
11.03.2024, 17:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2024, 17:43
Помогаю со студенческими работами здесь

Найти скалярное произведение двух векторов
Образовать два массива А и В, состоящие из 12 чисел. Для векторов А(i) и В(i) найти скалярное...

Найти произведение двух чисел, используя только операцию сложения
Введите два числа (например, А = 5 и В = 8) и найдите их произведение, используя только операцию...

Циклы - надо найти произведение двух чисел, не используя умножения (*)
надо умножить два числа допустим 'а' и 'н' с помошью цикла for не используя знака умножения то...

Найти предел (отношение двух полиномов)
\lim_{x\rightarrow \infty }\frac{{(3x-2)}^{3}}{({x}^{2}+1)(2-x)}

Как найти период двух полиномов?
Как найти период двух полиномов? (x^6 + x^4 + x^2 + x + 1)^2 * (x^3 + x + 1)^5


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru