[問題] 矩陣迭代問題已回收
最近在解非線性微分方程
運算出矩陣形式 Ax = B (B已知)
A裡面的元素是f(自己給定)的函數。eg:A(1,1) = 2+f*2 之類
然後給予f的起始猜值 算出x後
要如何把算出的x值 取代原本的起始猜值f
計算到 下一次迭代結果的平方 減掉這次運算結果的平方 小於10^-8 就停止運算
一直想不出來怎麼寫,有大大可以指點一下嗎?
附上程式碼
clear
clc
fprintf('Test\n')
k = 21 %取k個點做微分運算
h = 1/(k-1)%h的值隨k變
A = zeros(k)
A(1,1) = 1
F = zeros(21,1)
F(21,1) = 1
%for o = 1:21
%X(o,1) = 1
for j = 2:21
for i = 1:21
f(i) = 1
end
if j < 4
B = zeros(1,k-j-4)
O = zeros(1,j-1)
%f(j) = 0.001
f =
[(-5/h^3+2*f(i)/h^2),(18/h^3-5*f(i)/h^2),(-24/h^3+4*f(i)/h^2),(14/h^3-f(i)/h^2),(-3/h^3)]
A(j,:) = [O,f,B]
elseif j < k-2;
B = zeros(1,k-j-3)
O = zeros(1,j-4)
f =
[(1/(4*h^3)),(-2/h^3+4*f(i)/(3*h^2)),(13/(4*h^3)+4*f(i)/(3*h^2)),(-5*f(i)/2),(-13/(4*h^3)+4*f(i)/h^2),(2/h^3-f(i)/(12*h^2)),-1/(4*h^3)]
A(j,:) = [O,f,B]
elseif j < k+1;
B = zeros(1,k-j)
O = zeros(1,j-5)
%f(i) = 0.001
f =
[(3/h^3),(-14/h^3-f(i)/h^2),(24/h^3+4*f(i)/h^2),(-18/h^3-5*f(i)/h^2),(5/h^3+2*f(i)/h^2)]
A(j,:) = [O,f,B]
end
end
X = inv(A)*F
然後就不會做了...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.217.37
推
11/01 00:32, , 1F
11/01 00:32, 1F