登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
请高手帮我看看这个牛顿迭代法求解数值相 ..
发帖
回复
1081
阅读
3
回复
[
求助
]
请高手帮我看看这个牛顿迭代法求解数值相速度的程序
离线
learnerlcy
UID :43237
注册:
2009-10-07
登录:
2014-01-15
发帖:
55
等级:
仿真一级
0楼
发表于: 2010-08-21 12:05:44
这个程序时按照葛德彪书上第43页的公式编写的。但是不知道为什么,迭代结果不对。[table=100%][tr][td]//这个程序用牛顿迭代法求解数值色散方程。具体算法请参见葛书43页!
%v]7BV^%6
#include <stdio.h>
;)gLjF/F7
#include <math.h>
DWuRJ
#include <stdlib.h>
/M 0 p_4
#define DELTA_LAMBDA 0.2
w]n4KR4
#define PI 3.1415926535
M6\7FP6G
double function( const double, const double );
h>dxBN
int main()
8,=G1c
{
xYmdCf@H
double beta=1.0, beta1=0.0;
E\w+kAAf
double error;
Fl<(m
double phi = 1.0;
-eUV`&[4
FILE *fp;
]+AAT=B<!
6!Qknk$
fp = fopen("data.dat","w");
%Hh3u$Y,
while ( phi <= 360.0 )
R3$@N
{
.Nc_n5D6
error = 1.0;
s){Q&E~X
while( fabs(beta - beta1) > 1e-6 )
658\#x8|
{
ja?s@Y}-9s
beta1 = beta - function(beta,phi);
0"TgLd
beta = beta1;
g+.0c=G(
}
A xf^hBP
printf( "%lg %lg\n",phi,1.0/beta );
R^w}o,/
fprintf( fp, "%lg %lg\n",phi,1.0/beta );
.U<F6I:<md
phi = phi + 1.0;
Eevw*;$x
beta=3.0;
NJ<N %hcjK
beta1=0.0;
+B# qu/By
}
RXM}hqeG
fclose(fp);
iNXFk4
}
uw_H:-J
double function( const double beta, const double phi )
Y5n>r@)m
{
n_J5zQJ
double result, tmp;
Gh'X.?3
double A, B, C; //定义三个系数;
~ibF M5m
double a = 0.5;
>zFD$
C = (PI*DELTA_LAMBDA)*(PI*DELTA_LAMBDA);
KYf;_C,$
A = PI*DELTA_LAMBDA*cos(phi);
Y_+ SA|s
B = PI*DELTA_LAMBDA*sin(phi);
4Ppop
result = (sin(A*beta)*si ..
W=3? x
} #qQ2NCH
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
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
发帖
回复