![]() |
[求助]用fsolve求解非线性方程的问题
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 |
:frown: 我卡在这里了
|
[QUOTE=心际依然;8667]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...[/QUOTE] 每个循环都对F重新赋值了,使用这个方法 循环外 F=[]; 循环内 F=[F,eq1; eq2; eq3]; 得到的应该是一个矩阵,每一列是一组解 |
又看了下问题,补充一下
在我看来函数jiaoxian的自变量应该是u,函数值是交线方程的解,因此对fsolve的调用应该在jiaoxian内部吧。也就是 function F=jiaoxian(u) ... F=fsolve(...); ... 简洁的来说,交线求解的代码结构应该是 clear all; ... eq1=...; eq2=...; eq3=...; F=[]; for ... ... F=[F,fsolve(...)]; ... end ... 一个过程文件就可以了,不用定义函数的吧。 |
试了下就可以了,再问一下,如果想限定v,m,n的取值范围,那要怎么弄?
|
v,m,n是由u决定的,调节u的范围吧
|
所有时间均为北京时间。现在的时间是 14:18。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.