登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
请高手帮我看看这个牛顿迭代法求解数值相 ..
发帖
回复
1084
阅读
3
回复
[
求助
]
请高手帮我看看这个牛顿迭代法求解数值相速度的程序
离线
learnerlcy
UID :43237
注册:
2009-10-07
登录:
2014-01-15
发帖:
55
等级:
仿真一级
0楼
发表于: 2010-08-21 12:05:44
这个程序时按照葛德彪书上第43页的公式编写的。但是不知道为什么,迭代结果不对。[table=100%][tr][td]//这个程序用牛顿迭代法求解数值色散方程。具体算法请参见葛书43页!
rf1Us2vp
#include <stdio.h>
|Z}uN!Jm
#include <math.h>
o mstJ9
#include <stdlib.h>
1HK5OT&
#define DELTA_LAMBDA 0.2
?rC^@)
#define PI 3.1415926535
7RNf)nz
double function( const double, const double );
!Ziq^o.
int main()
%toxZ}OP
{
oW3{&vfz
double beta=1.0, beta1=0.0;
P<yd
double error;
\:ntqj&A|
double phi = 1.0;
j&) "a,f
FILE *fp;
J/Ki]T9
:{<( )gfk
fp = fopen("data.dat","w");
/Y|oDfv
while ( phi <= 360.0 )
zn|~{9>y
{
Hp;Dp!PLa
error = 1.0;
_q`$W9M+k
while( fabs(beta - beta1) > 1e-6 )
y)_T!&ze
{
3l"7 $B
beta1 = beta - function(beta,phi);
"2:]9j
beta = beta1;
"QA <5P
}
sIpq
printf( "%lg %lg\n",phi,1.0/beta );
I;kKY
fprintf( fp, "%lg %lg\n",phi,1.0/beta );
aR30wxW&)
phi = phi + 1.0;
}l{r9ti
beta=3.0;
$FUWB6M
beta1=0.0;
44_7gOZ
}
fhlhlOg
fclose(fp);
KA1Z{7UK%
}
7KU/ 1l9$9
double function( const double beta, const double phi )
FRpTYLA2
{
,W"Q)cL
double result, tmp;
H@%Y!z@\
double A, B, C; //定义三个系数;
(5S(CYls
double a = 0.5;
.hW_P62\#
C = (PI*DELTA_LAMBDA)*(PI*DELTA_LAMBDA);
TGx:#x*k
A = PI*DELTA_LAMBDA*cos(phi);
_KVge)j
B = PI*DELTA_LAMBDA*sin(phi);
ZVu&q{s,
result = (sin(A*beta)*si ..
@A6P[r
Xao 0cb.R
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
learnerlcy
UID :43237
注册:
2009-10-07
登录:
2014-01-15
发帖:
55
等级:
仿真一级
1楼
发表于: 2010-08-21 12:06:41
这个程序时按照葛德彪书上第43页的公式编写的。但是不知道为什么,迭代结果不对,我自己实在是看不出个所以然来,请诸位高手指教!
共
条评分
离线
xingangahu
UID :22197
注册:
2008-11-28
登录:
2016-05-31
发帖:
900
等级:
积极交流五级
2楼
发表于: 2010-08-21 12:59:44
你的角度要转化为 弧度 不然 用 sin cos 是不对的
共
1
条评分
gwzhao
技术分
+1
积极参与讨论, 再接再厉!
2011-11-07
离线
learnerlcy
UID :43237
注册:
2009-10-07
登录:
2014-01-15
发帖:
55
等级:
仿真一级
3楼
发表于: 2010-08-21 13:57:35
回 2楼(xingangahu) 的帖子
哦,谢谢你,问题解决了,很感谢!
共
1
条评分
gwzhao
rf币
+3
积极参与论坛交流,欢迎继续参与本贴交流!
2011-11-07
发帖
回复