matlabmatlab插值函数程序序x3(n)=x(n+4)x(n-1)+x(2-n)x(n)

下次自動登錄
現在的位置:
& 綜合 & 正文
Matlab 學習筆記 (部分內容系轉載)
由於要參加數學建模比賽的原因,我需要在不到一周的時間內初步地學習Matlab。
因此,我希望把我在學習過程中閱讀的資料記錄下來,方便跟我一樣需要在較短時間內速成Matlab的同學。
基本上我記錄的東西都是從網上的資料總結而來。所以這篇文章更偏向是一個資料匯總類的東西。
凡是給過我幫助的資料我都已經列在“參考資料”里,為了美觀就不在具體內容里標註引用了,請見諒。
另外,還有部分內容引自《》,一併感謝。
我使用的MATLAB版本是r2012a。絕大部分代碼我都在本機運行過。由於資源的來源很多,代碼風格可能不太一致。
博主最終學了一點點就干別的去了。。數模比賽也悲劇了。。所以此文爛尾了。。不過博主如果以後還要學習matlab,可能會再來更新也說不定。
一、基本操作
Matlab使用的是M語言,是一種解釋性語言。
M語言文件的後綴名是.m。Matlab特有的數據存儲格式是.mat。
Matlab默認的編程界面是控制行窗口,要新建.m文件可以點擊File-&New-&Script。
常規操作我就不過多解釋了。
若要了解某一函數的調用方式,直接在命令行窗口輸入“help XXX”即可。
給出一些參考資料:
二、數據交互
1、從純數據txt文件中讀取數據
使用簡單粗暴的LOAD/SAVE函數。
LOAD可以讀MAT-file data或者用空格間隔的格式相似的ASCII data。SAVE可以將MATLAB變量寫入MAT-file格式或者空格間隔的ASCII data。
M = load('test.txt')
% 從input.txt中讀一個矩陣M。
% 把M的每個元素加上5
save output M
% 把M保存在output.mat文件中
save output.txt M -ascii
% 把M以ASCII形式保存在output.txt文件中
2、從txt文件中按照特定格式讀取數據
使用TEXTREAD/STRREAD函數
[A,B,C,…] = textread(filename,format,N)
其中括號裡面變量的個數必須和format中定義的個數相同。 如果每N行相同格式的數據,可採用[A,B,C,…] = textread(filename,format,N)的語法,讀取N次。
textread不用先fopen那個文件,適用于格式統一的txt文件的一次性大批量讀取。textread讀取某個文件後,下次再用textread讀取這個文件時,還是會從文件頭開始讀取。
[data1,data2,data3,data4,data5] = textread('output.txt','%f %f %f %f %s',150,'delimiter',',');
% 以','為分隔符
[data1,data2,data3,data4] = textread('output.txt','%n %n %n %n','delimiter', ',','headerlines', 5);
% 跳過開頭的5行
[data1,data2,data3,data4] = textread('output.txt' , '%s %s %*f %d %s', 1)
% ‘*f ’告訴textread跳過一個浮點數。
[data] = textread('output.txt','%s %*[^\n]');
% [^\n] 就是一直讀到行尾,%*[^\n] 是一直跳到行尾。可用於只讀取第一列
[data1,data2,data3,data4] = textread('output.txt','%s test %d %f %d %s', 1)
% 忽略‘test’,只讀取後面的數字
3、從txt文件中讀取特定區域的數據:
下面這個函數是取filein中的第line行寫入fileout中的程序:
function dataout=dataread(filein,fileout,line)
fidin=fopen(filein,'r');
fidout=fopen(fileout,'w');
while ~feof(fidin) % 判斷是否為文件末尾
tline=fgetl(fidin); % 從文件讀行
nline=nline+1;
if nline==line
fprintf(fidout,'%s\n',tline);
fclose(fidin);
fclose(fidout);
調用格式:dataout=dataread(filein,fileout,line)
如果txt文件數據是矩陣形式的,而沒有其它的文字,用下面的程序就可以讀任意行任意列的數據
a=textread('ll.txt');
t=a(1:43,4:10);
% 1:43是1到43行,4:10是4到10列的數據
4、讀取Excel文件
使用xlsread、xlswrite函數
[data] = xlsread('filename')
% 從excel文件filename的第一個工作頁中讀取所有的數據到double型數據data中。它忽略頭行、頭列、尾行、和尾列的所有單元為文本的行列,其他單元中的文本全部讀取為NaN。
[data] = xlsread('filename', -1)
% 手動框選要讀取的數據塊
[data] = xlsread('filename', sheet, 'range')
% filename, sheet, range 文件名、sheet名、範圍(eg:'A1:D2'就指定了一個子矩陣的對角線範圍)
[data] = xlswrite('filename', 'M', sheet, 'range')
% filename, M, sheet, range 文件名、數據、sheet名、範圍
如果要讀取批量的文件
首先將多個文件進行批量重命名例如file1.xls,file2.xls,file3.xls,...
然後用循環的方式實現:
for i=1 : 100
filename=['file', num2str(i), '.xls'];
num=xlsread(filename)
1) 文本文件中的每個字節的最高位都是0,也就是說文本文件使用了一個字節中的七位來表示所有的信息,而二進制文件則是將字節中的所有位都用上了。在用文本文件方式打開文件時,會將字符自動轉換成ASCII碼。
2)當excel中有合併單元格時,任何一個合併前的單元格的名字都會指代整個合併後的單元格,而將整個單元格讀入。
6、參考資料
三、數據擬合
1、plot函數的使用
plot函數的輸入參數是矩陣形式
(1) 當x是向量,y是有一維與x同維的矩陣時,則繪製出多根不同顏色的曲線。曲線條數等於y矩陣的另一維數,x被作為這些曲線共同的橫坐標。
(2) 當x,y是同維矩陣時,則以x,y對應列元素為橫、縱坐標分別繪製曲線,曲線條數等於矩陣的列數。
(3) 對只包含一個輸入參數的plot函數,當輸入參數是實矩陣時,則按列繪製每列元素值相對其下標的曲線,曲線條數等於輸入參數矩陣的列數。
當輸入參數是複數矩陣時,則按列分別以元素實部和虛部為橫、縱坐標繪製多條曲線。
含多個輸入參數的plot函數
調用格式為:
plot(x1,y1,x2,y2,…,xn,yn)
(1) 當輸入參數都為向量時,x1和y1,x2和y2,…,xn和yn分別組成一組向量對,每一組向量對的長度可以不同。每一向量對可以繪製出一條曲線,這樣可以在同一坐標內繪製出多條曲線。
(2) 當輸入參數有矩陣形式時,配對的x,y按對應列元素為橫、縱坐標分別繪製曲線,曲線條數等於矩陣的列數。
具有兩個縱坐標標度的圖形
在MATLAB中,如果需要繪製出具有不同縱坐標標度的兩個圖形,可以使用plotyy繪圖函數。調用格式為:
plotyy(x1,y1,x2,y2)
其中x1,y1對應一條曲線,x2,y2對應另一條曲線。橫坐標的標度相同,縱坐標有兩個,左縱坐標用於x1,y1數據對,右縱坐標用於x2,y2數據對。
hold on/off命令控制是保持原有圖形還是刷新原有圖形,不帶參數的hold命令在兩種狀態之間進行切換。
設置曲線樣式
MATLAB提供了一些繪圖選項,用於確定所繪曲線的線型、顏色和數據點標記符號,它們可以組合使用。例如,“b-.”表示藍色點劃線,“y:d”表示黃色虛線並用菱形符標記數據點。當選項省略時,MATLAB規定,線型一律用實線,顏色將根據曲線的先後順序依次。
要設置曲線樣式可以在plot函數中加繪圖選項,其調用格式為:
plot(x1,y1,選項1,x2,y2,選項2,…,xn,yn,選項n)
2、使用polyfit()一元多項式擬合
polyfit(X, Y, N):多項式擬合函數,返回降冪排列的多項式係數。X是因變量,Y是自變量,N是擬合函數的最高冪次。
polyval(p, Xi):計算多項式的值
在EXCEL文件中存儲如下數據:
新建.m文件輸入以下代碼:
x = xlsread('in.xlsx', 1, 'B1:J1');
y = xlsread('in.xlsx', 1, 'B2:J2');
P = polyfit(x, y, 3);
% 用三次方函數擬合y相對於x的係數。返回降冪排列的多項式係數
xi = 0: .2: 10;
% 0~10,以0.2為步進的序列
yi = polyval(P, xi);
plot(xi, yi, x, y, 'r*'); % 繪製曲線和散點
運行結果:
還有兩種效果相同的寫法:
x = xlsread('C:\Users\Administrator\Desktop\in.xlsx', 1, 'B1:J1');
y = xlsread('C:\Users\Administrator\Desktop\in.xlsx', 1, 'B2:J2');
P = polyfit(x, y, 3);
xi = linspace(min(x), max(x));
yi = polyval(P, xi);
plot(x, y, '*', xi, yi);
x=[1; 1.5; 2; 2.5; 3];
y=[0.9; 1.7; 2.2; 2.6; 3];
P = fittype('poly3');
f = fit(x, y, P); % fit函數的參數只能是列變量
plot(f, x, y);
當然使用圖形化界面也是可以的。
先畫出數據點: plot(xi, yi, x, y, 'r*');
然後在出現的圖形界面中,選擇Tools -& Basic Fitting
可以分別用多階函數進行擬合。選項和效果如下圖:
3、自定義函數一元曲線擬合
用fittype()定義擬合函數,然後用 fit() 函數擬合。
fittype函數原型如下:
fittype(libname)
fittype({expr1,...,exprn}, Name, Value,...)
fittype()中independent是自變量,coefficients是因變量。
需注意 fit() 函數的因變量和自變量都要是列向量。
x = [1; 1.5; 2; 2.5; 3];
y = [0.9; 1.7; 2.2; 2.6; 3];
f = fittype('a * x .^ 2 + b * x + c', 'independent', 'x', 'coefficients', {'a', 'b', 'c'});
P = fit(x, y, f)
% 用指定函數擬合y相對於x的係數。注意這裡的數據必須是列向量
xi = 0: .2: 5;
% 0~5,以0.2為步進的序列點
yi = P(xi);
plot(x, y, 'r*', xi, yi, 'b-'); % 繪製曲線和散點
關於ploy()函數的更多調用方式以及其它圖形的繪製方法,請直接移步《》。
4、regress()函數多元函數擬合
regress(y,x) 的重點與難點是如何加工處理矩陣x。
y是函數值,一定是只有一列。
也即目標函數的形式是由矩陣X來確定
如s=a+b*x1+c*x2+d*x3+e*x1^2+f*x2*x3+g*x1^2,
一定有一個常數項,且必須放在最前面(即x的第一列為全1列)
X中的每一列對應於目標函數中的一項(目標函數有多少項則x中就有多少列)
X=[ones, x1, x2, x3, x1.^2, x2.*x3,x1.^2]
(剔除待定係數的形式)
用regress()函數對人口預測模型擬合:
T = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30]
for t = 1:30
x(t) = exp(-t);
y(t) = 1/Y(t);
reshape(x, 30, 1);
reshape(y, 30, 1);
c = ones(30,1);
f = regress(y',[c,x']);
for j = 1:30,
Y(j) = 1/ (f(1) + f(2) * exp(-j));
plot(T, Y)
5、nlinfit()多元任意函數擬合
順序([b,r,j]=nlinfit(x,y,’…’, b0)y為列向量;x為矩陣,無需加全1列,x,y就是原始的數據點,(x/y正順序,所以x不要加全1列)需預先編程(兩個參數,係數向量,各變量的矩陣/每列為一個變量)
存在的問題:不同的beta0,則會產生不同的結果,如何給待定係數的初值以及如何分析結果的好壞,如出現警告信息,則換一個待定係數試一試。因為擬合本來就是近似的,可能有多個結果。
重點(難點)是預先編程序(即確定目標函數的形式,而regress的目標函數由x矩陣來確定,其重難點為構造矩陣a)
x/y順序—列向量----x/y是原始數據,不要做任何修改
一定兩個形參(beta,x)a=beta(1); b=beta(2);c=beta(3);… x1=x(:,1); x2=x(:,2); x3=x(:,3);
即每一列為一個自變量
regress/nlinfit都是列向量
regress:有n項(n個待定係數),x就有n列;nlinfit:有m個變量則x就有m列
6、最小二乘法擬合線性回歸模型
以人口預測模型為例。
因為Logisic曲線的基本形式為
y = 1 / (a + b * eps(- t))
所以只要令y' = 1 / y,x' = eps(- t)。
就可以轉化為直線模型 y' = a * x' + b。
然後用最小二乘法進行回歸擬合即可。
T=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30]
for t = 1:30,
x(t)=exp(-t);
y(t)=1/Y(t);
c=ones(30,1);
B=inv(X'*X)*X'*y'
for j=1:30,
Y(j)=1/(B(1,1)+B(2,1)*exp(-j));
詳細代碼如下:
% 刪除工作空間中的項目,釋放系統內存
% 清除命令窗口
% 讀入人口數據(年)
% 讀入時間變量數據(t=年份-1970)
T=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30]
% 線性化處理
for t = 1:30
x(t)=exp(-t);
y(t)=1/Y(t);
% 計算,並輸出回歸係數B
c=zeros(30,1)+1;
B=inv(X'*X)*X'*y'
for i=1:30,
% 計算回歸擬合值
z(i)=B(1,1)+B(2,1)*x(i);
% 計算離差
s(i)=y(i)-sum(y)/30;
% 計算誤差
w(i)=z(i)-y(i);
% 計算離差平方和S
% 回歸誤差平方和Q
% 計算回歸平方和U
% 計算,並輸出F檢驗值
% 計算非線性回歸模型的擬合值
for j=1:30,
Y(j)=1/(B(1,1)+B(2,1)*exp(-j));
% 輸出非線性回歸模型的擬合曲線(Logisic曲線)
運行效果如下:
7、曲線擬合工具箱
在命令行窗口直接輸入'cftool'打開。或者單擊左下角的"Start"按鈕,選擇"Toolboxes"--&"Curve Fitting",打開"Curve Fitting Tool"。
這個工具箱的使用方式比較簡單,詳見《》。
1)MATLAB中的數組是按列存儲的。並且為數組元素分配了唯一的index,對於矩陣a[n][m],a[i][j]的index = j * n + i。
2) 用regress函數做多元線性回歸擬合的時候,要在X矩陣前加一個全1列,當做常數項。可以用到函數 ones(n, m) / zeros(n, m) 代表一個n * m 的全0 / 1 矩陣
3)fit()函數的X矩陣必須是列向量,可以用到一個函數B = reshape(A, n, m);
9、參考資料
四、規劃問題
1、線性規劃
MATLAB中線性規劃的標準形式是
min z = sigma(cj * xj)
即 sigma(aij * xj) &= bi
滿足不等式的解成為可行解,使目標函數最小的解稱為最優解。
MATLAB中解線性規劃的標準調用形式是:
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = linprog(f,A,b,Aeq,beq,LB,UB,X0)
f 是所求目標函數的係數矩陣。A, b分別是x和常數項的係數矩陣。
Aeq和beq代表等式約束條件
Aeq * X = beq。
LB和UB代表x值的上下界,LB &= xi &= UB。X0代表X的缺省值,該選項只適用於中型問題,默認大型問題時將忽略初值。
FVAL是目標函數最優解的值。X是取得最優解時X的取值,FVAL = f' * X。
exitflag為終止迭代的錯誤條件:若exitflag&0表示函數收斂於解x, exitflag=0,表示超過函數估值或迭代的最大數字,exitflag&0表示函數不收斂於解x。
lambda為解x的Lagrange乘子。若lambda=lower表示下界LB,lambda=upper表示上界UB,lambda=ineqlin表示不等式約束,lambda=eqlin表示等式約束,lambda中的非0元素表示對應的約束是有效約束。
min z = 2 * x1 + 3 * x2 + x3
x1 + 4 * x2 + 2 * x3 &= 8
3 * x1 + 2 * x2 &= 6
x1, x2, x3 &= 0
代碼如下:
f = [2; 3; 1];
A = [-1 -4 -2; -3 -2 0; -1 0 0; 0 -1 0; 0 0 -1];
b = [-8; -6; 0; 0; 0];
[x, fval] = linprog(f, A, b, [], [])
f = [2; 3; 1];
A = [-1 -4 -2; -3 -2 0];
b = [-8; -6];
[x, fval] = linprog(f, A, b, [], [], zeros(3, 1))
2、非線性規劃
MATLAB中非線性規劃的標準形式如下:
Aeq * X = Beq
Ceq(X) = 0
標準型為:
Aeq * X &= beq
Ceq(X) = 0
VLB &= X &= VUB
其中X為n維變元向量,G(X)與Ceq(X)均為非線性函數組成的向量,其它變量的含義與線性規劃、二次規劃中相同。
用Matlab求解上述問題,基本步驟分三步:
1. 首先建立M文件fun.m,定義目標函數F(x):
function f = fun(X);
2若約束條件中有非線性約束:G(X) 或Ceq(X)=0,則建立M文件nonlcon.m定義函數G(X)與Ceq(X):
function [G,Ceq]=nonlcon(X)
3. 調用函數fmincon()
[x,fval,exitflag,output] =fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)
3、二次規劃
若某非線性規劃的目標函數為 x 的二次函數,約束函數又全是線性的,則稱這種規劃為二次規劃
標準型為:
min z =1 / 2 *
XTHX + fTX
(H是實對稱矩陣)
quadprog() 函數的調用方式如下:
[X, FVAL, EXITFLAG, OUTPUT, LAMBDA] = quadprog(H, f, A, b, Aeq, beq, LB, UB, X0, OPTIONS)
min z = -2 * x1 - 6 * x2 +
x1 ^ 2 - 2 * x1 * x2 + 2 * x2 ^ 2
x1 + x2 ≤ 2
-x1 + 2 * x2 ≤ 2
x1 ≥ 0, x2 ≥ 0
H = [1 -1; -1 2];
c = [-2 ;-6];
A = [1 1; -1 2];
b = [2;2];
[x, z] = quadprog(H, c, A, b, [], [], [0;0])
另外還可以利用罰分數法,可將非線性規劃問題的求解轉化為求解一系列無約束極值問題,因而也稱這種方法為序列無約束最小化技術,簡記為SUMT。
4、0-1分數規劃
0-1分數規劃採用的是隱枚舉法。譬如,求f(X)最大值時,試探得出一個解使得f(X) = 5,那麼就添加一個條件f(X) &=
5,繼續試探。
5、隨機取樣計
rand(n, m)函數可以產生一個在(0, 1)之間均勻分布的隨機數組成的 n * m 矩陣。
用rand('state',S)設定種子。S為35階向量,最簡單的設為0就好。可以考慮rand('state', 100 * sum(clock) * rand(1))。
6、參考資料
【上篇】【下篇】matlab迭代计算X(n+1)=3/(X(n)+2),给出可能的收敛值,并给出不同收敛值对应的初值范围
matlab迭代计算X(n+1)=3/(X(n)+2),给出可能的收敛值,并给出不同收敛值对应的初值范围
x=-100:100;%x的初值范围y=zeros(201,1);t=100;%迭代次数for n=1:201te=x(n);for m=1:t y(n)=3/(te+2);te=y(n);endend 再问: 那可能的收敛值是多少? 0吗? 再答: 1,-3,你看看y的值就行了
我有更好的回答:
剩余:2000字
与《matlab迭代计算X(n+1)=3/(X(n)+2),给出可能的收敛值,并给出不同收敛值对应的初值范围》相关的作业问题
clear allclcflag=-1;counter=1;fore=100;now=0;while abs(fore)&10^-6& & &flag=flag*-1;& & &fore=1/counter*& & &nbs
f=@(x1,x2)100*(x2-x1^2)^2+(1-x1)^2f(1,2)
【c的出来的是不同值,但d的出来就只有唯一一个值】没看明白这句话是什么意思?对每个c都有一个对应的d,不存在你说的问题啊?&如果想要得到向量结果,没必要使用循环,直接用向量运算就可以:&&&i=1:5;&&&c=1+ic&=&&&nbs
你这个系数太麻烦,写个m文件吧:function y=f(x)y=9.0*x-0.9031*x.^2+0.1693*x.^3-0.8275*x.^4;end保存为f.m然后再外面写
摸索个啥呀?这式子就没最大值,或者说最大值是无穷大,在a和b相等的时候,分母为零,z达到了无穷大.这是数学问题,不是matlab编程的问题.clear all[a,b]=meshgrid(-20:0.5:20,-20:0.5:20);c=50;z=c.^2+sqrt((a.^2+b.^2+c.^2).^2-4*a.^2
你的题目和内容不一样啊...再详细点说一下好吗 再问: 抱歉,语文能力有点差 orz... 我是想要画出矩阵内所有元素值的直方图, 如,一个20 * 10的矩阵,想要看矩阵内200个值的distribution情形。 因为我需要做的的矩阵很大,是,想要看看有没有办法用code直接去画图出来看,而不是用
继续输入:ezplot(y,[0,2]) % t∈[0,2]时的图像.就出来了.想要得到某一点的y的值,输入subs(y,'t',1) 就得到t=1时的y的值. 再问: 敢问ezplot是什么意思啊?这个公式没见过啊。。 再答: ezplot是画符号表达式的函数,输入付号表达式会自动画图。subs是带入求值,令变量取某
matlab 中 diff 是求一个数列中相邻两个的【差值】:x(2)-x(1),x(3)-x(2),...,不是求【导数】gradient 才是求导数,比如:step = 0.01;x = 0:step :6.28;y = sin(x);dy = gradient(y,x);plot(x,y,x,dy,x,cos(x
你的问题描述不清楚,但我肯定是可以计算的! 再问: 那换一个方法,怎样自定义一个矩阵函数呢?
一般通过已知数据,求取概率密度.需要统计学的知识.大致是画频谱图.具体好像是求什么频数等等.但是这个也不是太难.你照着相关书籍,就应该能写程序了.至于重复数值,那肯定是可能的啊.因为一个未知变量都能够重复出现,毕竟是概率事件.
这段程序有问题吧,不知道作者要干什么.开始把图像的1/4取出来,找出其中像素值最大值,凡是大于0.45*最大值的点设为1,否则设为0.然后处理另1/4,1/2~1/3,最后把另一半设为0. 最后图像也显示不出来(得*255才行). 再问: 再问下,k(1:m/2,n/2+1:end)是指矩阵中1~m/2行,n/2+1~
x=-1:.1:1; y=x; [X,Y]=meshgrid(x,y); z=6-X.^2-Y.^2; mesh(X,Y,z) z1=X.^2+Y.^2; mesh(X,Y,z1)你试试能不能用!
y=dsolve('Dy=y/x-y^2/x','y(1)=0.5','x')y =1/(1/x + 1)梯形公式:y(1)=0.5;x(1)=1;h=0.1;for n=1:99x(n+1)=x(n)+h;y(n+1)=y(n)+h*( y(n)/x(n)-y(n)^2/x(n));y(n+1)=y(n)+h/2*(
继续回答:4.select s.Sname s.Ssex from where Student s where s.age>22 and s.Sdept='CS'5.select AVG(s1.Grade) from SC s1 where s1.Sno ='95003'6.select s.Sno,s.Sname f
t=[0,10,20,25,30,40,50,60,70,80,90,100,110.120.130.140.150];x1=[2,0.5,-0.5,-0.7,-0.5,0.25,0.4,0.3,0.2,0,-0.08,-0.02,0,0,0,0];plot(t,x1)直接运行以上程序就应该可以了
均值就是期望EX方差就是标准差的平方 ,正太分布服从(EX,方差),一般这类计算都是先代换,变成标准正太分布Z=(x-μ)/σ,然后查表,我查表0.9505是对应的1.65然后代入计算167.630
一种是设定一个容忍度tol,例如10^-6,范数| |,例如2范数,无穷范数,一个迭代最大次数NMAX即初始化x(0),x(1)n_iter=1;while(n_iter 再问: 您好,还有一点不懂,下式中 if (|x(n+1)-x(n)|/|x(n)|
A=rand(3,4);%随机生成矩阵A[Amax,index]=max(A(:));%取得最大值Amax,并取得索引index[row column]=ind2sub([3,4],index);%将索引转化为脚标当然也可以用find函数 如把第三行改为 [row column]=find(A==Amax);如果不用m
clcclear[x,y]=meshgrid(0.05:0.01:0.2,0:0.01:0.1);z=1.41+((2.82*y.^2)./x.^2);mesh(x,y,z)请注意运算符前加点与不加点的区别 再问: 感谢高手,上一个问题已经解决。而且我仿照你的公式解决了好几个公式仿真的问题。能帮忙看下这个么?怎么仿真。用MATLAB指令计算由圆(x-2)?+(y+1)?=4与x?+y?=9的公共部分的面积? - 知乎25被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答&& a = integral(@(y)quadv(@(x)+(x.^2+y.^2&9 & (x-2).^2+(y+1).^2&4),0,3),-3,1)
6添加评论分享收藏感谢收起Graphics[{Pink, Circle[{2, -1}, 2], Cyan, Circle[{0, 0}, 3],
First@RegionPlot@
RegionIntersection[Disk[{2, -1}, 2], Disk[{0, 0}, 3]]},
Frame -& True]
area = FullSimplify@Area@RegionIntersection[Disk[{2, -1}, 2], Disk[{0, 0}, 3]]
N[area, 30]
4添加评论分享收藏感谢收起C语言编程题:输入x和n的值,编写程序计算f(x,n)=x-x^2+x^3-x^4+...x^n(-1)^n-1,其中用函数power(x,n)求x^n_百度知道
C语言编程题:输入x和n的值,编写程序计算f(x,n)=x-x^2+x^3-x^4+...x^n(-1)^n-1,其中用函数power(x,n)求x^n
并写出相应函数。晕刚才那题打错了
我有更好的答案
只要将前面那个程序的fun函数中,i改成从1开始循环就行了。
#include &stdio.h&
int power(int x,int n)
//power函数
int p=1,i;
for(i=1;i&=n;i++)
int fun(int x,int n)
int s=0,i;
for (i=1;i&=n;i++)
s+=power(-1,i-1)*power(x,i);
//实现x-x^2+x^3+...,将i从1开始循环就行了
int main(int argc, char *argv[])
printf(&请输入x和n的值:&);
scanf(&%d%d&,&x,&n);
printf(&x-x^2+x^3-x^4+...(-1)^n-1x^n=%d&#92;n&,fun(x,n));
采纳率:47%
c语言套高深了
# include &math.h&double power(double x, int n){
int i = 1, index = 0 ;
double result = 0 ;
for(index = 1 ; index &= index++)
result += i * pow(x, index) ;
return (result) ;}
为您推荐:
其他类似问题
函数的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 脉冲函数matlab程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信