matlab中eps是乙個函式,可以返回某乙個數n的最小浮點數精度,形式例如eps(n)。一般直接用eps即可。
eps = eps(1) = 2.2204e-16
1 == 1 + eps: false
1 == 1 + eps * 0.51: false
1 == 1 + eps * 0.5: true (<=0.5 時為true)
自定義函式的途徑:
m檔案函式(m file function)
匿名函式(anonymous function)
1.m檔案函式
範例function c=myadd(a,b)
%這裡可以寫函式的使用說明,前面以%開頭
%在工作區中,help myadd將顯示此處的說明
c=a+b;
%end %非必須的
第一行function告訴matlab這是乙個函式,a,b是輸入,c是輸出,myadd是函式名。以m檔案定義的函式必須儲存為函式名的形式,上例中,函式應儲存為myadd.m。要使用myadd函式,該函式必須在matlab的搜尋路徑中。
呼叫方式:
在matlab命令符後輸入
a=1;b=2;
c=myadd(a,b)
關於m檔案定義函式還有許多的說明,暫時略去。。。
通常作為引數傳遞給另外乙個函式。比如fminsearch,lsqcurvefit等函式需要以函式作為引數。
f=inline(『x.^2』,『x』);
建立了函式f(x)=x^2。要計算f(3),在工作區輸入f(3)即可。f([2 3 4])計算在x=2 3 4時的值
f=inline(『x+y』,『x』,『y』)
建立了二元函式f(x,y)=x+y,工作區輸入f(2,3)計算2+3,等同於feval_r(f,2,3)。
3.匿名函式(anonymous function)
匿名函式使用函式控制代碼來表示匿名函式,定義形式為
函式控制代碼=@(變數名) 函式表示式
例如:f=@(x) x.^2
定義了函式f(x)=x^2,f(2)計算在x=2處的值。
匿名函式可以呼叫matlab函式,也可以使用工作區中存在的變數,例如
a=2;
f=@(x) x.^2+a
f(2) %計算時引用了變數a
a=0;
f(2) %仍然引用的是a=2
匿名函式也可以由matlab的內建函式或m檔案函式建立,例如
f=@sin %f(x)=sin(x)
f(pi/2) %sin(pi/2)
functions(f) %檢視函式資訊
利用單元陣列可以建立多個函式的控制代碼,例如
f=f(pi/2) %計算sin(pi/2)
f(pi) %計算cos(pi)
函式控制代碼的另乙個重要特徵是可以用來表示子函式、私有函式和巢狀函式。
在建立匿名函式時,matlab記錄了關於函式的資訊,當使用控制代碼呼叫該函式的時候,matlab不再進行搜尋,而是立即執行該函式,極大提高了效率。
clear all;
clc;
format long;
fstr=input('please enter the function with f-left format: f(x)=','s');
f=inline(fstr);
left=input('please enter the left value of guess interval: a=') ;
right=input('please enter the right value of guess interval: b=');
err=input('please enter the allowed error:');
while f(right)*f(left)>0
disp('wrong input.\n');
left=input('please enter the left value of guess interval: a=') ;
right=input('please enter the right value of guess interval: b=');
err=input('please enter the allowed error:');
enda=left;
b=right;
fprintf('k\tinterval\t\tx\tf(x)\n');
for i=1:1000
mp=(right+left)/2;
fprintf('%i\t[%f,%f]\t%f\t%f\n',i,left,right,mp,f(mp));
if f(mp)>0
right=mp;
else
left=mp;
endif i>(log(b-a)-log(err))/log(2)
break;
endi=i+1;
enddisp('x=');
——**源自某大佬同學,吃水不忘挖井人,致敬大佬。
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...
二分法的使用之MATLAB實現
今天數值計算上機做了乙個驗證二分法計算非線性方程的實驗。以前沒有想過這個問題,今天作業一下感覺這個方法確實不錯,隨記下來。首先給出要計算的方程 f x x 2 m 然後編寫演算法 matlab code 其中a,b表示查詢根存在的範圍,m表示要求解函式的值 function y f2 a,b,m k...