假设我有以下向量
a = [1 2 3 4 5 6];
b = [6 8 7 4 2 5];
现在我需要创建一个符号函数f(x) = b.*x +a
的向量,其中每个a
和b
分别来自向量a
和b
。
for c = 1:length(a)
syms x
f(x) = b(1,c).*x + a(1,c);
fvector(1,c) = f;
end
但是,这不起作用,因为它似乎不能在for循环中创建符号函数。
我需要创建一个符号函数,如上例所示(不是完全相同的等式,但相似),需要得到fvector
向量的每个条目的反函数。
还有另一种可行的方法吗?
答案 0 :(得分:1)
我不确定你的目标究竟是什么,但是如果你提供了更多的上下文以及你期望的输入和输出示例可能会有所帮助。
此代码定义符号函数,并以相当一般(且效率低)的方式计算反函数。
a = [1 2 3 4 5 6];
b = [6 8 7 4 2 5];
syms x y
for c = 1:length(a)
f = b(c).*x + a(c);
fvector(c) = f;
finv(1,c) = subs(solve(f==y, x),y,x);
end
输出
fvector =
[ 6*x + 1, 8*x + 2, 7*x + 3, 4*x + 4, 2*x + 5, 5*x + 6]
finv =
[ x/6 - 1/6, x/8 - 1/4, x/7 - 3/7, x/4 - 1, x/2 - 5/2, x/5 - 6/5]