在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。
扩展资料利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
参考资料:百度百科——迭代循环
对于求平方根,变成方程模式为f(x)=x^2-a,即求此方程的实根;下面编写了两个function函数,可以直接调用.
二分法:
function x=sqrt_bisect(a)
f=@(x)x^2-a
if a0
xb=x
elseif f(xa)*f(x)>0
xa=x
else
break
end
end
end
x
牛顿迭代法:
function x=sqrt_newton(a)
f=@(x)x^2-a
df=diff(sym('x^2-a'))
if a1e-6
x0=x1
x1=x0-f(x0)/subs(df,x0)
end
end
x=x1
调用格式为:
sqrt_bisect(3)
ans =
1.7321
或者
sqrt_newton(2)
ans =
1.4142
四阶龙格库塔法精度为4,属于单步递推法,单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点,从上述定义可以看出,龙格库塔实质上是求一阶微分方程,对其进行排列后就可以进入Matlab进行编程。
但是如果将一阶导看作变量,则二阶导也不过是这个变量的一阶导而已,对于下述二阶方程:基本思想如下令位移为q的一阶导,即位移的一阶导(速度)为q的二阶导。
是用一个简单的迭代式来画分叉混沌图的,从这个例子里,不难学到如何如何画分叉图,其原理不难,两个循环来在2维平面作图,一个if筛选迭代的结果。
还是类似上面那个例子,这里给出不一样的代码实现方法。没看懂的可以再看一遍,里面主要的还是两个for循环,下面这个代码是用第三个for循环来实现对迭代结果的筛选的,这里不必纠结细节,功能实现用if或者for都可以。
依次类推,如果在区间[xi,xi+1]内多预估几个点上的斜率值K1、K2、……Km,并用他们的加权平均数作为平均斜率K*的近似值,显然能构造出具有很高精度的高阶计算公式。经数学推导、求解,可以得出四阶龙格-库塔公式,也就是在工程中应用广泛的经典龙格-库塔算法这样就完成了matlab的编程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)