PDA

查看完整版本 : [求助]用fsolve求解非线性方程的问题


心际依然
2008-04-16, 10:42
2个曲面方程求交线问题,用fsolve联立方程求解;
必如,曲面1:x1=f1(u,v),y1=f2(u,v),z1=f3(u,v),
曲面2:x2=g1(m,n),y2=g2(m,n),z2=g3(m,n),
我把u变量离散出来,用for语句循环。
求交线的时候,先编M函数。
function F=jiaoxian(X)

for u=uo:(ut-uo)/50:ut

eq1=x1-x2;
eq2=y1-y2;
eq3=z1-z2;
F=[eq1;
eq2;
eq3]
end

主函数:[X,fval]=fsolve('jiaoxian',X0,options)
为什么求出来只有一组数,即一个v,m,n。
可是,应该是很多组数据啊,因为每个u值应该求出一个v,m,n。总共有51个u值,应该求出51组的v,m,n吧?
高手帮我分析一下,我的思路有错吗?为什么我只得出一个v,m,n

心际依然
2008-04-16, 10:48
:frown: 我卡在这里了

watcher
2008-04-16, 16:15
2个曲面方程求交线问题,用fslove联立方程求解;
必如,曲面1:x1=f1(u,v),y1=f2(u,v),z1=f3(u,v),
曲面2:x2=g1(m,n),y2=g2(m,n),z2=g3(m,n),
我把u变量离散出来,用for语句循环。
求交线的时候,先编M函数。
funct...

每个循环都对F重新赋值了,使用这个方法
循环外
F=[];
循环内
F=[F,eq1;
eq2;
eq3];

得到的应该是一个矩阵,每一列是一组解

watcher
2008-04-16, 18:47
又看了下问题,补充一下
在我看来函数jiaoxian的自变量应该是u,函数值是交线方程的解,因此对fsolve的调用应该在jiaoxian内部吧。也就是
function F=jiaoxian(u)
...
F=fsolve(...);
...

简洁的来说,交线求解的代码结构应该是
clear all;
...
eq1=...;
eq2=...;
eq3=...;
F=[];
for ...
...
F=[F,fsolve(...)];
...
end
...

一个过程文件就可以了,不用定义函数的吧。

心际依然
2008-04-17, 08:47
试了下就可以了,再问一下,如果想限定v,m,n的取值范围,那要怎么弄?

watcher
2008-04-17, 09:45
v,m,n是由u决定的,调节u的范围吧