SimWe仿真论坛's Archiver

COMSOL 2008年会圆满结束!

rushi241 发表于 2007-4-21 23:29

高手帮忙改一下程序(程序已改动)

对1stopt的语法不是很了解,看例题写了下面的程序,
麻烦各位给看看怎么改一下,
谢谢。为题就是要确定参数b(N)和 a
附件是问题的基本描述。
Title "Type your title here";
constant n=10;
parameter b(1:n)[-10,10],a[1,];
Variables x,y;
startprogram;
var
      i,k: integer;
      txy,ux,deltax,deltab: double;
      txyl(1:10),uxl(1:10),deltabl(1:10): double;
begin
   for i:=1 to 31 do begin
       txy:=0;
       ux:=0;
       deltab:=0;
       for k:=1 to n do begin
           txyl[k]:=2*b[k]*sin(k*x[i])/sin(x[i]);
           txy:=txy+txyl[k];
           uxl[k]:=-2.8*a*(b[k]*sin(k*x[i])/k);
           ux:=ux+ux1[k];
           deltabl[k]:=-2.8*a*(b[k]*sin(k*arccos(1.0/a))/k);
           deltab:=deltab+deltab1[k];
        end;
        if txy>0.01 then
           deltax:=txy+ux
        else
           deltax:=txy;
        end if;
      y[i]-txy-0.159*sin(2*pi*deltax)=0;
      deltab-0.5=0;
      b[1]+3*b[3]+5*b[5]+7*b[7]*9*b[9]=0;
      2*b[2]+4*b[4]+6*b[6]+8*b[8]+10*b[10]=0;
    end;
end;
endprogram;

data;
0.1     0.0
0.2     0.0
0.3     0.0
0.4     0.0
0.5     0.0
0.6     0.0
0.7     0.0
0.8     0.0
0.9     0.0
1.0     0.0
1.1     0.0
1.2     0.0
1.3     0.0
1.4     0.0
1.5     0.0
1.6     0.0
1.7     0.0
1.8     0.0
1.9     0.0
2.0     0.0
2.1     0.0
2.2     0.0
2.3     0.0
2.4     0.0
2.5     0.0
2.6     0.0
2.7     0.0
2.8     0.0
2.9     0.0
3.0     0.0
3.1     0.0

[[i] 本帖最后由 rushi241 于 2007-4-22 22:39 编辑 [/i]]

shamohu 发表于 2007-4-22 21:27

上面错误太多,参考你前面的帖子内容,改写如下,算x=1时的a,b值:
******************************************
Constant n=10, x=1;
Parameter a=[1,], b;
StartProgram [Pascal];
Procedure MainModel;
var i: integer;
    txy, ux, deltax, temd: double;
Begin
   txy := 0;
   ux := 0;
   temd := 0;
   for i := 1 to n do begin
       txy := txy + 2*b*(sin(i*x)/sin(x));
       ux := ux + b*sin(i*x)/i;
       temd := temd + b*sin(arccos(1/a))/i;
   end;
   ux := -2.8*a*ux;
   temd := -2.8*a*temd;
   if txy >= 0.01 then
      deltax := txy + ux
   else
      deltax := txy;
   FunctionResult := sqr(txy+0.159*sin(2*pi*deltax))+
                    sqr(0.5-temd);
End;
EndProgram;
*************************************
能出结果,但不稳定,如n取不同的值(往大取,a、b各取一常数),ux趋于稳定,而txy却是上下变动。因不知你方程的物理意义,不好下结论,自己运行试试。

rushi241 发表于 2007-4-22 22:13

谢谢斑竹,我运行一下,
我自己也写了一个能出结果,但是分析一下不对,
这几天搞这玩意搞死我了
麻烦斑竹了
我运行了你写的 怎么出错了阿
error: exports allowed only at globle scope
error: ';' excepted but ',' found
error: declaration expected but end of file found



我用的是1.5试用版,这和版本的 关系大吗

[[i] 本帖最后由 rushi241 于 2007-4-23 09:10 编辑 [/i]]

ilxy 发表于 2007-4-24 18:35

可以运行,没错。我的是2.5版。

rushi241 发表于 2007-4-24 23:26

我把Procedure MainModel去掉可以
楼上的2.5版化多少银子阿

页: [1]
 

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.