Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16

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

23.12.2014, 16:39. Показов 4415. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу отладить код
Все исходные данные, используемые для нахождения главной формулы формата Double, при выполнении нижеприведенного цикла результат так и не находится. Элемент U появляется в окне Workspace, но он форматом function_handle. Что я делаю не так?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
for I=1:54
t=0;
U(I,1)= 0;
U(I,2)= 0;
for J = 2:10
if rem(I,3)~=0
q=sin(7*I*t);
else
q = 0;
U(I,J)=inv(M(I,I)) * (-M(I,I) * q - K(I,I) * U(I,J-1)) * t*t + E(I) * (2*U(I, J-1) - U(I, J-2));
t= t + 0.001;
end;
end;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2014, 16:39
Ответы с готовыми решениями:

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

Расчет элементов матрицы по формуле
Помогите написать программу для расчета матрицы А. Не знаю как( Вот формула {a}_{i,j}=( {i}^{-3} )* ({2}^{i}...

Расчет элементов квадратной матрицы
Помогите пожалуйста составить программу для расчета элементов квадратной матрицы A(n,n): {a}_{ij}=\frac{{(2i+3j)}^{2}}{\sqrt{i+j+5}}

26
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
23.12.2014, 17:22
может так?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clear, clc
 
M = rand(54);
K = rand(54);
E = @(t) 1;
for I=1:54
    t=0;
    U(I,1)= 0;
    U(I,2)= 0;
    for J = 3:10
        if rem(I,3)~=0
            q=sin(7*I*t);
        else
            q = 0;
        end;
        U(I,J)=inv(M(I,I)) * (-M(I,I) * q - K(I,I) * U(I,J-1)) * t*t + E(I) * (2*U(I, J-1) - U(I, J-2));
        t= t + 0.001;    
    end;
end
surf(U)
1
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
24.12.2014, 08:35  [ТС]


Добавлено через 24 секунды
Спасибо огромное!! Помогло!!
А вот еще в эту формулу можно вставить, чтобы кроме значения K(I,I) можно было считать K(I,I+3) и K(I,I-3)?

Добавлено через 10 часов 42 минуты
потому что тут нужно считать не только значения главной диагонали, но и еще по двум диагоналям - сверху и снизу от главной(ленточная матрица). Так же нужно, чтобы эти значения продолжили сохранятся в матрицу U в том же порядке, как и идут элементы в матрице К

Можно ли в эту формулу вставить, чтобы кроме значения K(I,I) можно было считать K(I,I+3) и K(I,I-3)?

потому что тут нужно считать не только значения главной диагонали, но и еще по двум диагоналям - сверху и снизу от главной(ленточная матрица). Так же нужно, чтобы эти значения продолжили сохранятся в матрицу U в том же порядке, как и идут элементы в матрице К

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
M = rand(54,54);
K = rand(54,54);
E = eye (54,54);
for I=1:54
    t=0;
    U(I,1)= 0;
    U(I,2)= 0;
    for J = 3:10000
        if rem(I,3)~=0
            q=sin(7*I*t);
        else
            q = 0;
        end;
        U(I,J)=inv(M(I,I)) * (-M(I,I) * q - K(I,I) * U(I,J-1)) * t*t + E(I,I) * (2*U(I, J-1) - U(I, J-2));
        t= t + 0.001;    
    end;
end
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.12.2014, 15:24
Цитата Сообщение от Маленький Лунат Посмотреть сообщение
кроме значения K(I,I) можно было считать K(I,I+3) и K(I,I-3)?
т.е. чтобы после конечного значения появлялось первое, второе и т.д.?
Как тебе такой вариант?
Matlab M
K(mod(I-1,size(K,1))+1, mod(I-1,size(K,2))+1)
вот это безумие: mod(I-1,size(K,1))+1 создает циклическую нумерацию, где I - текущий индекс, size(K,1) - размер массива (единички нужны, т.к. нумерация элементов начинается с 1)
Matlab M
>> N = 10; % длинна массива
>> k = -5:13 % линейные индексы 
 
k =
    -5    -4    -3    -2    -1     0     1     2     3     4     5     6     7     8     9    10    11    12    13
 
>> idx = mod(k-1,N)+1 % циклические индексы
 
idx =
     5     6     7     8     9    10     1     2     3     4     5     6     7     8     9    10     1     2     3
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
24.12.2014, 16:17  [ТС]
не совсем это
мне нужно, чтобы все считалось по порядку
т.е., сначала по текущей формуле, а затем, если попадается элемент с диагонали (I,I+3) или (I,I-3), просчитывать ту же формулу, но с матрицей К, с данными индексами
а потом, при переходе снова на главную диагональ - снова брались индексы с главной
..в общем, мне нужно, чтобы элементы матрицы(именно матрицы)К все просчитывались в этой формуле, а не только главная диагональ..
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.12.2014, 16:22
я не понимаю

*если у тебя I=1, или I=54, то I-3=-2 или I+3=57 вылезут за пределы матрицы.
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
24.12.2014, 16:46  [ТС]
I+3 и I-3 отвечают у меня за индексацию столбцов
вот так примерно выглядит матрица К (только 54*54)
1 0 0 1 0 0 0 0 0
0 1 0 0 1 0 0 0 0
0 0 1 0 0 1 0 0 0
1 0 0 1 0 0 1 0 0
0 1 0 0 1 0 0 1 0
0 0 1 0 0 1 0 0 1
на месте единичек стоят элементы, которые тоже нужно учитывать в формуле..
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.12.2014, 17:03
Ну хорошо, учитывай, я разрешаю
*просто я не могу понять в чем трудность?
**еще можно использовать команду diag (описание) которая вытягивает диагональ (главную или побочную) из матрицы
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
24.12.2014, 17:50  [ТС]
в том, что они не учитываются
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.12.2014, 18:02
и ты не знаешь как они должны учитываться?
у тебя хоть формулы/задание есть какие-то? или ты просто с числами играешься?
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
24.12.2014, 19:09  [ТС]
знаю конечно
все по очереди должны в формулу подставляться, просто я не могу дополнительный цикл сделать для столбцов в матрице К
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.12.2014, 20:44
Цитата Сообщение от Маленький Лунат Посмотреть сообщение
знаю конечно
а я не знаю, поэтому и не могу тебе помочь
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
25.12.2014, 08:10  [ТС]
С твоего позволения расскажу условие
Мне даны двумерные матрицы К, М и Е и формула:
U(t+1)=M-1 * (-M * q(t) - K * U(t)) * t2 + E * (2*U(t) - U(t-1))
Матрица М - диагональная, матрицу К я приводила вчера(ленточная), Е - единичная матрица, все размером 54*54.
q - вектор из 54 элементов = ( sin(7*i*t)
0
0 ) и такая последовательность 18 раз (всего 54 элемента).
Переменная t меняется от 0 до 10 с шагом 0,001
В формуле элементы постепенно заменяют друг друга. Сначала U(t-1)=0, U(t)=0. После увеличения t, U(t-1)=U(t),U(t)=U(t+1) и так далее.
В результате мне нужно получить матрицу U размером 54*10000.
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.12.2014, 15:47
Лучший ответ Сообщение было отмечено Маленький Лунат как решение

Решение

Вооо! с этого и надо было начинать
гляди, что получается
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
clear, clc
 
M = 5+rand(54);
K = diag(2*ones(1,54))+diag(ones(1,51),3)+diag(ones(1,51),-3);
E = eye(54);
 
n = 1e4; 
U = zeros(54,n); % заготовка из нулей
t = 0:0.001:(n-1)*0.001; % массив времени
for i = 2:n-1 
        q = repmat([sin(7*i*t(i));0;0],18,1); % повторяем вектор 18 раз
        U(:,i+1) = inv(M)*(-M*q - K*U(:,i))*t(i)^2 + E*(2*U(:,i) - U(:,i-1));
end
*правда при таких М, К значения U улетают в бесконечность
1
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
25.12.2014, 16:09  [ТС]
Сенсей!!
Только я не совсем поняла - что значит уходит в бесконечность?
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.12.2014, 16:22
Если построить: plot(t,U) то видно, что на краю значения вылетают за пределы возможного
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
29.12.2014, 13:01  [ТС]
а можно ли,чтобы матрицы умножались поэлементно? когда я так пишу - выдается сообщения, что размеры матриц должны совпадать. Я хотела попробовать поэлементно, потому что получается неверный результат. Кроме того, считаются только первые 480 столбцов, остальные - Nan
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
31.12.2014, 16:58
Цитата Сообщение от Маленький Лунат Посмотреть сообщение
а можно ли,чтобы матрицы умножались поэлементно? когда я так пишу - выдается сообщения, что размеры матриц должны совпадать.
поэлементно тут нельзя, т.к. обратная матрица не посчитается. А почему у меня ошибки не возникает?
Цитата Сообщение от Маленький Лунат Посмотреть сообщение
Кроме того, считаются только первые 480 столбцов, остальные - Nan
это то, что я говорил ранее:
Цитата Сообщение от Зосима Посмотреть сообщение
значения вылетают за пределы возможного
Можешь выложить свои данные (в архиве наример)?
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
05.01.2015, 19:07  [ТС]
да, про Nan я не сразу заметила, дело в том, что результаты должны идти без нулей..сплошным массивом, т.е., я думаю, матрицы должны перемножаться поэлементно..архив приложенperem.rar
0
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
07.01.2015, 19:50  [ТС]
Зосима, нет вариантов, в которых значения не будут улетать?

Ребята, может кто-нибудь помочь, пожалуйста?!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2015, 19:50
Помогаю со студенческими работами здесь

Расчет элементов квадратной матрицы по формуле
Разработать программу решения четырех взаимосвязанных задач частой работы: 1) расчета элементов квадратной матрицы A = (ai,j ), i,j =...

Расчет суммы элементов матрицы (TStringGrid)
Добрый вечер Помогите разработать программу в среде Lazarus Вообще не шарю в ней, а надо сдать лабораторную Буду очень признателен,...

Расчет основных диагональных элементов матрицы
Для расчета основных диагональных элементов матрицы в C::подскашите где ошипка::#include<conio.h> #include<math.h> ...

Расчет элементов квадратной матрицы по заданной формуле
Нужно написать программу - расчет элементов квадратной матрицы A = (aij), i,j – 1,2,…,n по заданной формуле a(i,j)=корень i+j

расчет разности элементов матрицы с определенным шагом
Дается матрица, нужно посчитать разность элементов с определенным шагом, например от второго элемента отнять первый, от 3 отнять 2 и т.д....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru