2012-03-17 5 views
0

を使用して、多くの引数を持つ関数を統合んは、どのように私はMathWorks社のMATLAB

のy = - ((F + hの)M^3(COSH(時間*のM)+ M (h * M)+(h * M *)*(β* sinh(h * M)))/(h * M * (2 * h * M)-2 * h * M * sinh(2 * h * M)))/(2 + h * M * 8 *(h * M * cosh(h * M)+( - 1 + h * M^2 *ベータ)* sinh(h * M))^ 2));私はMFILE

function r = parameterIntegrate(F,h,M,beta,alpha,theta,phi) 
% defining a nested function that uses one variable 
phi = 0.6; 
x = 0.5; 
r = quad(@testf,0,1 + phi*cos(2*pi*x)); 
% simpson's rule from 0 to h 
function y = testf(x) 
h = 1 + phi*cos(2*pi*x); 
theta = -1:0.5:1.5; 
F = theta - 1; 
M = 2; 
beta = 0; 
alpha = 0; 
y = -((F+h)*M^3*(cosh(h*M)+M*beta*sinh(h*M)))/(h*M*cosh(h*M)+(-1+h*M^2*beta)*sinh(h*M))- (alpha*(M^2*(F+h)*(-1+2*h^2*M^2+ cosh(2*h*M)-2*h*M*sinh(2*h*M)))/(8*(h*M*cosh(h*M)+(-1+h*M^2*beta)*sinh(h*M))^2)); 
end 
end 

を書かれており、そのその私に

を与えて動作していない

tol = [1e-5 1e-3]; 
q = quad(@parameterIntegrate, 0, h,tol) 
or 
q = quad(@parameterIntegrate, 0,1 + phi*cos(2*pi*0.5),tol) 

で関数を呼び出している

phi = 0.6; 
x = 0.5; 
M = 2; 
theta = -1:0.5:1.5; 
F = theta - 1; 
h = 1 + phi*cos(2*pi*x); 
alpha = 0.2;beta = 0.0; 

xに関する

Error using ==> plus 
Matrix dimensions must agree. 

答えて

0

エラーメッセージの意味は、コードの行によっては2つの行列がありますが、次元が一致しないために追加できません。これを解決するために私が提案するのは次のようなものです:

  1. 問題の原因となっているコードはどれですか。
  2. 行に多数の変数がある場合は、それらの変数を単純化します。
  3. 行列がある場合、行列の乗算/除算を行わない場合は、.*,./、および.^を使用します。

手順3で乗算/除算を変更すると、問題は解決しないと思われます。

+0

ありがとうございました。私はステップ3を試みました、私はまだ同じメッセージを取得します。私はコード内の各行をチェックしようとします。 – sani

+0

pearsonartphotoありがとう、私は今問題を知っている。 – sani

関連する問題