首页 > 解决方案 > 如何在 Matlab 中找到两个非线性图的交集值?

问题描述

https://drive.google.com/file/d/1HEBkm1KUdKWbMOsNR6v-hDoIT1RSKFeg/view?usp=sharing

   clear all;close all;clc
    syms x y 
    [solx,soly] = solve(y+cos(x) == 0, (x-1)^2+(y-1)^2-4 == 0)

我能够得到 [x1,y1] 坐标,即 [0.41864,-0.91364]。但是,我无法找到另一个根。有人能帮我吗?

标签: matlab

解决方案


用于说明的文档solve

如果 solve 无法找到解决方案并且ReturnConditions为 false,则该solve函数在内部调用vpasolve试图找到数值解决方案的数值求解器。对于没有符号参数的多项式方程和系统,数值求解器返回所有解。对于没有符号参数的非多项式方程和系统,数值求解器仅返回一个解(如果存在解)。

基本上,当你的方程是非多项式时,你只会得到一个解。您可以通过直接调用vpasolve并传递一个间隔来获得其他解决方案。

>> [solx,soly] = solve(y+cos(x) == 0, (x-1)^2+(y-1)^2-4 == 0)
   [0.41864281074457462101303466040894, -0.91364150731035083238926541575963]
   

>> [sol2x,sol2y] = vpasolve(y+cos(x) == 0, (x-1)^2+(y-1)^2-4 == 0, [1,5])
   [2.9999749446149569424146377450705, 0.98998896047356166485626815000393]

在此处输入图像描述


推荐阅读