1

次の式があります。

f(N):  N = ((1+lam)^3 )/ ((1-lam)*(1+lam^2));

lam指定されたを検索する関数を作成する必要がありますN

今、私は単純なループを使用してそれをやっています:

lam = 0.9999;
n = f(lam);
pow = 0;
delta = 0.1;
while(abs(N - n)) > 0.1 & pow < 10000)
    lam = lam - 0.001;
    n = f(lam)
    pow = pow+1;
end

ループを使用せずに、より正確に解決するにはどうすればよいですか?

4

6 に答える 6

3

あなたが持っている場合

N = ((1+lam)^3 )/ ((1-lam)*(1+lam^2))

その後、あなたはそれを知っています

(1+lam)^3 = N*(1-lam)*(1+lam^2)

これらの用語を拡張するとしますか?ゼロに等しい実係数を持つ1つの単純な3次方程式に合体しますか?それを解決する機能はありますか?

答えはイエスです。1つの解決策は、fzeroを使用することですが、方程式は単なる3次多項式であるため、シンボリックな解決策が必要でない限り、根が答えになります。シンボリック問題にはシンボリックツールボックスを使用します。

于 2010-09-07T11:04:04.713 に答える
2

Wolfram Alpha による N=10 の解は次のとおりです。

http://www.wolframalpha.com/input/?i=(1%2Bx^3)/((1-x)*(1%2Bx^2))%3D10

代数的な解決策は、それほど難しくないため、特定のケースで機能します。問題は、一般に、非線形方程式は反復解を必要とすることです。推測から始めて、特定の方向に進み、できれば解に収束します。一般に、反復とループなしでは非線形方程式を解くことはできません。

于 2010-09-07T11:37:01.483 に答える
1

他の回答で説明されているように、この方程式を閉じた形で解くことができますが、正直なところ、2次以上の多項式の閉じた形の解は、結果の条件が悪い傾向があるため、実際にはあまり役に立ちません。

あなたの特定の多項式については、ニュートン法がおそらく進むべき道であるというアレクサンドルに同意します。

ただし、長期的には、Jenkins-Traubの求根アルゴリズムの実装を作成する(またはインターネットから再利用する)ことを強くお勧めします。ウィキペディアはそれを「ブラックボックス多項式の根ファインダーの実質的な標準」と説明しており、誇張しているわけではありません。それは何年もの間、私の多項式を解く必要性のすべてに役立ってきました。私の経験では、ニュートン法(適切な初期推定に依存しない)や固有値ベースの方法よりも堅牢で、起動が非常に高速です。

于 2010-09-08T19:42:06.350 に答える
1

方程式を次のように並べ替えます0 = f(x)/g(x)(ここでf、 とgは多項式です)。次に、 を解き0 = f(x)ます。fこれは、キュービック ( http://en.wikipedia.org/wiki/Cubic_function#Roots_of_a_cubic_function ) になるので十分に簡単なはずです。実際、Matlabroots()にはこれを行う機能があります。

于 2010-09-07T10:45:16.050 に答える
1

プロットは、N が正の場合、区間 [-1,1) に厳密に 1 つの解があることを示唆しています。ニュートン法を検討する必要があります。これは初期推定値ゼロにかなり早く収束します。

于 2010-09-07T11:44:28.377 に答える
0

N のほとんどの値に対して、問題の代数解があります。Wolfram Alphaによって解かれた解は次のとおりです。

if N+1!=0
   x = (20 N^3+18 N^2+3 sqrt(3) sqrt(16 N^6+32 N^5-20 N^4-72 N^3-9 N^2+54 N+27)-27 N-27)^(1/3)/(3 2^(1/3) (N+1))-(2^(1/3) (2 N^2+3 N))/(3 (N+1) (20 N^3+18 N^2+3 sqrt(3) sqrt(16 N^6+32 N^5-20 N^4-72 N^3-9 N^2+54 N+27)-27 N-27)^(1/3))+N/(3 (N+1))

はい、醜いです。

正確な代数解がある場合、このような大きく醜いものであっても、常に数値解よりも優れています。ダフィーモが示したように、数値的手法で問題を解決するには反復が必要であり (したがって遅い)、ソルバーが極小値で動けなくなる可能性があります。

于 2010-09-08T17:15:22.737 に答える