1

このように球体をプロットしてみました。

この以前の質問には、プロットを試みたコードが含まれています。

その前の質問には答えましたが、上のリンクのプロットに示されているように、球関数をプロットするのに問題があります。

編集 これは私が使用している球関数です:

function ph = sphereFN(x)
    ph = sum(x.*x, 2);

end

編集 結果は次のようになります。 ここに画像の説明を入力

注意: 関数を sphere から sphereFN に変更して、matlab 球体との競合を回避しました。

4

2 に答える 2

1

期待どおりのsphereFN動作をしていない可能性があります。sum of different powersこの関数に基づいてテストを 実装しようとしているようです:

sodp

ただし、次のように実装します。

ph = sum(x.*x, 2);  

その機能に似ていません。これを出発点として使用してみてはどうでしょうか。

x = linspace(-1,1,25);

for I=1:size(x,2)
    for J=1:size(x,2)
        s(I,J) = abs(x(I))^2 + abs(x(J))^3;
    end
end

[xx,yy] = meshgrid(linspace(-1,1,25));  

surfc(xx,yy,s)

本質的には 2D 問題を記述しているため、関数のこの大雑把な実装で十分です。ネストされたループを(たとえば)forという関数に入れ、それを呼び出して vector を渡すことができます。sum_of_different_powers_2Dx

編集

forネストされた-loops 内のコマンドを次のように置き換えることで、意図したサーフェスにより近い形状を得ることができます。

s(I,J) = abs(x(I))^2 + abs(x(J))^2;  

これは次の関数に似ています。

球体

編集 2

n上で引用した方程式は、問題の次元であることを理解することが重要です。あなたが示したように、これはです2

編集 3

この機能を使用することをお勧めします:

function ph = sphereFN(x)

for I=1:size(x,2)
    for J=1:size(x,2)
        ph(I,J) = abs(x(I))^2 + abs(x(J))^2;
    end
end

end
于 2013-05-28T20:20:26.433 に答える