数学计算与编程实现:多领域问题的解决方案
1. 第五章任务解决方案
1.1 直线拟合
输入代表点 $(x_1, y_1)$ 和 $(x_2, y_2)$ 的四个值,将其转换为向量 $x$ 和 $y$,$x$ 包含 $x$ 坐标,$y$ 包含 $y$ 坐标。使用 polyfit 命令拟合直线 $y = mx + c$,其中梯度 $m$ 是 $p$ 的第一个元素,截距 $c$ 是第二个元素,最后显示结果。若用户输入的两个 $y$ 值相同,则 $m = 0$,$c$ 等于该值;若两个 $x$ 值相同,MATLAB 会尝试赋予直线无限梯度。
1.2 二次函数拟合
二次函数可写为 $y = a + b(x - x_0) + c(x - x_0)(x - x_1)$,取 $x_0 = 0$,则 $a = 0$。利用点 $(2, -1)$ 可得 $-1 = 2b$,再结合曲线经过的最后一个点可确定 $c = 1/2$,所以二次函数为 $y = \frac{x(x - 3)}{2}$。
1.3 插值误差计算
x = 0:10;
co = [1 3 2];
y = x.^2+3*x+2;
for i = 1:3
xv = i-0.5;
p = polyfit(x(i:(i+1)),y(i:(i+1)),1);
err(i) = polyval(p,xv)-polyval(co,xv);
end
此代码计算的误差在每种情况下均为 $1/4$。
超级会员免费看
订阅专栏 解锁全文
8万+

被折叠的 条评论
为什么被折叠?



