Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 两条直线的交点_Matlab - Fatal编程技术网

Matlab 两条直线的交点

Matlab 两条直线的交点,matlab,Matlab,如何用给定的表达式或方程式获得两个线图的交点坐标 例如: L1=sin(2x),L2=Ln(x);一般来说,你必须解方程L1(x)=L2(x)。如果您从一开始就不知道L1和L2是什么(线性、多项式…),那么唯一的解决方案就是数值求解,例如使用算法。然后,问题就归结为寻找函数f(x)=L1(x)-L2(x)的根(零)。这不是一个简单的问题:你所要求的是求解任何数学方程的一般方法 例如,可以考虑使用,或. 没有一般的答案。因为您使用matlab标记,所以可以使用fsolve(@(x)sin(2*x)

如何用给定的表达式或方程式获得两个线图的交点坐标

例如:
L1=sin(2x),L2=Ln(x);一般来说,你必须解方程L1(x)=L2(x)。如果您从一开始就不知道L1和L2是什么(线性、多项式…),那么唯一的解决方案就是数值求解,例如使用算法。然后,问题就归结为寻找函数f(x)=L1(x)-L2(x)的根(零)。

这不是一个简单的问题:你所要求的是求解任何数学方程的一般方法

例如,可以考虑使用,或.


没有一般的答案。

因为您使用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)
令人惊讶的是,还没有人建议在matlab中使用专门为此设计的函数。在这里使用fzero。Fzero是一个比fsolve更好的选择,因为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

作为一个一般的非解析解,当你有两组点描述的任意两条曲线时,在文件交换中有很好的提交-。

在我的位置无法访问mathwork。请给我另一个链接。谢谢。我在这里为你上传了最新版本:我想你还是不能下载,给我发个电子邮件。