简单的MATLAB变量问题

时间:2011-06-24 00:56:39

标签: matlab

请帮我写一个构建列矩阵 b 的MATLAB程序,这样

  

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

它说

  

???未定义的函数或变量'x'

那么,我们如何创建变量而不是常量?

谢谢!

2 个答案:

答案 0 :(得分:4)

编辑:

从上面的评论中,您需要的是MATLAB的symbolic toolbox,它允许您根据变量执行计算(不为它们分配显式值)。这是一个小例子:

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)

我认为你在最后一行意味着bnxn ......无论如何,这是你如何做到的:

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是向量的长度。

答案 1 :(得分:0)

你从未说过你的问题......

无论如何只需先单独设置b的第一个条目。然后使用循环将b的下一个值设置为2到n-2。然后单独设置b的最后一个条目。

在旁注中,如果x是向量,则可以简单地对循环部分进行矢量化。