最近刚好学了解析几何,在学完二元一次方程组与一次函数的关系后,我突然有了一个大胆的想法!

可不可以用程序自动求出一次函数的解析式呢?

这个想法源自于最近一段时间数学练习册上百考不厌的同类型题:给定在一次函数图像上的两个点的坐标(互不相同),求出这个一次函数的解析式

既然是同一类型的题,我又会做,我为什么不让程序帮我做呢?

何况我又是一个拿过PJ省二的OIer(虽然SX很水),而且对自己的数学很有信心。

于是我就在数学课上想这个问题(这就是我上数学课走神的借口??),并且成功想了出来怎么做。

基本思路

众所周知,当我们把一个一次函数用y=kx+b的形式表示时,我们把k叫作斜率,把b叫作截距。

由于一次函数的图像是一条直线,那么可得:当 x1-x2=x2-x3 时,y1-y2=y2-y3,也就是说当自变量x增加的值相等时,因变量y的值增加也相等,这个相信初中数学都已经讲过了;x每增加1,y增加的量就是斜率,这个我相信初中数学也都讲过(虽然教材上没有),而且这个证明过程非常简单。

根据上面两条,不难得出,x每增加n,y增加的值就是n倍的斜率。

所以,要求斜率,可以把两个点的横坐标增加的值m算出来,再算纵坐标增加的值n,然后通过n/m计算出斜率。

至于截距,将随便一个点的x,y,k代入,然后算出b。

用更简单的式子表示,就是:

k=(a-c)/(b-d)

b=b-ak

其中两个点的坐标分别为 ( a, b ),( c, d )

然后数学老师在我想出来10分钟后向我们讲了这个公式

然而,我又看到了这道题:

之后又想如何求分段函数。。

这个是比较简单的,把每两个点的函数解析式算出来,然后取值范围就是在两个点的横坐标值之间。

需要注意的是,输入必须是有序的,即从左到右输入,如果不是的话同一个x就可能对应不同的y了。

代码:

 #include <bits/stdc++.h>
using namespace std; int n;
double point[][], k, b; int main(){
scanf("%d", &n);
for(int i=; i<n; i++){
scanf("%lf%lf", &point[i][], &point[i][]);
}
for(int i=; i<n-; i++){
k=(point[i][]-point[i+][])/(point[i][]-point[i+][]);
b=point[i][]-k*point[i][];
printf("y=");
if(k==){
printf("x");
}
else if(k!=){
cout << k << 'x';
// printf("%.2lfx", k);
}
if(b>){
cout << '+' << b;
// printf("+%.2lf", b);
}
else if(b<){
cout << b;
// printf("%.2lf", b);
}
cout << " (" << point[i][] << " <= x < " << point[i+][] << ")\n";
// printf(" (%.2lf <= x < %.2lf)\n", point[i][0], point[i+1][0]);
} return ;
}

这玩意简直是做题神器啊!!

通过n+1个控制点求出n段分段函数的解析式的更多相关文章

  1. 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结

    防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...

  2. Java程序设计求出岁数

    题目:我年龄的立方是个4位数.我年龄的4次方是个6位数.这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次,求出我今年几岁. 直接拷贝运行就可以了. public class Age { ...

  3. projecteuler 10001st prime (求出第10001个质数)

    By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. ...

  4. JAVA输入一个整数,求出其所有质因数

    首先得求出能整除A的数,再判断I是否是质数!!! import java.util.*; public class aa { public static void main(String[] args ...

  5. 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。

    主要掌握String中的方法 char[] toCharArray()           将此字符串转换为一个新的字符数组. int indexOf(String str)           返回 ...

  6. NSDateFormatter 根据时间戳求出时间

    NSDateFormatter 根据时间戳求出时间 - (void)detailWithStyle:(NSString*)style time:(NSInteger)time { // NSStrin ...

  7. OpenJudge计算概论-求出e的值

    /*======================================================================== 求出e的值 总时间限制: 1000ms 内存限制: ...

  8. Ruby求出数组中最小值及其下标

    其实很简单 Ruby的Array类自带了min方法可以求出最小值,然后调用Array的index方法传入元素值就可以求出下标 a = [1, 2, 3, 4, 5, 6] theMin = a.min ...

  9. 输入n个数组,数组长度不等,每个数组取出一个数进行组合,求出所有的组合。

    转载声明:原文转自http://www.cnblogs.com/xiezie/p/5511707.html 昨天晚上,有个朋友找到我,他在用matlab编程,但是遇到一个问题,解决不了. 问题如下: ...

随机推荐

  1. Java基础---Java 数组

    数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致. 数组的定义 格式:数组定义格式详解: 数组存储的数据类型: 创建的数组容器可以存储什么数据类型. [] : 表示数组. 数组 ...

  2. Zuul【自定义Filter】

    实际业务中,如果要自定义filter过滤器,只需集成ZuulFIlter类即可,该类是个抽象类,它实现了IZuulFIlter接口,我们需要实现几个方法,如下示例: import static org ...

  3. NIO堆外内存与零拷贝

    重点: 1.0拷贝需要系统支持. 普通内存模型: java线程内存 --> 操作系统内存 --> 硬盘 直接内存模型: java --> 操作系统内存 --> 硬盘 两者对比, ...

  4. VMware Workstation Pro 15 序列号

    VMware Workstation Pro 15 序列号: GA70H-8TYE2-H886P-04YZC-YVA84 YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8 UG5J2-0ME ...

  5. netcat瑞士军刀实现电脑远程控制termux

    关于nc实现远程控制termux 1.首先termux安装namp pkg install namp 2.windows系统安装netcat 此为netcat下载连接 下载得到zip压缩包,解压得到里 ...

  6. Java 之 字符流

    一.字符流 当使用字节读取文本文件时,可能会有一个小问题,就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储.所以 Java 提供了一些字符类,以字符为单位读写数据, ...

  7. jquery sortable的拖动方法示例详解1

    转自:https://www.jb51.net/article/45803.htm 所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象 ui.helper ...

  8. stm32 CAN通信 TJA1040

    CAN协议特点 1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级.仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工 ...

  9. mysql数据库事件

    今天在测试一个存储过程和数据库事件,就是到某一个固定时间,数据库自动调用一个存储过程实现一些功能. 单独来看事件是没有问题的 MINUTE STARTS '2015-12-09 02:00:00' O ...

  10. 解析CentOS 7中系统文件与目录管理

    Linux目录结构 Linux目录结构是树形的目录结构 根目录 所有分区.目录.文件等的位置起点 整个树形目录结构中,使用独立的一个"/"表示 常见的子目录 目录 目录名称 目录 ...