tanyou 发表于 2008-1-15 10:02

解非线性方程组问题。

初次使用1stopt,算一个四元二次方程组得解,方程式比较长,涉及的系数比较多,而且是表达式,我发现直接把表达式的值直接算出来代方程里面解出的解才是正确的,而每当我把系数表达式里的常系数用字母表示,具体值用constant给出时,计算出来的值居然不对。请教各位,若方程式里要计算的量太多时,会影响1stopt的性能吗?
还有个问题是,1stopt有VC接口吗?具体情况是:我的方程组里面的很多系数是来自前面的VC程序,而后面的程序也要继续用到方程组的解,我现在就是用很笨的方法,把解解出来后再人为设置VC程序里的参数。
先在此谢谢大家!!!

tanyou 发表于 2008-1-15 10:04

Title "Type your title here";

//Variable ;
Constant theta1=41,theta2=40.9,A1=-11.35,A2=6.91,A3=22.57,A4=37.46,B1=42.20,B2=22.74,B3=7.14,B4=-7.13,D1=800.96,D2=800.96,D3=800.96,D4=800.96;
ConstStrSection11=x5-B1*cos(theta2)-A1*cos(theta1),
          Section12=x5-B2*cos(theta2)-A2*cos(theta1),
          Section13=x5-B3*cos(theta2)-A3*cos(theta1),
          Section14=x5-B4*cos(theta2)-A4*cos(theta1),
         
          Section21=x4-x2+B1*sin(theta2)-A1*sin(theta1),
          Section22=x4-x2+B2*sin(theta2)-A2*sin(theta1),
          Section23=x4-x2+B3*sin(theta2)-A3*sin(theta1),
          Section24=x4-x2+B4*sin(theta2)-A4*sin(theta1),
         
          Section31=x4+x2+B1*sin(theta2)+A1*sin(theta1),
          Section32=x4+x2+B2*sin(theta2)+A2*sin(theta1),
          Section33=x4+x2+B3*sin(theta2)+A3*sin(theta1),
          Section34=x4+x2+B4*sin(theta2)+A4*sin(theta1),
         
          Section41=x2+A1*sin(theta1),
          Section42=x2+A2*sin(theta1),
          Section43=x2+A3*sin(theta1),
          Section44=x2+A4*sin(theta1);
         
Parameters x2,x4,x5;

Function (0.5*Section11+0.5*Section21*Section31/Section11-0.5*D1*Section21/Section11)^2+Section41^2-D1*Section41;
         (0.5*Section12+0.5*Section22*Section32/Section12-0.5*D2*Section22/Section12)^2+Section42^2-D2*Section42;
         (0.5*Section13+0.5*Section23*Section33/Section13-0.5*D3*Section23/Section13)^2+Section43^2-D3*Section43;
         (0.5*Section14+0.5*Section24*Section34/Section14-0.5*D4*Section24/Section14)^2+Section44^2-D4*Section44;

tanyou 发表于 2008-1-15 10:08

ps: 当然方程组里面是3个未知数,x5是一个合成的未知数(这里不是指x2,x4),以前经验得出用四个方程解出的解更合理。

tanyou 发表于 2008-1-15 10:10

以上程序得不出合理的解,而我每次把section里面的具体值算出来后代入方程组里才得到合理解。

suffer 发表于 2008-1-15 15:44

参考http://forum.vibunion.com/forum/thread-55815-1-1.html

dingd 发表于 2008-1-15 17:41

运行了一下代码,没发行有什么问题啊!只是三个未知数却是四个方程,属超越方程,无法得到为0的实数解。如果任取其中三个方程,就都可以得到实数解。

最新版可以和C++、Fortran等混编。
页: [1]
查看完整版本: 解非线性方程组问题。