Я сейчас беру курс по численному анализу и совершенно новый для Matlab. Это шаг в более крупном задании, которое мне дано.Найти x перехват с использованием линейной интерполяции
У меня есть набор значений, 69 значений для x и y, для кривой, где я хочу решить x-перехват. Однако у меня нет соответствующего значения для x = 0.
Моя идея состояла в том, чтобы интерполировать линейно между точками, ближайшими к 0, чтобы получить коэффициенты для прямой, а затем решить для x = 0, но я не могу понять, как это сделать.
Я нашел ближайшие значения х = 0, и хранить их в векторах:
x = [0.251287 0.2555517];
y = [0.014228 -0.003326];
Так что я уже знаю, что х-перехват составляет около 0,25.
Мой подход заключается в использовании interp1:
pp = interp1(x,y,'linear','pp');
И затем использовать коэффициенты, которые я получаю от С. ее решить. Коэффициенты составляют -4.11677 и 0.014228. Если я использую эти значения для x = 0, я получаю ответ, который очень далеко, 0.003456.
У меня возникает ощущение, что что-то в моем подходе ошибочно. Может ли кто-нибудь указать мне в правильном направлении?
Если я использую polyfit для двух пар значений, p хранит два значения: -4.11677 и 1.04872. Первое значение совпадает с тем, которое я получил от interp1, но второе отличается. Если я использую коэффициенты из полифита как k и m в линейном уравнении y = kx + m и решает при y = 0, я нахожу x равным 0.25474. Кажется, это правильный ответ. Почему тогда ответы от polyfit отличаются от ответов в interp1. Мне кажется, что они должны быть одинаковыми. – Victoria
Если вы хотите перехватить, вы должны искать x = 0, а не y = 0. –
Я хочу перехват x, поэтому, когда кривая пересекает ось x. Вы имеете в виду перехват y. Но я получил хороший ответ, используя полифит, тем не менее, так что это было очень полезно. У вас есть идеи, почему результаты от interp1 и polyfit настолько различны? – Victoria