信号与系统 --- 改变函数参数对其曲线的影响(曲线的拟合)

改变函数参数对其曲线的影响

 

      了解函数的图形对于一个函数的学习非常有帮助,能够形象的理解函数的意义。下面我就以三角函数为例,逐一说明怎用通过控制函数的各个参数把函数图像变成我们想变成的样子,即通过改变函数的参数去拟合一个曲线。      

     函数图形的变换主要包括了如下几个方面,图形的平移(shifting),图形的伸展(stretching),图形的压缩(compressing)和图形的反射(reflecting),现逐一说明。以一般函数为例,一般函数的及其各个调控参数可写为如下形式。众所周知,一个函数最简单的表示形式为:

y = f(x)

他表示的是从一组数据到另外一组数据的一个映射方式(注:函数即映射)。现在不论这个函数的原型是什么,要想对这个函数的图形进行有效的调整和改变,我们要对这个函数在四个不同的部位增加四个控制变量:

y = af(b(x+c))+d

这四个控制参数对函数图形的影响如下:

参数a影响的是:函数关于x轴的反射,即,图形在垂直方向伸展或压缩。

参数b影响的是:函数关于y轴的反射,即,图形在水平方向伸展压缩。

参数c影响的是:函数在水平方向的位移。

参数d影响的是:函数在垂直方向的位移。

三角函数图形的变换

这里我以三角函数为例举例说明,下面的等式是一个标准的三角函数公式:

f(x) = A*sin(2π/B*(x - C)) + D

式中:|A| 为幅度(amplitude),|B|为周期(period),C为水平移动,D为垂直移动。下图给出该函数的图像的形象解释。

下面我用matlab来仿真,并逐一解释这四个参数的重要作用。

上图中:A = 1,B = 2π,C=0,D=0。定义域:x=(0 4π),值域:f(x)=(-1.5,1.5)

Matlab代码:

%% Transfonnations of Trigonometric Graphs
% The rules for shifting, stretching, compressing, and reflecting the
% graph of a trigonometric function.
% Author: Z.Zhu
% Date: 2018/06/08
close all
clear all
x = 0:0.01:4*pi;
A = 1;     % amplitude
B = 2*pi;  % period
C = 0;     % Horizontal shift
D = 0;     % Vertical shift
fx = A*sin(2*pi/B*(x-C)) + D;
figure('NumberTitle','off');
plot(x,fx,'k','LineWidth',3);
title('\fontsize{15}一个标准的正弦波');
legend('A=1,B=2*PI,C=0,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])

1,纵向伸缩,y = af(b(x+c))+d

        修改a,会改变函数的幅值。这时函数关于x轴的反射,图形在垂直方向伸展和压缩。(a大于1就拉伸信号,a小于1就压缩信号)注意:图像两端的端点保持在原位不变。

Matlab代码:

%% A
figure;
subplot(1,2,1)
plot(x,fx,'--k','LineWidth',3);
hold on;
A = 0.5;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'g','LineWidth',3);
title('\fontsize{15}A=0.5在垂直方向压缩了原始的图形');
legend('A=1,B=2*PI,C=0,D=0','A=0.5,B=2*PI,C=0,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;


subplot(1,2,2)
A = 1;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
A = 1.5;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'g','LineWidth',3);
title('\fontsize{15}A=1.5在垂直方向伸展了原始的图形');
legend('A=1,B=2*PI,C=0,D=0','A=1.5,B=2*PI,C=0,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;

                                            2,横向伸缩,y = af(b(x+c))+d

        修改b,就是改变函数的频率。这时函数关于y轴反射,图形在水平方向伸展和压缩。(b小于2pi就压缩图像,b大于2pi就拉伸图像)注意:图像两端端点的位置发生了改变。

y = x^n的函数很好的展示了,改变参数a,使得函数在横向收缩。

Matlab代码:

%% B
figure;
subplot(1,2,1)
A = 1;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
B = pi;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'r','LineWidth',3);
title('\fontsize{15}B=pi在水平方向压缩了原始的图形');
legend('A=1,B=2*PI,C=0,D=0','A=1,B=PI,C=0,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;


subplot(1,2,2)
B = 2*pi;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
B = 4*pi;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'r','LineWidth',3);
title('\fontsize{15}B=4*pi在水平方向伸展了原始的图形');
legend('A=1,B=2*PI,C=0,D=0','A=1,B=4*PI,C=0,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;

3,水平位移,y = af(b(x+c))+d

        修改c,让函数图形在水平方向移动。(注意:原函数中的C有负号。)(口诀:左加,右减)

Matlab代码:

%% C
figure;
subplot(1,2,1)
B = 2*pi;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
C = 0.5;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'b','LineWidth',3);
title('\fontsize{15}C=0.5原始图形沿X轴向右移动');
legend('A=1,B=2*PI,C=0,D=0','A=1,B=2*PI,C=0.5,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;


subplot(1,2,2)
C = 0;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
C = -0.5;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'b','LineWidth',3);
title('\fontsize{15}C=-0.5原始图形沿X轴向左移动');
legend('A=1,B=2*PI,C=0,D=0','A=1,B=2*PI,C=-0.5,D=0');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;

4,垂直位移,y = af(b(x+c))+d

        现在我们通过修改d,让函数图形在垂直方向移动。(口诀:上加 ,下减)

Matlab代码:

%% D
figure;
subplot(1,2,1)
C = 0;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
D = 0.5;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'m','LineWidth',3);
title('\fontsize{15}D=0.5原始图形沿Y轴向上移动');
legend('A=1,B=2*PI,C=0,D=0','A=1,B=2*PI,C=0,D=0.5');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;

subplot(1,2,2)
D = 0;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'--k','LineWidth',3);
hold on;
D = -0.5;
fx = A*sin(2*pi/B*(x-C)) + D;
plot(x,fx,'m','LineWidth',3);
title('\fontsize{15}D=-0.5原始图形沿Y轴向下移动');
legend('A=1,B=2*PI,C=0,D=0','A=1,B=2*PI,C=0,D=-0.5');
grid on;
axis([ -.5 13 -1.5 1.5])
hold off;

        最后给出一个通过调整正弦曲线的各个参数去拟合美国阿拉斯加温度曲线的实例,可以看得出来拟合的非常好。

按照文章开头给出的公式:f(x) = Asin(2π/B(x-C))+D

拟合曲线的参数值为:A = 37,B = 365,C = 101,D = 25.

5,y = -f(x) 和 y = f(-x)的图像(函数图像关于X轴和Y轴的镜像对称)

          

            

6,f(x) = f(-x) 和 f(-x) = -f(x)的图像(奇函数&偶函数)

7,反函数的图像 

(全文完)

作者---松下J27

参考文献(鸣谢):

【1】托马斯微积分 第10版

【2】Matlab 2017a

【3】数学乐

2021/02/06改!

2022/06/22改!

谢谢收看!

再见!

格言摘抄:

         已有的事,后必再有;已行的事,后必再行。日光之下,并无新事。---《圣经》传道书第1章9节 

(*配图与本文无关*)

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松下J27

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值