请帮我写一个构建列矩阵 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'
那么,我们如何创建变量而不是常量?
谢谢!
答案 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)
我认为你在最后一行意味着bn
和xn
......无论如何,这是你如何做到的:
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是向量,则可以简单地对循环部分进行矢量化。