2016-12-19 12 views
0
ここ

は、関心のある関数の関数ハンドラである:1 /(√x・(x + 1))の積分を数値的に計算する方法。

fun = @(x) 1/(sqrt(x) * (x + 1)); 

q = integral(fun, 0, inf) 

しかし、私は次のエラーを得た:

Error using * 
    Inner matrix dimensions must agree. 

私はこの問題を解決するにはどうすればよいですか?

+1

あなたはまた、[厳密解](https://www.wolframalpha.comを使用することができ、https://www.mathworks.com/help/matlab/ref/times.htmlhttps://uk.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html

具体的には、あなたのアイデアを与えるためにmultplicationと右アレイ部門でこれらのヘルプ記事を参照してください。 /入力/Σi=積分+ 1%2F(sqrt(x)*(x%2B1))):答えはπである。 –

+0

おそらく、関数の 'fun'が値の配列を生成するために使われるので、_vectorised input_が必要であることに注意してください。このエラーは、単純な(要素ごとの)乗算ではなく、 '*'が_dot product_(行列乗算:行単位)として解釈されるベクトル化された入力に起因しています。 – Ziezi

答えて

7

マトリックス操作ではなく要素ごとの操作を定義するには、.ピリオドを使用する必要があります。これは、integral機能入力に必要です。

あなたの関数は、すべての要素単位.タイプの機能を概説し、興味のある

q = integral(fun,0,inf) 

q = 

3.1416 

行列演算対アレイ上のこの概要記事を与える

fun = @(x) 1./(sqrt(x).*(x+1)); 

でなければなりません。 https://www.mathworks.com/help/matlab/ref/rdivide.html

+1

ピリオド/ドット、 '.'は_element-wise_操作を指定します。 –

+1

ありがとう@ヨルゲン、私はすぐに同じ悪い文言を実現し、自分自身を修正しました – Wolfie

+0

@Willあなたが指したリンクは完全に正しいわけではありません。これは固定小数点ツールボックスを指しています。あなたが探している実際のリンクを指し示すように修正しました(スターウォーズの言及を引用します)。 – rayryeng

関連する問題