EDA365电子论坛网
标题:
我自定义函数[x,k,err]=Jacobi(A,b,n)后怎么才能输出k和err?
[打印本页]
作者:
shuddkk
时间:
2020-7-7 10:07
标题:
我自定义函数[x,k,err]=Jacobi(A,b,n)后怎么才能输出k和err?
function [x,k,err]=Jacobi(A,b,n)
* j1 g/ a7 w3 t
%Input A:系数矩阵
# M- Y5 ~9 {3 c
%Input b:右端向量
5 U! x3 S1 V2 A6 u" r
%Input n:系数矩阵的阶数
5 W( I# @: \3 H- I3 l" m6 k- f
%Input epsilon:计算精度
& V8 \+ |& b! {. X. N1 o/ u
%Input K:最大迭代次数
/ {6 W: S+ v- m
%Input x0:初始向量
( }; ]" \" B$ h2 |& D
%Output x:迭代近似解
+ C( G0 m0 c f- k6 g6 e/ ~# a
epsilon=1e-6;
3 I' J, L: [: @7 C9 q$ F7 J
K=5000;
* v' c3 u* E3 u+ b
x0=rand(n,1);
# c! F& y/ N. ^$ Z3 f
k=1;
$ w8 [: y2 l3 _- P% i
x=x0;
% E1 f+ \4 `; U6 g6 `
while k<K
: p9 V& @! K3 t# b! k
for i=1:n
. m# Z! H; u' \6 ]7 a1 W9 [
s=b(i);
) |( A: i4 s* C5 O1 f: h. i; v
for j=1:n
+ n; w" G2 t5 m* T k2 E( P
s=s-A(i,j)*x(j);
; E) v, V w3 D
end
8 j, ?) L% R1 ^( D
s=(s+A(i,i)*x(i))/A(i,i);
# G1 }( H- z$ e! s" J
x(i)=s;
+ `* a+ H( @9 e6 s8 [
end
+ t# U# t8 ]0 W; @$ D& H+ d# {
if norm(x-x0,inf)<epsilon
, K+ e9 Y! U; \2 a. {' B
err=norm(x-x0,inf);
/ t3 N$ ]% z7 `! m0 V. b- w# Q
break;
! S1 s. Y! O5 \3 P" Z
end
@. o0 X' d8 T- H$ N/ ?
k=k+1;
3 H% L. i3 Y/ k/ F2 C G; F# M! w
end
0 _, }4 H6 @2 [) l, `7 W" L
end
7 {% |: r# s; i
5 ]; ~ R# z3 S8 S: O
7 a9 w5 [' r8 N5 _) V; k/ ~8 h+ J
4 Z& y7 {3 D+ J K
9 E6 u. {& R0 _, \, m6 Z! g: o
2 S, O$ g' t, L1 a, }2 P: U
在命令窗口输入 Jacobi([10,5,0,0;5,10,-4,0;0,-4,8,-1;0,0,-1,5],[6;25;-11;-11],4)后
- k# X3 E! n6 r# ?4 X/ Q( q
只得到了x的值,怎么输出k和err?
$ `7 q1 x% W6 `( L3 \4 Z& R
0 ^% }6 ?+ r8 w0 i- F% ^( w \
作者:
Uifhjvv
时间:
2020-7-7 10:25
需要按方括号的格式调用后面的输出
3 Y; s" u. B; v* A; I
[x,k,err]=Jacobi([10,5,0,0;5,10,-4,0;0,-4,8,-1;0,0,-1,5],[6;25;-11;-11],4)
作者:
Uifhjvv
时间:
2020-7-8 13:43
像k = 5000这样的等式可以写在函数参数里吗
作者:
cichishia
时间:
2020-7-9 10:42
Uifhjvv 发表于 2020-7-8 13:43
/ n& G9 H3 N2 Q! n* O. y- d
像k = 5000这样的等式可以写在函数参数里吗
1 k. n' E; l& v1 _
应该可以吧
. w8 n1 i0 \" _2 ~+ P! U, t, u% V
作者:
pTDbn25
时间:
2020-7-10 10:37
来学习一下
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2