• 締切済み

MATLAB初心者;プログラミングのエラーが直せない

こんにちわ、先週からMATLABを学び始め、これからプログラムを作っていこうと思っているところです。以下のプログラムを作ろうとしているのですが、エラーが出てしまいます。似たようなプログラムがあったのでそれを修正して、自分で解答してみたのですがうまくいきません。 【課題】Quadratic equation x^2+b*x+c = 0 has two roots. They are given by r1 = (-b+sqrt(b^2-4*c))/2 and r2 = (-b-sqrt(b^2-4*c))/2. Fix the value of c at c=1, plot r1 and r2 as functions of b for b in [2,3]. Plot two curves in one figure. Use about 100 points to represent each curve. 【自分の解答例】 % % Plot f1(x) = (-x+sqrt(x^2-4))/2 and f2(x) = (-x-sqrt(x^2-4))/2 for x in [2,3] % clear; clf; % n=81; dx=8/(n-1); x=[-4:dx:4]; f1=(-x+sqrt(x^2-4))/2; f2=(-x-sqrt(x^2-4))/2; % plot(x,f1,'b-','linewidth',2.0) hold on plot(x,f2,'ko') axis([-4.0,4.0,-1.4,3.8]) set(gca,'xtick',[-4:1:4]) set(gca,'ytick',[-1:1:3]) set(gca,'fontsize',14) xlabel('x') ylabel('f(x)') h1=legend('f1(x)=(-x+sqrt(x^2-4))','f2(x)=(-x-sqrt(x^2-4))/2'); set(h1,'fontsize',12) % ??? Error using ==> mpower Matrix must be square. というエラーが出てしまいます。変数はあとでbに直すつもりですが、エラーの意味がわかりません。よろしくお願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

bの値域を間違えているからでは無いでしょうか 定数項cが1ですから 平方根(bの2乗-4)の式は良いのですが bが絶対値で2未満になると bの2乗-4が負の数値になり sqrt関数が失敗する これが原因のように思います mpowerはべき乗を計算する関数なのだろうと思います sqrtは1/2乗として 内部でmpowerを使っているのではないかと推察します

globe009
質問者

お礼

ありがとうございました。

関連するQ&A