配色: 字号:
MATLAB WEEK8 SOLUTION Numerical integration and Differentiation
2019-06-30 | 阅:  转:  |  分享 
  
WEEK8labsolution



5

5.1

fork=-4:-1

h=10^(k);

x=[0:h:2pi];

y=sin(x);

dydx=diff(y)/h;

figure

plot(x,y);

holdon

plot(x(1:size(x,2)-1),dydx,''-o'')

end



以及其他几张图会一起显示出来



5.2

clear;

h=0.001;

x=0:h:pi;

x_1=0:h:(pi+h);

y_1=sin(x_1);

dydx_1=diff(y_1)/h;



x_2=(0-h):h:(pi-h);

x_3=(0+h):h:(pi+h);

y_2=sin(x_2);

y_3=sin(x_3);

dydx_2=(y_3-y_2)/(2h);

figure,

subplot(1,2,1),plot(x,dydx_1,''r'');



subplot(1,2,2),plot(x,dydx_2,''g'');



这里要注意:

diff(y)是对y做差分,也就是说,如果y有n+1个数值,用diff(y)后得到的就会是n个数值,而对应的自变量的个数就会与导函数值的个数不一样,那么就需要调成一样

在5.2中,最后的0-h:h:pi-h每一个都和0+h:h:pi+h对应相减,那么差分的个数就是和原来的x的0:h:pi相同,那么维度相同就可以画图了



6.functiona=mth(v)

L=size(v,2);(length(v)

fork=1:L-1

a(k)=(L-1)v(k)

end

注:

这里就是新上生成的每一项是在原来对应的每一项基础上变化得到的,而常数项自动消除(所以想到用for循环)

每一个生成的新元素,前面乘上对应的次数

因为用polyder的时候,输入的是完整的长度,幂数是长度减一,所以向量的列数(长度)可以作为前面的乘数

献花(0)
+1
(本文系Light996首藏)