Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 13
1

Рекурсия: вычисление матричного многочлена

17.06.2009, 22:48. Просмотров 1396. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста, с рекурсией.
Дана квадратная матрица A порядка m, натуральное число n, действительные числа pn, pn-1, p0. Найти pn*A^n+pn-1*A^(n-1)+...+p1*A+p0*E. E-единичная матрица порядка m.
Я попыталась что-то написать. Но считает неправильно, и вsdjlbn в ответе либо нули, либо какие-то непонятные числа...

C++
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "locale.h"
const int N=100;
 
void func(int n, int m,int A[N][N], int E[N][N], float p[N])
{
    static int k,i,j;
    static float itog[N][N],g[N][N],h[N][N];
    if(k==n) 
    {
        printf("Результат:\n");
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            printf("%6.2f", itog[i][j]);
            printf("\n");
        }
    }
    else
    {    
        if(k==0)
        {
            k++;
        }
        else
        {
            if (k==1)
            {
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    g[i][j]=p[k-1]*A[i][j];
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    h[i][j]=p[k]*E[i][j];
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                        itog[i][j]=g[i][j]+h[i][j];
                k++;
            }
            else 
            {
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    g[i][j]=itog[i][j]*A[i][j];
                for(i=0;i<m;i++)
                    for(j=0;j<m;j++)
                    h[i][j]=p[k]*E[i][j];
                k++;
            }
        }
        func(n,m,A,E,p);
    }
}
int main()
{ 
    setlocale(LC_ALL,"Russian");
    unsigned int m, n, i, j;
    int E[N][N], A[N][N];
    float p[N];
 
    printf("Введите размерность матрицы А[m][m](от 1 до %d):",N);
    scanf("%d",&m);
    printf("\nВведите элементы матрицы А[m][m]:\n");
    for (i=0; i<m; i++)
        for (j=0; j<m; j++)
        {
            printf("A[%d][%d]=",i,j);
            scanf("%d",&A[i][j]);
        }
    printf("\nВведите n(от 1 до %d):",N);
    scanf("%d",&n);
    printf("\nВведите элементы p n, p n-1, ..., p 0:\n");
    for (i=0; i<=n; i++)
    {
        printf("p%d=",n-i);
        scanf("%f",&p[n]);
    }
 
    for(i;i<m;i++)
    {
        for(j;j<m;j++)
            if(i == j)
            {
                E[i][j]=1;
            }
            else
            {
                E[i][j]=0;
            }
         }
    printf("\n\n");
    func(n,m,A,E,p);
    _getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2009, 22:48
Ответы с готовыми решениями:

Функция: вычисление матричного выражения A + 2B
определить функцию, которая выполняет вычисления следующего выражения: A + 2B, где A, B - матрицы

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

Вычисление значения многочлена
Даны действительные числа s и t, натуральное число n, действительные числа a1,...,an. Среди...

Вычисление значений многочлена по схеме Горнера методом сдваивания
Ребят как задается реккурентное соотношение для функции?, алгоритм вычисления по схеме горнера у...

3
Заказ софта
342 / 187 / 21
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 23:23 2
А что это означает: "+...+" ?

Не по теме:

Стыдно спрашивать, но...

0
Evg
Эксперт CАвтор FAQ
21121 / 8137 / 628
Регистрация: 30.03.2009
Сообщений: 22,455
Записей в блоге: 30
17.06.2009, 23:44 3
И что такое A^n
0
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 13
18.06.2009, 09:04  [ТС] 4
+...+-это значит что между pn*A^n+pn-1*A^(n-1) и p1*A+p0*E есть ещё сколько-то элементов.
A^n-это матрица в степени n.
И считать надо по формуле. Например, если n=3, то ((p3+A+p2*E)*A+p1*E)*A+p0*E.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2009, 09:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Рекурсия: вычисление факториала
Здравствуйте! помогите плиз новичку!!! Нужно вычислить факториал числа, полное условие задачки...

Рекурсия: вычисление выражения
Всем доброго времени суток! Прошу Вашей помощи! Задание такого: Вычислить, используя рекурсию,...

Рекурсия: вычисление НОД
Даны натуральные числа n,m; найти НОД(n,m). Использовать программу, включающую рекурсивную...

Рекурсия: вычисление n-го члена последовательности
Требуется разработать рекурсивную функцию, возвращающую значение для вычисления n-го члена...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.