在matlab中求解非线性方程

时间:2012-09-29 22:31:07

标签: matlab math equation nonlinear-functions

我需要知道如何解决一个非线性方程组但改变一个参数,这样每次你改变那个参数都会把我的结果抛给我(需要所有的结果),我想是一个for,这就是改变参数,求解方程并将每个结果存储在电子表格中,问题在于,由于无法求解系统,因此我抛出非符号数值,它们给出了一个必须是系统的例子。解决:

0 = 125 +100 * cos (x) -25 * cos (a) -175 * cos (y)
0 = 100 * sin (x) -25 * sin (a) -175 * sin (y)

要更改的参数为a,并在电子表格中保留xy的相应值。

2 个答案:

答案 0 :(得分:1)

您需要知道如何求解非线性方程。这意味着选择一个起点,创建一个增量的,迭代的解决方案,并提供停止的容差。您需要知道并非每个非线性方程都有解决方案。您选择的起点和迭代策略可能会对您是否能找到解决方案和流程的效率产生深远的影响。

你在这里解决了什么?你有两个方程式;我假设有两个未知数(x,y)。

在使用Matlab之类的工具之前,您需要更多基本信息。它可能会为您封装很多细节,但它不会为您做出算法选择。你仍然需要知道一些事情,特别是关于你的方程组。

首先阅读以下内容:

http://www.physicsforums.com/archive/index.php/t-106606.html

我建议在x和y范围内绘制方程。在开始之前,你应该知道地形是什么样的。你正在处理trig函数,因此x和y从0变为2π然后重复。绘制x和y的几个周期,看看你得到了什么。

答案 1 :(得分:0)

如果你有符号工具箱,你可以使用Matlab的符号解算器......

syms x y a
b(1)  = 100 * sin (x) -25 * sin (a) -175 * sin (y)
b(2)  = 125 +100 * cos (x) -25 * cos (a) -175 * cos (y)
z     = solve(b,x,y)
Xsoln = simplify(z.x)
Ysoln = simplify(z.y)

其中XsolnYsoln表示根据a的值编写的解决方案。然后,您可以通过执行

来评估多个a值的解决方案
aval = 0.5; % or whatever value you want
subs(Xsoln,a,aval)

或将解决方案转换为函数句柄并以这种方式进行评估(如果您需要在许多方面进行评估,这是首选方法):

xf = matlabFunction(Xsoln)
xf(0.5)