0

私はプログラミングと MATLAB の初心者です。問題: 0 から a までの関数 f(x) があります。これを x=a 全体に反映して、領域のグラフが a になるようにする必要があります。

x =0:16/100:16;
if all(x<8)
    m = 0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*x)))+coth(0.5*log(0.5*x)));
end
if all(x>8)
    p = 0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*(16-x))))+coth(0.5*log(0.5*(16-x))));
end
z = m + p ;
plot(x,z);grid on

ただし、ここでは x は配列です。どうすれば問題を解決できますか? 私は初心者なので、私の間違いを指摘してください。さらに説明をいただければ幸いです。助けてくれてありがとう。

4

2 に答える 2

1

ベクトル化!

z = ( x <= 8 ) .* ... % select the first part
    (  0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*x)))+coth(0.5*log(0.5*x))) ) + ...
    ( x > 8 ) .* ... % select second part
    (  0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*(16-x))))+coth(0.5*log(0.5*(16-x)))) ) ;

plot( x, z );
于 2013-06-11T12:06:04.923 に答える
0

が 0 から引数 に対応するf関数の値を含む配列であると仮定します。次に、これを行うことができます:ax

f1=[f f(end:-1:1)];
x=[x x(end)+x+x(1)];
plot(x,f1)
于 2013-06-11T12:05:36.327 に答える