Простой вопрос о переменной MATLAB - PullRequest
2 голосов
/ 24 июня 2011

Пожалуйста, помогите мне написать программу MATLAB, которая создает матрицу столбцов b , такую, что

b 1 = 3x 1 - 3 / 4y 0
b 2 = 3x 2
...
b n-2 = 3x n-2
b n-1 = 3x n-1 - 3 / 4y n

, где x и y - переменные. Обратите внимание, что y появляется только в первой и последней записях b .

Моя проблема в том, что я не знаю, как переменные работают в MATLAB. Я пытался

b = 3 * x

и там написано

* +1051 * ??? Неопределенная функция или переменная 'x'

Итак, как нам создавать переменные вместо констант?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 24 июня 2011

EDIT:

Из ваших комментариев выше, вам нужен символьный набор инструментов MATLAB , который позволяет вам выполнять вычисления в терминах переменных (без назначения им явного значения). Вот небольшой пример:

syms x %#declare x to be a symbolic variable
y=1+x;
z=expand(y^2)

z=

x^2 + 2*x + 1

Вам нужно будет иногда использовать expand, чтобы получить полную форму полинома, потому что по умолчанию используется его простейшая форма, (1+x)^2. Вот еще один пример, чтобы найти корни общей квадратичной

syms a b c x
y=a*x^2+b*x+c;
solve(y)

ans =

 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)

Я думаю, вы имели в виду b<sub>n</sub> и x<sub>n</sub> в последней строке ... В любом случае, вот как вы это делаете:

b=3*x;
b([1,end])=b([1,end])-3/4*y([1,end])

Вы также можете сделать это в одной строке как

b=3*x-3/4*[y(1); zeros(n-2,1); y(end)];

где n - длина вашего вектора.

0 голосов
/ 24 июня 2011

Вы никогда не заявляли о своей проблеме ...

В любом случае сначала просто установите первую запись b. Затем используйте цикл, чтобы установить следующие значения b от 2 до n-2. Затем установите последнюю запись b индивидуально.

Если заметить, что x является вектором, вы можете просто векторизовать часть цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...