【发布时间】:2014-01-10 10:42:24
【问题描述】:
我需要在 MATLAB 中迭代 Newton-Raphson。这似乎很容易,但我无法弄清楚我错在哪里。问题是:
对于 mmm=1: 1) 如果 m=1 取 c1=c1b 和 c2=1-c1 并为 u1,2(i) 和 p1,2(i) 执行循环
2)如果 m=2 取 c1=c1+dc 和 c2=1-c1,这次用新的 c1 和 c2 为 u1,2(i) 和 p1,2(i) 循环
3) 如果 m=3 取 c1=(c1*st(1)-(c1-dc)*st(2))/(st(1)-st(2)) 并为新 c1 执行循环和 c2。
然后增加迭代次数: mmm=2 ; mmm 记录 N-R 次迭代的次数。第一次迭代 mmm=1,第二次 mmm=2,依此类推(此特定运行仅进行 2 次迭代)。 sumint 在积分内。
我需要在代码中绘制这些数字,但 MATLAB 在下面给出错误。请帮帮我。
相关部分代码:
ii=101;
u = cell(2, 1);
ini_cond = [0,0];
for i = 1:2;
u{i} = zeros(1,ii);
u{i}(:, ii) = ini_cond(i) * rand(1, 1);
end
for i=1:ii;
fikness=fik*sin(pi.*x);
u{1}(i)=(c1-H1D*(x-0.5)+AD/2.*(x-0.5).^2)./(H1-0.5*fikness-A*(x-0.5));
u{2}(i)=(c2+H1D*(x-0.5)-AD/2.*(x-0.5).^2)./(1.-H1+0.5*fikness+A*(x-0.5));
end
p = cell(2, 1);
q = cell(2, 1);
for i = 1:2;
p{i} = zeros(1,ii);
q{i} = zeros(1,ii);
end
p{1}(1)=0.5*(1.-u{1}(1).^2);
q{1}(1)=0;
p{2}(1)=0.5*(1.-u{2}(1).^2);
q{2}(1)=0;
for i=2:101
q{1}(i)=q{1}(i-1)-dx*(u{1}(i-1)-ub{1}(i-1))./dt;
p{1}(i)=0.5*(1.-u{1}(i).^2)+q{1}(i);
q{2}(i)=q{2}(i-1)-dx*(u{2}(i-1)-ub{2}(i-1))./dt;
p{2}(i)=0.5*(1.-u{2}(i).^2)+q{2}(i);
end
st = zeros(2, length(t));
st(1,:)=p{1}(100)-p{2}(100);
m=m+1;
if m==3;
c1=(c1*st(1)-(c1-dc)*st(2))/(st(1)-st(2));
c2=1-c1;
end
for i = 1:2;
sumint{i} = zeros(1,length(t));
end
sumint = cell(2, 1);
sumint{1}(1)=0.5*(p{2}(1)-p{1}(1));
sumint{2}(1)=0.5*(p{2}(1)-p{1}(1)).*(-1/2);
for i=2:ii-1;
x=(i-1)*dx;
sumint{1}(i)=sumint{1}(i-1)+(p{2}(i)-p{1}(i));
sumint{2}(i)=sumint{2}(i-1)+(p{2}(i)-p{1}(i))*(x-1/2);
end
H1DDOT=-sumint{1}.*dx./rmass;
H1D=H1D+dt*H1DDOT;
H1=H1+dt*H1D;
ADDOT=sumint{2}*dx./rmomi;
AD=AD+dt*ADDOT;
A=A+dt*AD;
H1L=H1+A.*0.5;
H1R=H1-A.*0.5;
H2=1.-H1;
rat1=AD./ADinit;
rat2=ADDOT./AD;
u 是速度 p 是压力 c1,c2 是外倾效应 H1DDOT 和 ADDOT 是 H1 和 A 的二阶导数。 sum1 和 sum2 是定义 H1DDOT 和 ADDOT 值的积分内部。 H1DDOT 和 ADDOT 是时间的函数。
【问题讨论】:
-
我的意思是我的目标是找出如何更改变量 c1、c2 并将它们放入所有 u1,2(i) s 和压力 p1,2 (i) ss 然后计算 H1D, H1DDOT 和 AD,ADDOT.. 非常感谢