知道方程式和很多x值 怎样求对应的很多个y值 用matlab编程
函数是f(x)=a0+a1*cos(x*w)+b1*sin(x*w)+a2*cos(2*x*w)+b2*sin(2*x*w)+a3*cos(3*x*w)+b3*sin(3...
函数是f(x)=a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +
a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +
a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) +
a8*cos(8*x*w) + b8*sin(8*x*w) 展开
a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +
a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +
a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) +
a8*cos(8*x*w) + b8*sin(8*x*w) 展开
2个回答
展开全部
%{
楼主的函数:
f(x) = a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +
a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +
a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) +
a8*cos(8*x*w) + b8*sin(8*x*w)
%}
% 楼主做的是8阶Fourier级数展开.
a = rand(1,9); % a是9个常数构成的向量,楼主在此替换自己的a值;
b = rand(1,8); % b是8个常数构成的向量,楼主在此替换自己的b值;
w = rand; % w是个常数,楼主在此替换自己的w值;
f = @(x)a(1) + ...
a(2)*cos(x*w) + b(1)*sin(x*w) + ...
a(3)*cos(2*x*w) + b(2)*sin(2*x*w) + ...
a(4)*cos(3*x*w) + b(3)*sin(3*x*w) + ...
a(5)*cos(4*x*w) + b(4)*sin(4*x*w) + ...
a(6)*cos(5*x*w) + b(5)*sin(5*x*w) + ...
a(7)*cos(6*x*w) + b(6)*sin(6*x*w) + ...
a(8)*cos(7*x*w) + b(7)*sin(7*x*w) + ...
a(9)*cos(8*x*w) + b(8)*sin(8*x*w);
x = rand(32,1);% 楼主在此替换自己的x值;
y = f(x);
或者 更一般地,有
%{
楼主的函数:
f(x) = a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +
a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +
a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) +
a8*cos(8*x*w) + b8*sin(8*x*w)
%}
% 楼主做的是8阶Fourier级数展开.
function y = funfourier(x)
n = 9; % Fourier级数展开阶数;
a = rand(1,n); % a是n个常数构成的向量,楼主在此替换自己的a值;
b = rand(1,n); % b是n个常数构成的向量,楼主在此替换自己的b值;
w = rand; % w是个常数,楼主在此替换自己的w值;
s = 0;
for k = 1:n
s = s + a(k)*cos((k-1)*w*x) + b(k)*sin((k-1)*w*x);
end
y = s;
楼主的函数:
f(x) = a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +
a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +
a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) +
a8*cos(8*x*w) + b8*sin(8*x*w)
%}
% 楼主做的是8阶Fourier级数展开.
a = rand(1,9); % a是9个常数构成的向量,楼主在此替换自己的a值;
b = rand(1,8); % b是8个常数构成的向量,楼主在此替换自己的b值;
w = rand; % w是个常数,楼主在此替换自己的w值;
f = @(x)a(1) + ...
a(2)*cos(x*w) + b(1)*sin(x*w) + ...
a(3)*cos(2*x*w) + b(2)*sin(2*x*w) + ...
a(4)*cos(3*x*w) + b(3)*sin(3*x*w) + ...
a(5)*cos(4*x*w) + b(4)*sin(4*x*w) + ...
a(6)*cos(5*x*w) + b(5)*sin(5*x*w) + ...
a(7)*cos(6*x*w) + b(6)*sin(6*x*w) + ...
a(8)*cos(7*x*w) + b(7)*sin(7*x*w) + ...
a(9)*cos(8*x*w) + b(8)*sin(8*x*w);
x = rand(32,1);% 楼主在此替换自己的x值;
y = f(x);
或者 更一般地,有
%{
楼主的函数:
f(x) = a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +
a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +
a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) +
a8*cos(8*x*w) + b8*sin(8*x*w)
%}
% 楼主做的是8阶Fourier级数展开.
function y = funfourier(x)
n = 9; % Fourier级数展开阶数;
a = rand(1,n); % a是n个常数构成的向量,楼主在此替换自己的a值;
b = rand(1,n); % b是n个常数构成的向量,楼主在此替换自己的b值;
w = rand; % w是个常数,楼主在此替换自己的w值;
s = 0;
for k = 1:n
s = s + a(k)*cos((k-1)*w*x) + b(k)*sin((k-1)*w*x);
end
y = s;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将方程式编写为一个函数,比如fun函数;
将x值放在某一个数组中,比如X数组:x=[x1,x2,x3,...,xn];
将y值存放在另一个数组中,比如Y数组:y=[y1,y2,y3,...,yn];
则有以下编程:
x=[x1,x2,x3,...,xn];
n=length(x);
y=zeros(1,n);
for k=1:n
y(k)=fun(x(k));
end
将x值放在某一个数组中,比如X数组:x=[x1,x2,x3,...,xn];
将y值存放在另一个数组中,比如Y数组:y=[y1,y2,y3,...,yn];
则有以下编程:
x=[x1,x2,x3,...,xn];
n=length(x);
y=zeros(1,n);
for k=1:n
y(k)=fun(x(k));
end
追问
a0 a1 a2 a3 a4 a5 a6 a7 a8 b1 b2 b3 b4 b5 b6 b7 b8 w 都是常数 x为32个常数 你可以随便假设 泪流满面
追答
谁说随便假设了,既然那些都是常数就写成常数呗,编写一个函数还不会啊。只是将你的32个X常数放在数组里啊,我就搞不懂了,你到底是哪里不会?还是我没有理解你的问题所在?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询