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

Написать цикл, в результате которого получится массив, содержащий символьные переменные

07.04.2013, 17:02. Показов 6047. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! помогите пожалуйста написать цикл, в результате которого получится массив содержащий символьные переменные: y1, y2, y3,...,ym. Число переменное m, поэтому без цикла не спраться с созданием этого массива. Буду очень благодарен за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2013, 17:02
Ответы с готовыми решениями:

Что получится в результате выполнения операторов?
Что получится в результате выполнения операторов: а)write('A':3,2:1); writeln(5*3.2);...

Что получится в результате выполнения программы?
Что получится в результате выполнения программы? Program Variant2; Const n=10; Type...

Что получится в результате выполнения программы?
Опишите, что получится в результате выполнения программы? Program Variant3; Const n=17; Var B:...

Выяснить, что получится в результате выполнения программы
Опишите, что получится в результате выполнения программы? Program Variant3; Const n=17; Var B:...

16
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
07.04.2013, 17:19 2
Цитата Сообщение от Gri1991 Посмотреть сообщение
Число переменное m, поэтому без цикла не спраться с созданием этого массива.
Я когда то тоже так думал)) А потом в хелпе нашел конструкцию типа такой:
Matlab M
1
2
m = 10;
y = sym('y', [1,m]);
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 17:33  [ТС] 3
гм, у меня этот кусок не запускается, пишет:
??? Error using ==> error
Formatted arguments cannot be non-scalar numeric matrices.

Error in ==> sym.sym>assumptions at 2180
error('symbolic:sym:sym:errmsg1','Second argument %s not
recognized.',a);

Error in ==> sym.sym>tomupad at 2148
assumptions(S,x,a);

Error in ==> sym.sym>sym.sym at 114
S.s = tomupad(x,a);
Кроме того, мне-то надо, что бы содержание массива было y1, y2....y10
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
07.04.2013, 17:42 4
хм... Интересно. А какая версия Matlab?
Что должно получится смотри здесь (где то со средины страницы и далее)
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 17:45  [ТС] 5
Версия 7.9.0 (R2009b)
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
07.04.2013, 17:56 6
Gri1991, а Вы мне можете сбросить страничку Help`а в формате pdf (там внизу кнопка должна быть) с функцией sym для Вашей версии Matlab?
А то в интернете найти документацию на старые версии проблематично((
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 18:11  [ТС] 7
а куда выложить эту страничку?
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
07.04.2013, 18:17 8
Дык на форум, в прикрепленные файлы (жми "Расширенный режим")
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 18:35  [ТС] 9
sym
Symbolic numbers, variables, and objects
Syntax
S = sym(A)
x = sym('x')
x = sym('x', 'real')
k = sym('k', 'positive')
x = sym('x', 'clear')
S = sym(A, flag)
Description
S = sym(A) constructs an object S, of class 'sym', from A. If the input argument is a string, the result is a symbolic number or variable. If the input argument is a numeric scalar or matrix, the result is a symbolic representation of the given numeric values.
x = sym('x') creates the symbolic variable with name 'x' and stores the result in x.
x = sym('x', 'real') also assumes that x is real, so that conj(x) is equal to x. alpha = sym('alpha') and r = sym('Rho','real') are other examples.
Similarly, k = sym('k', 'positive') makes k a positive (real) variable.
x = sym('x', 'clear') makes x a purely formal variable with no additional properties (i.e., ensures that x is neither real nor positive). See also the reference pages on syms. For compatibility with previous versions of the software, x = sym('x','unreal') has exactly the same effect as x = sym('x','clear').
Statements like pi = sym('pi') and delta = sym('1/10') create symbolic numbers that avoid the floating-point approximations inherent in the values of pi and 1/10. The pi created in this way temporarily replaces the built-in numeric function with the same name.
S = sym(A, flag) where flag is one of 'r', 'd', 'e', or 'f', converts a numeric scalar or matrix to symbolic form. The technique for converting floating-point numbers is specified by the optional second argument, which can be 'f', 'r', 'e' or 'd'. The default is 'r'.
'f' stands for "floating-point." All values are represented in the form N*2^e or -N*2^e , where N and e are integers, N ≥ 0. For example, sym(1/10,'f') is 3602879701896397/36028797018963968 .
'r' stands for "rational." Floating-point numbers obtained by evaluating expressions of the form p/q, p*pi/q, sqrt(p), 2^q, and 10^q for modest sized integers p and q are converted to the corresponding symbolic form. This effectively compensates for the roundoff error involved in the original evaluation, but may not represent the floating-point value precisely. If no simple rational approximation can be found, an expression of the form p*2^q with large integers p and q reproduces the floating-point value exactly. For example, sym(4/3,'r') is '4/3', but sym(1+sqrt(5),'r') is 7286977268806824*2^(-51).
'e' stands for "estimate error." The 'r' form is supplemented by a term involving the variable 'eps', which estimates the difference between the theoretical rational expression and its actual floating-point value. For example, sym(3*pi/4,'e') is 3*pi/4*(1+3143276*eps/65).
'd' stands for "decimal." The number of digits is taken from the current setting of digits used by vpa. Fewer than 16 digits loses some accuracy, while more than 16 digits may not be warranted. For example, with digits(10), sym(4/3,'d') is 1.333333333, while with digits digits(20), sym(4/3,'d') is 1.3333333333333332593, which does not end in a string of 3s, but is an accurate decimal representation of the floating-point number nearest to 4/3.
See Also
digits, double, findsym, reset, syms, symvar
eps in the online MATLAB Function Reference
В общем, так кинул, не могу найти эту кнопку. похоже, такой функции в нем нет вообще. а где матлаб новый можно скачать?? ссылочку пожалуйста..
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
07.04.2013, 20:17 10
Ну форум у нас цивильный так что только оффсайт. Смотри внимательно, если в Help функции sym нету строк Create the 3-by-4 symbolic matrix A with the auto-generated elements A1_1, ..., A3_4 :
то можно и цикл написать.
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 20:52  [ТС] 11
дак я не против цикла, но возникает вопрос - как его организовать в плане того, что можно менять номер в названии переменной или саму переменную (то есть y1, y1.. или a, b,c). В новой версии есть как вижу оператор %: 'a%n', где n - счетчик переменной например, но вот беда -
Matlab M
1
2
3
for n=1:m 
  z(n)='a%n';
end
Но он не катит....
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
07.04.2013, 21:23 12
Хватило ума только на это:
Matlab M
1
2
3
4
5
6
7
clc; close all; clear all;
n = 9;
x = cell(1,n);
for k = 1:n
    x{k}(1) = 'x';
    x{k}(2) = num2str(k);
end
Конструкция работает до 9ти переменных. На досуге еще подумаю.
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 21:47  [ТС] 13
спасибо большое! я доработал под свои нужды этот кусок:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clc; close all; clear all;
n = 9;
x = cell(1,n);
for k = 1:n
    x{k}(1) = 'x';
    x{k}(2) = num2str(k);
end
for t=1:n
    z(1,t)=sym(x(1,t));
end
for t=1:n
 su(t)=z(1,t)*t+3;
end
f=jacobian(su,z)
и теперь он как надо) конечно, в том, что я делаю будет немного по-другому, но главное - смысл))
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 6
13.03.2019, 11:58 14
Полезно и интересно. Но у меня к этой задаче есть вопрос/продолжение.
Скажем, мне нужен символьный массив типа dy(i) = i * t + 5.
Создать его просто - тут вопросов нет, спасибо большое R2D2

Однако, если я хочу запихнуть данный массив в решать ОДУ, как поступить?
Т.е. что я хочу: [t, y]=ode45(@(t, y) dy(i), tmesh, y0);

Но в таком случае матлаб ругается, и понятно почему - массив dy символьный, а в оде45 нужно выражение типа float или double. Как быть?
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
13.03.2019, 12:14 15
Tanuior, для начала Вам надо взять функцию для символьного решения ОДУ - dsolve...
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 6
13.03.2019, 14:41 16
R2D2, да, может помочь... Судя по хелпу она умеет решать системы ДУ.
Еще не пробовал, а самосогласованные системы она возьмет? Имею в виду системы вида:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{d}{dt}\vec{y(t)}=b*\vec{y(t)}*sin\omega t + f, где https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{y(t)}=( {y}_{1}, {y}_{2}, ..., {y}_{n} ), а b - некоторая весовая матрица, в общем случае также зависящая от времени
0
Эксперт по электронике
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
13.03.2019, 15:03 17
Tanuior, сие мне не ведомо .
0
13.03.2019, 15:03
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2019, 15:03
Помогаю со студенческими работами здесь

Опишите, что получится в результате выполнения программы
2. Опишите, что получится в результате выполнения программы? Program Variantl; Const n=7; Var С :...

Массив: Создайте одномерный массив содержащий ваше ФИО как отдельные переменные.
Здравствуйте , помогите пожалуйста 1)Создайте одномерный массив содержащий ваше ФИО как...

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

Написать оператор присваивания, в результате которого логическая переменная t получает значение false, если выполняется указанное условие: числа x, y
Написать оператор присваивания, в результате которого логическая переменная t получает значение...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru