永发信息网

知道方程式和很多x值 怎样求对应的很多个y值 用matlab编程

答案:2  悬赏:0  手机版
解决时间 2021-01-07 02:14
  • 提问者网友:富士山上尢
  • 2021-01-06 17:48
知道方程式和很多x值 怎样求对应的很多个y值 用matlab编程
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-01-06 18:32
%{
楼主的函数:
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;
全部回答
  • 1楼网友:詩光轨車
  • 2021-01-06 18:42
将方程式编写为一个函数,比如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追问a0 a1 a2 a3 a4 a5 a6 a7 a8 b1 b2 b3 b4 b5 b6 b7 b8 w 都是常数 x为32个常数 你可以随便假设 泪流满面追答谁说随便假设了,既然那些都是常数就写成常数呗,编写一个函数还不会啊。只是将你的32个X常数放在数组里啊,我就搞不懂了,你到底是哪里不会?还是我没有理解你的问题所在?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯