作业帮 > 综合 > 作业

【求助】matlab函数作图问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 07:13:45
【求助】matlab函数作图问题
用matlab求解线性方程组,如果有一个19次高阶方程,y=a*x^19+a1*x^18+……+a18*x+d,同时你有对应的20个(x,y)数据,那么通过矩阵可以解出方程的各个参数,这样解出来之后我想画出这一个函数的曲线,该怎么画啊?
这道题本来是用多项式插值法连接各期限对应利率的散点成为连续的曲线,
我通过线性方程组用矩阵求解,之后试图用polyval把相关期限的函数点求出来,
之后通过plot函数求解,得到的曲线很奇怪,甚至没有经过应该经过的那些点;
程序如下:
t=[0.5;1;1.5;2;2.5;3;3.5;4;4.5;5;5.5;6;6.5;7;7.5;8;8.5;9;9.5;10];
r=[3.1;3.4;3.5;3.8;4.45;4.7;5;5.1;5.2;5.3;5.45;5.5;5.55;5.58;5.6;5.65;5.7;5.78;6.05;6.2];
A=zeros(20,20);
for i=1:1:20
for j=1:1:20
A(i,j)=(t(i))^(20-j);
end
end
A=inv(A);
B=A*r;
R=polyval(B,t);
figure;
stem(t,r),title('散点图');
figure;
plot(t,R),title('折线图');
求A的逆不要用inv()函数.这个函数很不稳定,运行时也有如下的提示:
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.781037e-027.
这里把这两行代码:
A=inv(A);
B=A*r;
改成:
B=A\r;
就能得到准确的结果.完整代码如下:
t=[0.5;1;1.5;2;2.5;3;3.5;4;4.5;5;5.5;6;6.5;7;7.5;8;8.5;9;9.5;10];
r=[3.1;3.4;3.5;3.8;4.45;4.7;5;5.1;5.2;5.3;5.45;5.5;5.55;5.58;5.6;5.65;5.7;5.78;6.05;6.2];
A=zeros(20,20);
for i=1:1:20
for j=1:1:20
A(i,j)=(t(i))^(20-j);
end
end
B=A\r;
R=polyval(B,t);
figure;
stem(t,r),title('散点图');
figure;
plot(t,R);title('折线图');