xの次数が複数ある多項式のyを代入したときにxを返す関数
こちらを利用するのが良いでしょうか。
https://jp.mathworks.com/help/matlab/ref/roots.html
% 多項式の係数ベクトル
p = [1,-2,1];
% 計算したいy
y0 = 2;
% 多項式とy0の交点を求めるから係数ベクトルの0次オーダーからy0を引く
p_offset = p;
p_offset(end) = p(end) - y0;
% 答え:今回だと2点あり
xs = roots(p_offset);
そのxの時の接線を求める関数を教えてください…。
接線の公式に基づいて導出します。
導関数が必要なので下記の通り算出します。
https://jp.mathworks.com/help/matlab/ref/polyder.html
接線を求めたいx座標をx0 = xs(1), xs(2), ... として、関数がy=f(x)のとき、導関数f'を使うと接線は下記の通りです。
y = f'(x0) * (x-x0) + f(x0)
以下サンプルコード:
matlab
1pd = polyder(p);
2
3% 仮
4x = -5:0.1:7;
5x0 = xs(1);
6
7yd = polyval(pd,x0)*(x-x0)+polyval(p,x0);
8
9% 結果確認
10figure
11plot(x,polyval(p,x))
12hold on;
13grid on;
14plot(x, y0*ones(length(x)), 'k-')
15plot(x, yd, 'r-')
16hold off;