3

こんにちは、私は、matlab を使用して変数を制限として積分を解くのに苦労しています。私が抱えている 2 つの最大の問題は、matlab が明示的に積分を見つけることができず、変数以外の多くの数値メソッドがうまくいかないことです。

私は解決する必要があります

0=H/2R  - integral (z(x) between b and 1)

z(x)= (((x/((a*x*x)+1-a))^2)-1)^-0.5
b= (sin(t)+sqrt(t^2 + 4a(a-1)))/2a

私はH、R、およびtを知っており、アイデアは積分を解いてからaの非線形方程式を解くことです。非線形方程式にfzero / fsolveを使用することは知っていますが、積分を解くのに苦労しています

4

1 に答える 1

0

ここに画像の説明を入力してください

狙い撃ち法を試すことができます-aの値を推測し、最後の方程式を解く値が見つかるまでそこから数値的に解きます。これが機能するはずの何かです(私は数値をランダムに推測し、それを収束させることができませんでしたが)

function test

    a_guess = .1
    fzero(@(a) solveWithA(a), a_guess)


    function res = solveWithA(a)

    t = .9;

    H = 1.5;
    R = 1.1;


    z = @(x) (((x/((a*x*x)+1-a))^2)-1)^-0.5;
    b = (sin(t)+sqrt(t^2 + 4*a*(a-1)))/(2*a);

    lower_limit = b;

    integrand = z;


    [T, Y] = ode45(@(t, x) integrand(x),[lower_limit 1],0);

    res = norm((H/2/R - Y(end)))

    end

end

しかし、の分析式...私はそのペンと紙だと思います:)不定積分を手で行ってから、制限を適用してみてください。ただし、被積分関数からaを削除すると、依然として厄介な結果が残ります。これには、数学のオーバーフローに適した「トリック」がおそらくあります。

ここに画像の説明を入力してください

于 2012-12-09T16:42:15.943 に答える