[問題] 矩陣迭代問題已回收

看板MATLAB作者 (達達馬蹄)時間15年前 (2010/10/31 23:22), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
最近在解非線性微分方程 運算出矩陣形式 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
f = f(i) 這種寫法要避免,換個變數吧
11/01 00:32, 1F
文章代碼(AID): #1CpOd3i9 (MATLAB)