matlab迭代演算法程序
⑴ 求迭代分形的MATLAB程序
function
cycle6(px,py,r,n)
%px,py和r分別是大圓圓心坐標和半徑,n是迭代次數
%例子:
%cycle6(0,0,1,4);axis
equal
t=linspace(-pi,pi);
plot(r*cos(t)+px,r*sin(t)+py)
theta=pi/3*(0:5);
newr=r/3;
newpx=px+2*newr*cos(theta);
newpy=py+2*newr*sin(theta);
if
n>1
for
i=1:6
hold
on;cycle6(newpx(i),newpy(i),newr,n-1);
end
end
⑵ 怎樣在matlab中執行循環迭代
在matlab中執行循環主要是利用for語句。如下
x = 0.3;
for i = 1:1000
x = (x+2.5)*x;
end
在matlab中運行結果如圖:
算出來的X1000是無窮大
(2)matlab迭代演算法程序擴展閱讀
malab中循環的用法
循環輸出變數
for i=1:4
i
end
其中1:4代表一個行向量1 2 3 4,在matlab中,行向量的另外一個表示方法是[1 2 3 4],即for i=1:4等價於for i=[1 2 3 4],編寫程序時牢記一個點:對於某次固定的迭代,i會從這個向量中取一個值,該值可以參與循環中的計算。
修改迭代步長
例子:遍歷1~10之間的所有奇數
for i=1:2:10
i
end
其中1:2:10表示迭代從1開始,步長為2,最大不超過10,即代錶行向量1 3 5 7 9。
⑶ 用matlab做,牛頓迭代法
function [ A ] = cal( a,b,v )%a,b表示區間,v是精度
i=1;
x = (a+b)/2;
A=[i x];
t = x-(x^3-x-1)/(3*x^2-1);%迭代函數
while(abs(t-x)>v)
i=i+1;
x = t;
A = [A;i x];
t = x-(x^3-x-1)/(3*x^2-1);%迭代函數
end
A = [A;i+1 t];
end
運行結果:
>> format long;
>> cal(1,2,0.00001)
ans =
1.000000000000000 1.500000000000000
2.000000000000000 1.347826086956522
3.000000000000000 1.325200398950907
4.000000000000000 1.324718173999054
5.000000000000000 1.324717957244790
⑷ MATLAB簡單迭代法
z(1)=m;
z(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賦值,否則會報錯的!
⑸ 牛頓迭代演算法的matlab程序
% 用牛頓下山法求解方程
function [x,k]=myfun_newton(f,x0,emg)
% f表示非線形方程
% x0迭代初值,此種方法是局部收斂,初值要選擇恰當
% emg是精度指標
% k,u分別表示迭代次數和下山因子
% d1表示非線形方程f在x0處的導數值
[f1,d1]=feval(f,x0);
k=1;
x(1)=x(0);
x(2)=x(1)-f1/d1;
while abs(f1)>emg
u=1;
k=k+1;
[f1,d1]=feval(f,x(k));
x(k+1)=x(k)-u*f1/d1;
while abs(f2)>abs(f1)
u=u/2;
x(k+1)=x(k)-u*f1/d1;
[f2,d2]=feval(f,x(k+1));
end
end
這個收斂速度快,建議給你用下
⑹ 請問怎麼用matlab實現牛頓迭代法,有具體的代碼嗎,謝謝
牛頓迭代法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=100;end
if nargin<3 ep=1e-5;end
index=0;k=1;
while k<it_max
x1=x;f=feval(fun,x);
x=x-f(1)/f(2);
if abs(x-x1)<ep
index=1;break;
end
k=k+1;
end
x_star=x;it=k;
程序示例如下:
fun=inline('[x^3-x-1,3*x^2-1]');
[x_star,index,it] = Newton(fun,1.5)
⑺ MATLAB函數迭代,這個程序怎麼編
p0=1;
v0=2;
%第一次迭代
k(1)=K(P0,V0);
p(1)=p (K(1));
V(1)=v (K(1));
%第2到第100次迭代
for i=2:100%假設迭代100次
k(i)=K(P(i-1),V(i-1));
p(i)=p (K(i));
V(i)=v (K(i));
end
%這樣就可以了,迭代幾次自己改,希望採納
⑻ 用MATLAB編出牛頓迭代法的程序
function newton(x0,e,N)
%輸入xo為估計的迭代初值,e為規定的誤差,N為最大迭代次數.
%輸出x,y為最後迭代的兩個近似根,k為迭代次數.
clc
format long;
disp('迭代次數 近似根')
k=0;
x1=0;
x2=x0;
while (abs(x2-x1))>e
x1=x2;
x2=x1-f(x1)./df(x1);
k=k+1;
if k>N
return;
end
%%%%%%記錄並輸出%%%%%%%%%
o1=sprintf('%3d',k);
o2=sprintf('%3.8f',x2);
OL=[o1,' ' o2];
disp(OL);
y(k)=x2;
end
%%%%畫圖%%%%%%%
i=1:k;
figure(2)
plot(i,y,'rD-')
grid on
xlabel('迭代次數')
ylabel('近似根')
title(['牛頓法求出的該方程的近似根 x^*=', num2str(x2,9)])
function y=f(x)
y=x^2/2-sin(x)-1;
function y=df(x)
y=x-cos(x);
⑼ 牛頓迭代法的matlab代碼
function y=f(x)
y=f(x);%函數f(x)的表達式
end
function z=h(x)
z=h(x);%函數h(x)的表達式
end x=X;%迭代初值
i=0;%迭代次數計算
while i<= 100%迭代次數
x0=X-f(X)/h(X);%牛頓迭代格式
if abs(x0-X)>0.01;%收斂判斷
X=x0;
else break
end
i=i+1;
end
fprintf('
%s%.4f %s%d','X=',X,'i=',i) %輸出結果
⑽ SOR迭代法 求MATLAB程序
迭代法 matlab實現代碼如下
function [x,n] = jacobi(A,b,x0,eps,varargin)
if nargin ==3
eps = 1.0e-6;
M = 200;
elseif nargin<3
disp('輸入參數數目不足3個');
return
elseif nargin ==5
M = varargin{1};
end
D = diag(diag(A)); %%求A的對角矩陣
L = -tril(A,-1); %%求A的下三角矩陣
U = -triu(A,1);%%求A的上三角矩陣
B = D(L+U);
f = D;
x = B*x0+f;
n = 1;%迭代次數
while norm(x-x0)>=eps
x0 = x;
x = B*x0+f
n = n+1;
if(n>=M)
disp('Warning:迭代次數太多,可能不收斂!')
return;
end
end
運行效果如下:
,A對稱正定,且0<ω<2,則解Ax=b的SOR方法收斂。