2012-09-29 126 views
0

我需要知道如何求解一个非线性方程组但是改变一个参数,这样每次你改变这个参数后都会抛出该系统的结果(需要所有结果),我以为因为,这是改变参数,解决方程,每个结果存储在一个电子表格,问题是,因为你不能解决系统,因此我抛出和非符号数值,他们给你一个例子必须解决系统:在matlab中求解非线性方程

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

在参数改变是a和要去保持的xy相应的值在SP readsheet。

+1

亲爱的曼纽尔,欢迎来到SO。请详细说明一下数字和代码的具体例子。我们可以帮助你更好。 –

+0

谢谢,我会尽力的 –

回答

1

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

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

您需要更多基本信息才能使用像Matlab这样的工具。它可能为你封装了很多细节,但它不会为你选择算法。你仍然需要知道什么,特别是关于你的方程组。

开始通过阅读这样的东西:

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

我建议你在一定范围内的x和y的策划你的方程。在开始之前,你应该知道地形的样子。你正在处理trig函数,所以x和y从0变到2 π然后重复。绘制几个x和y的时间段,看看你回来了什么。

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价值方面的解决方案。然后,您可以通过做

aval = 0.5; % or whatever value you want 
subs(Xsoln,a,aval) 

或解决方案转换为功能手柄进行评价,这样评价在a多个值的解决方案(这是首选的方法,如果你需要在多个点来评估) :

xf = matlabFunction(Xsoln) 
xf(0.5)