プログラムの入力・編集はこんな感じ |
>> edit prog01.m |
Kulisch-Miranker [19] の例である。
prog01.m |
format long A=[64919121-159018721;41869520.5-102558961 b=[1;0] x=A\b; |
>> prog01 >> x >> A*x |
Rupm の例 (Loh-Walster [20])
prog02.m |
format long; a=77617; b=33096; f=(333.75-a^2)*b^6+a^2*(11*a^2*b^2-121*b^4-2)+5.5*b^8+a/(2*b) |
次は Foster [21] の例。
http://www.math.sjsu.edu/~foster/publications.htmlからgfpp.mを入手して 2、 ~/Documents/MATLAB に保存する。
N=100; A=gfpp(N,5); y=rand(N,1); b=A*y; x1=A\b; norm(x1-y)/norm(y) |
(epsは浮動小数点数の相対精度。 “This MATLAB function returns the distance from 1.0 to the next larger double-precision number, that is, eps = 2^-52.” と書いてある。
x2=gmres(A,b,N,N*eps,N);この結果は “gmres は、相対残差 2e-14 をもつ解に 反復 45 で収束しました。” のようになった。 norm(x2-y)/norm(y)この結果は “ans = 6.406927643920526e-13” となった。 |
桂田 祐史