数学建模社区-数学中国
标题:
求助:关于分块矩阵的还原,为什么实行不了
[打印本页]
作者:
舒米牛牛
时间:
2009-12-17 20:17
标题:
求助:关于分块矩阵的还原,为什么实行不了
%运用Jacobi迭代拟合出来的u关于x和y的矩阵
6 ]4 L9 k- U- a
function J=jac(A,b,u0,eps)
4 {1 i1 ~+ q( d! u1 A6 f4 E1 ]2 z
if nargin==3
( c/ J& ?' x0 E1 U' \* q
eps=1.0e-8
9 m& P6 _ {: n2 N9 n
elseif nargin<3
- D6 [1 i, k2 f X6 \) u7 b& L
'error'
% }$ S2 q1 {2 V( Z% y7 p! a. O
return
* ]( V9 A, O' d
end
. p/ X7 \5 ~" b3 R
7 R, t! N( e0 w, h
%定义内部节点矩阵u0
' R7 ?7 Q( Z ^0 H8 ?
h=1;k=1;
- I# ~ s3 z4 s: q% I
x=0:h:17;y=0:k:10;
6 z: E F" C/ T1 u8 |8 F
e=length(x)-2;f=length(y)-2;
" l" r: R- l. v E- B7 R- ~
u=zeros(e,f);
/ ?, g- x4 O# y/ F# J/ }, {5 |
u0=u;
8 F l& a% K. e7 L4 M9 [7 i5 H" c
" |" ~& n7 ~. O6 }' @2 N+ A! M6 R
%定义外部节点p
4 z9 b9 T* o8 O4 B u+ \+ P$ K
p=zeros(e+2,e+2);
$ F3 T# j. g) e7 D4 W
p(1,1:f+2)=0;p(e+2,1:f+2)=0;
: D. e0 H) n# I( q7 f6 l
p(1:e+2,1)=100;p(1:e+2,f+2)=100;
5 g: L, @; V, g
; s7 [0 I' M2 T4 o0 L# b5 M
%定义系数矩阵A
5 @& k7 \; p+ ^3 G& M: l
A=zeros(e*f,e*f);
- @2 W) v1 g/ Z* j2 |1 J/ v
B=mat2cell(A,ones(e*f/e,1)*e,ones(e*f/e,1)*e);
Y+ ?5 F" z; ?- b8 _2 E
d1=ones(e,1);d2=ones(e-1,1);
* h. i+ |0 B( U" h5 a5 |
M=4*diag(d1)-diag(d2,1)-diag(d2,-1);
& V% B. `2 f6 i/ v, ~
N=-eye(e);
|* n3 E9 ?, m5 r' B
B{1,1}=M;B{e,e}=M
0 v) Y* Q. X5 ?+ p- \: c- T# H& _
for i=2:e-1
8 P {3 ~* z. Q7 ~% ~
B{i,i}=M;B{i-1,i}=N;B{i+1,i}=N
: d$ f' Z$ x. e3 J5 e3 b& r0 N- P
end
; d5 B$ B% B3 G& m8 i
A=cell2mat(B);
' l. v' m+ S! j' J* a
这里总是显示
1 P, @* a; s8 j4 O2 D
??? function J=jac(A,b,u0,eps)
* @' g8 w& i, W+ m9 z7 r
|
/ f. @- E' T6 M o) _, z2 c a
Error: Function definitions are not permitted at the prompt or in scripts.
+ Q/ ~- G, j8 l7 p8 m
2 Z$ g/ T3 N, s# \: X0 s- H9 M! Y
%定义b
7 _, s' u5 B2 Z7 M' {" n$ x# \
b=ones(e*f,1);
6 }& _' `5 J4 V3 U# e! x* D
for i=1:e
/ n- U `! {5 k- U
for j=1:f
4 G, E f0 N7 I1 @- d) O. f! E
b(i+j)=p(i,j+1)+p(i+1,j)+p(i+2,j+1)+p(i+1,j+2)
9 W& u4 r6 R+ P6 O! C$ V
end
) G- |3 o6 A- T8 j
end
/ D: E* O* G$ ]9 L3 Q( {) ~- H
%运用Jacobi迭代法计算
. P) ^& M' L. O' Z$ z( V& u# U
D=diag(diag(A));
' M2 a3 r" I; s( O; ]
D=inv(D);
- s% E" T% ~" T ?3 o. @% U- {) _
L=tril(A,-1);
l1 h7 q' c4 x! a# \+ T: a+ U$ J6 X
U=triu(A,1);
: @% |8 B- s P @& m$ B2 P( @
B=-D*(L+U);
. ^' |9 L6 ?* L1 W* @0 R) E
f=D*b;
3 Y: c$ |6 m1 W; }; I9 {: b. v( b! G
J=B*u0+f;
' d8 k: G" T" o/ W
while norm(J-u0)>=eps
) ^/ z4 I( ?* \1 I. u
x0=J;
( K( |) q' u; l' `1 {( e: q* F
J=B*u0+f;
- m3 b- }" z. b, N
end
0 b* @5 Z# q% w
return
作者:
舒米牛牛
时间:
2009-12-17 20:18
自己顶一下,拜托哪位高手指点一下,纠结这个矩阵的还原,想了好多方法还是不行~~实在想不出哪里出错了
作者:
BenCam
时间:
2009-12-17 21:06
对不起,我也不知道,帮不了忙!
作者:
madio
时间:
2009-12-17 22:38
你是不是函数的定义没有放在M文件中?
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5