пересечение двух линий - PullRequest
       21

пересечение двух линий

3 голосов
/ 12 февраля 2010

как можно получить координаты пересечений двух линейных диаграмм с данным выражением или уравнением?

например: L1 = грех (2x), L2 = Ln (x); или что-нибудь еще.

Ответы [ 5 ]

6 голосов
/ 12 февраля 2010

Удивительно, но никто еще не предложил использовать функцию, предназначенную для этого в Matlab. Используйте fzero здесь. В любом случае, Fzero - лучший выбор, чем fsolve, для которого требуется набор инструментов оптимизации. И, да, вы можете сделать это с помощью метода Ньютона, или даже деления пополам или секущего метода. Но заново изобретать колесо - это вообще неправильно. Используйте функциональность, которая уже существует, когда она есть.

Проблема в том, чтобы найти точку, в которой

sin(2*x) == log(x)

Здесь log (x) относится к натуральному логарифму. Сделайте это, вычитая одно из другого, а затем ищите ноль результата.

fun = @(x) sin(2*x) - log(x);

Прежде чем сделать это, ВСЕГДА готовьте сюжет. ezplot может сделать это для вас.

ezplot(fun)

На графике будет показан один корень от 1 до 2.

fzero(fun,2)
ans =
       1.3994
4 голосов
/ 12 февраля 2010

Поскольку вы пометили с помощью matlab, вы можете сделать это с помощью fsolve(@(x)sin(2*x)-log(x),1), что дает 1,3994 (1 - начальная начальная точка или предположение).Координата y равна log(1.3994) = 0.3361.

То есть вы используете fsolve, передавая ей функцию, которую вы хотите решить для нуля, в данном случае sin(2*x) == log(x), поэтому вы хотите sin(2*x) - log(x) == 0 (log - это натуральный логарифм в matlab).

Если у вас уже установлены такие функции, как, например, L1 = @(x)sin(2*x) и L2 = @(x)log(x) (или в функциях L1.m и L2.m), вы можете использовать fsolve(@(x)L1(x)-L2(x),1).

2 голосов
/ 12 февраля 2010

Это не тривиальный вопрос: вы запрашиваете общий метод решения любого математического уравнения.

Например, вы можете рассмотреть возможность использования метода деления пополам или метода Ньютона .

Нет общего ответа.

2 голосов
/ 12 февраля 2010

В общем, вы должны решить уравнение L1 (x) = L2 (x). Если вы не знаете с самого начала, что такое L1 и L2 (линейные, полиноминальные ...), тогда единственное решение - численное решение, например, с помощью алгоритма Netwon . Затем задача сводится к нахождению корней (нулей) функции f (x) = L1 (X) - L2 (X).

0 голосов
/ 13 февраля 2010

В качестве общего неаналитического решения, когда у вас есть любые 2 кривые, описываемые 2 наборами точек, на Файловом обмене есть отличное представление - Быстрые и надежные пересечения кривых .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...