
在matlab中执行循环迭代的方法:
a是一个由nk个数组成的数组、
对应的y也应该是由nk个数组成的数组
a=某数组
b=某常数
d=某常数
for k=1:1:nk
c=1
n=0
errf=1
求X1000:
while errf>1e-8n<100%计算结果精度要求1e-8,如果迭代超过100次还不收敛,退出循环。
y(k)=a(k)*b*c
c1=y*d
errf=(c1-c)/c1
X1000=c1。
扩展资料利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
参考资料:百度百科——迭代循环
牛顿迭代法matlab实现如下:function [x_star,index,it] = Newton(fun,x,ep,it_max)
%求解非线性方程的牛顿法
%第一个分量是函数值,第二个分量是导数值
% x为初始点
% ep为精度,当 | x(k)-x(k-1) |<ep时,终止计算,缺省值为1e-5
% it_max为最大迭代次数,缺省值为100
% x_star为当迭代成功时,输出方程的根
% 当迭代失败,输出最后的迭代值
% index为指标变量,当index=1时,表明迭代成功
% 当index=0时,表明迭代失败(迭代次数>=it_max)
% it为迭代次数
if nargin<4 it_max=100end
if nargin<3 ep=1e-5end
index=0k=1
while k<it_max
x1=xf=feval(fun,x)
x=x-f(1)/f(2)
if abs(x-x1)<ep
index=1break
end
k=k+1
end
x_star=xit=k
程序示例如下:
fun=inline('[x^3-x-1,3*x^2-1]')
[x_star,index,it] = Newton(fun,1.5)
z(1)=mz(2)=(z(1)+(m)/(z(1)))/2
i=1
while
abs(z(i+1)-z(i))>=1.0000e-005
z(i+2)=(z(i+1)+(m)/(z(i+1)))/2
i=i+1
end
yf=z(i+1)
以上程序已经经过测试
别忘了:执行程序之前,先给m赋值,否则会报错的!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)