1樓:
limit函式?那是用來算函式極限的,而且是屬於符號計算工具箱,你這是數列極限,不能用。如果非得用,就自己寫出通項公式,這樣可以做成函式極限的樣子。
如果真想用matlab特色的數值解法,就得做for迴圈。而且不是1:inf,無窮根本就不能達到啊。
p1 = 0.8; % 自己取初值
p2 = p1;
for k = 1:1e5
p1 = 0.8*p2+0.2;
if abs(p1-p2)<1e-9
break;
endp2 = p1;
endfprintf('極限是%f\n',p1);
上面借鑑了cauchy收斂條件。
matlab怎麼定義一個迭代函式 5
2樓:真
f到底是二元函式還是一元函式啊,為什麼會有x1和x2兩個變數啊?
在matlab裡呼叫一個函式,怎麼知道它計算過程中迭代了多少次呢
3樓:無敵狂雷七星劍
貼上曾經用來解開普勒方程的,其中n傳進來時值是1function [ e,n ] = diedai1( e0,e,m,n)
%此函式用一般迭代法求解開普勒方程
% 此處顯示詳細說明
e=m+e*sin(e0);
while(abs(e-e0)>1e-8)e0=e;
n=n+1;
[e,n]=diedai1(e,e,m,n);end
4樓:匿名使用者
在迴圈迭代前設定一個變數記錄次數,並初始化為0,比如iteration=0;
在子程式迴圈迭代計算內部新增語句iteration=iteration+1;
儲存該子函式的時候,新增一個函式輸出iteration,比如[x,y,...,iteration]=function(xx,yy,zz,.....);
然後呼叫這個修改後的子函式就可以了
5樓:我行我素
可在程式中加入計數變數看次數,也有的程式自帶這種計數變數的,如優化、迭代,因程式不同而異。
matlab中function 函式怎麼用?
6樓:匿名使用者
m函式除了直接用函式名呼叫之外,也可以進行引數傳遞,使得matlab應用更加方便。
m函式檔案以function開頭,格式為
function 輸出變數 = 函式名稱(輸入變數)語句;例如:
%eg_1f.m
function s=f(m)
s=0for n=1:m
s=s+1/n/n;
end儲存為eg_1f.m,然後在指命視窗執行>>eg_1f(100)
ans =
1.6350
matlab函式迭代,這個程式怎麼編? 10
7樓:匿名使用者
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迭代函式表示?
8樓:匿名使用者
題主給出的方程a=b+c*(a-1)+d*power((a-1),2),如何用matlab表達a的迭代式?
可以這樣寫:
a(k+1)=b+c*(a(k)-1)+d*power((a(k)-1),2)
matlab 圖中迭代公式怎麼編寫
9樓:手機使用者
拉格朗日
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
endend
s=p*y0(k)+s;
endy(i)=s;
endsor迭代法的matlab程式
function [x]=sor_iterative(a,b)
% 用sor迭代求解線性方程組,矩陣a是方陣
x0=zeros(1,length(b)); % 賦初值
tol=10^(-2); % 給定誤差界
n=1000; % 給定最大迭代次數
[n,n]=size(a); % 確定矩陣a的階
w=1; % 給定鬆弛因子
k=1;
% 迭代過程
while k=n
x(1)=(b(1)-a(1,2:n)*x0(2:n)')/a(1,1);
for i=2:n
x(i)=(1-w)*x0(i)+w*(b(i)-a(i,1:i-1)*x(1:i-1)'-a(i,i+1:n)*x0(i+1:n)')/a(i,i);
endif max(abs(x-x0))=tol
fid = fopen('sor_iter_result.txt', 'wt');
fprintf(fid,'\n********用sor迭代求解線性方程組的輸出結果********\n\n');
fprintf(fid,'迭代次數: %d次\n\n',k);
fprintf(fid,'x的值\n\n');
fprintf(fid, '%12.8f \n', x);
break;
endk=k+1;
x0=x;
endif k==n+1
fid = fopen('sor_iter_result.txt', 'wt');
fprintf(fid,'\n********用sor迭代求解線性方程組的輸出結果********\n\n');
fprintf(fid,'迭代次數: %d次\n\n',k);
fprintf(fid,'超過最大迭代次數,求解失敗!');
fclose(fid);
endmatlab中龍格-庫塔(runge-kutta)方法原理及實現龍格-庫塔(runge-kutta)方法是一種在工程上應用廣泛的高精度單步演算法。由於此演算法精度高,採取措施對誤差進行抑制,所以其實現原理也較複雜。該演算法是構建在數學支援的基礎之上的。
龍格庫塔方法的理論基礎**於泰勒公式和使用斜率近似表達微分,它在積分割槽間多預計算出幾個點的斜率,然後進行加權平均,用做下一點的依據,從而構造出了精度更高的數值積分計算方法。如果預先求兩個點的斜率就是二階龍格庫塔法,如果預先取四個點就是四階龍格庫塔法。一階常微分方程可以寫作:
y'=f(x,y),使用差分概念。
(yn+1-yn)/h= f(xn,yn)推出(近似等於,極限為yn')
yn+1=yn+h*f(xn,yn)
另外根據微分中值定理,存在0t1,使得
yn+1=yn+h*f(xn+th,y(xn+th))
這裡k=f(xn+th,y(xn+th))稱為平均斜率,龍格庫塔方法就是求得k的一種演算法。
利用這樣的原理,經過複雜的數學推導(過於繁瑣省略),可以得出截斷誤差為o(h^5)的四階龍格庫塔公式:
k1=f(xn,yn);
k2=f(xn+h/2,yn+(h/2)*k1);
k3=f(xn+h/2,yn+(h/2)*k2);
k4=f(xn+h,yn+h*k3);
yn+1=yn+h*(k1+2k2+2k3+k4)*(1/6);
所以,為了更好更準確地把握時間關係,應自己在理解龍格庫塔原理的基礎上,編寫定步長的龍格庫塔函式,經過學習其原理,已經完成了一維的龍格庫塔函式。
仔細思考之後,發現其實如果是需要解多個微分方程組,可以想象成多個微分方程並行進行求解,時間,步長都是共同的,首先把預定的初始值給每個微分方程的第一步,然後每走一步,對多個微分方程共同求解。想通之後發現,整個過程其實很直觀,只是不停的逼近計算罷了。編寫的定步長的龍格庫塔計算函式:
function [x,y]=runge_kutta1(ufunc,y0,h,a,b)%參數列順序依次是微分方程組的函式名稱,初始值向量,步長,時間起點,時間終點(引數形式參考了ode45函式)
n=floor((b-a)/h);%求步數
x(1)=a;%時間起點
y(:,1)=y0;%賦初值,可以是向量,但是要注意維數
for ii=1:n
x(ii+1)=x(ii)+h;
k1=ufunc(x(ii),y(:,ii));
k2=ufunc(x(ii)+h/2,y(:,ii)+h*k1/2);
k3=ufunc(x(ii)+h/2,y(:,ii)+h*k2/2);
k4=ufunc(x(ii)+h,y(:,ii)+h*k3);
y(:,ii+1)=y(:,ii)+h*(k1+2*k2+2*k3+k4)/6;
%按照龍格庫塔方法進行數值求解
end呼叫的子函式以及其呼叫語句:
function dy=test_fun(x,y)
dy = zeros(3,1);%初始化列向量
dy(1) = y(2) * y(3);
dy(2) = -y(1) + y(3);
dy(3) = -0.51 * y(1) * y(2);
對該微分方程組用ode45和自編的龍格庫塔函式進行比較,呼叫如下:
[t,f] = ode45(@test_fun,[0 15],[1 1 3]);
subplot(121)
plot(t,f)%matlab自帶的ode45函式效果
title('ode45函式效果')
[t1,f1]=runge_kutta1(@test_fun,[1 1 3],0.25,0,15);%測試時改變test_fun的函式維數,別忘記改變初始值的維數
subplot(122)
plot(t1,f1)%自編的龍格庫塔函式效果
title('自編的 龍格庫塔函式')
定義matlab 函式,用來實現以下迭代過程:
10樓:匿名使用者
寫了一段小程式,供參考:
n=5;
x=[0 1];
claplot(x,[0 0],'linew',3,'clip','off');
text(0,0,'n=0 ','horiz','right')
hold on
axis off
for k=1:n
for i = length(x):-1:2
if ~isnan(x(i-1:i))
dx = (x(i)-x(i-1))/3;
x = [x(1:i-1) x(i-1)+dx nan x(i)-dx x(i:end)];
endend
plot(x,x*0+k,'linew',2,'clip','off');
end如果n足夠大,最後的結果應該就是一些孤立的點。因為每次長度變為上一次的2/3,這樣的極限是0,也就是說最後的線段總長度為0,那麼就只能是一些離散的點了。
jquery的函式function為什麼總是報
jquery是yii整合的,利用jquery寫的 document ready function mouseout function toggle btn a,delete a live click function fn.yiigridview.update vid,error function ...
jsp頁面中有兩個 function怎樣讓其中的先執行
可以使用延遲載入,定時器settimeout callback,time 的方法 把你需要在頁面載入完成後執行的函式function 放在定時器中即可 具體 例如 將這兩部分拿出來,單獨寫成函式 function fun1 function fun2 function 控制的話可以使用settime...
用matlab顯示影象的問題,matlab中影象顯示函式
顯示成result的結果可能是你沒有變換,需要對三個分量進行分類,要對彩色影象進行變換,result a或者多進行幾次迴圈,直到分別得到r g b,出現了灰度影象不要著急,因為你的彩色資訊沒有了,進行一次彩色轉換就好了。下面是具體步驟 第一步 a imread d ebook lena.bmp 第二...