まず、演算子の優先順位について学習する必要があります。そうすれば、混乱を招く括弧の多くを避けることができます。
第二に、他のほとんどの人がここで述べているように、inline
速度が遅く、この目的には適していません。関数ハンドルとも呼ばれる無名関数を使用する (そして適切に使用する方法を学習する) ほうがよいでしょう。
第三に、この関数のルートを見つけたい場合は、独自のバージョンを設計して実装するのではなく、その目的専用の広範囲にテストされた Matlab 関数を使用することをお勧めします。
>> f = @(x) 3/2*7.02^2 - 2*18*x.*(1-x/18).*(1-exp(-18./x));
>> root1 = fzero(f, 14)
root1 =
1.440303362822718e+01
>> root2 = fzero(f, 2.5)
root2 =
2.365138420421266e+00
>> root3 = fzero(f, 0) %# (if you're into that kind of perversion)
root3 =
0
からの値をランダムにテストし、結果-100:100
をunique
-ing して初期値を見つけました。これは決してすべてのルートを見つけるための堅牢な方法ではありませんが、もっと良い方法を思い付くことができると信じています (いずれにせよ、問題は分析的に解決するのがかなり簡単です)。