2016-11-20 160 views
0

可以說我有以下載體定義在MATLAB符號函數中的for循環

a = [1 2 3 4 5 6]; 
b = [6 8 7 4 2 5]; 

現在我需要創建符號功能f(x) = b.*x +a的向量,其中每個ab分別來自載體ab

for c = 1:length(a) 
syms x 
f(x) = b(1,c).*x + a(1,c); 
fvector(1,c) = f; 
end 

然而,這是不行的,因爲它沒有看起來好像我能for循環中創建一個象徵性的功能確實。

我需要創建一個符號函數,雖然在上面的例子中(不是完全相同的方程,但類似),並需要獲得fvector向量的每個條目的反函數。

是否有另外一種方法可以解決這個問題?

回答

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]