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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте! помогите пожалуйста написать цикл, в результате которого получится массив содержащий символьные переменные: 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); б)writeln(5<6,5<=6:8); writeln('конец'); ...

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

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

16
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
07.04.2013, 17:19
Цитата Сообщение от 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  [ТС]
гм, у меня этот кусок не запускается, пишет:
??? 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
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
07.04.2013, 17:42
хм... Интересно. А какая версия Matlab?
Что должно получится смотри здесь (где то со средины страницы и далее)
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 17:45  [ТС]
Версия 7.9.0 (R2009b)
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
07.04.2013, 17:56
Gri1991, а Вы мне можете сбросить страничку Help`а в формате pdf (там внизу кнопка должна быть) с функцией sym для Вашей версии Matlab?
А то в интернете найти документацию на старые версии проблематично((
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 18:11  [ТС]
а куда выложить эту страничку?
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
07.04.2013, 18:17
Дык на форум, в прикрепленные файлы (жми "Расширенный режим")
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 8
07.04.2013, 18:35  [ТС]
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
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
07.04.2013, 20:17
Ну форум у нас цивильный так что только оффсайт. Смотри внимательно, если в 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  [ТС]
дак я не против цикла, но возникает вопрос - как его организовать в плане того, что можно менять номер в названии переменной или саму переменную (то есть y1, y1.. или a, b,c). В новой версии есть как вижу оператор %: 'a%n', где n - счетчик переменной например, но вот беда -
Matlab M
1
2
3
for n=1:m 
  z(n)='a%n';
end
Но он не катит....
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
07.04.2013, 21:23
Хватило ума только на это:
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  [ТС]
спасибо большое! я доработал под свои нужды этот кусок:
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
Полезно и интересно. Но у меня к этой задаче есть вопрос/продолжение.
Скажем, мне нужен символьный массив типа dy(i) = i * t + 5.
Создать его просто - тут вопросов нет, спасибо большое R2D2

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

Но в таком случае матлаб ругается, и понятно почему - массив dy символьный, а в оде45 нужно выражение типа float или double. Как быть?
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
13.03.2019, 12:14
Tanuior, для начала Вам надо взять функцию для символьного решения ОДУ - dsolve...
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 6
13.03.2019, 14:41
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
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
13.03.2019, 15:03
Tanuior, сие мне не ведомо .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2019, 15:03
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru