函数图像是如何画出来的(LiveCharts2)

大火的人工智能本质上就是一些简单的函数的组合,比如f(x)=kx+b,只是可能不只有x,还会x1,x2,…xn,只是维数不同,当维数很多的时候自然就需要方程组才能求解,维数越多自然需要的算力就越多。于是就有了矩阵Y = Kx+b,而这里面的K就是训练中所谓的Weight。在CNN中通过反向求导来不断更新K的值,直到取到最小的误差。

这些东西早在上个世纪很多经典的算法都已经被开发出来了,只是当时的算力不行,直到最近几年,算力发生了质的变化,再一次让人工智能火了起来。

当然了,不懂原理,一点不耽误玩大模型的,只要有足够好的设备,自己都可以训练模型。

函数

函数,个人理解本质上就是一种映射。以下下内容来自百科:

函数(function),数学术语。其定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发。函数的近代定义是给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表示,函数概念含有三个要素:定义域A、值域B和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。

LiveCharts2

Beautiful, animated, mv* friendly, automatically updated, cross-platform and easy to use。和Echats是一类的,可以画各种图表。

画函数图像

画出来后的函数图像如下,相信一看就知道这是什么函数了:

在这里插入图片描述

直接上代码(使用Avolonia mvvm模式):
MainWindow.axaml

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm="using:AvaloniaApplication1.ViewModels"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"x:Class="AvaloniaApplication1.Views.MainWindow"x:DataType="vm:MainWindowViewModel"xmlns:lvc="using:LiveChartsCore.SkiaSharpView.Avalonia"Icon="/Assets/avalonia-logo.ico"Title="AvaloniaApplication1"><Window.DataContext><vm:MainWindowViewModel /></Window.DataContext><lvc:CartesianChartSeries="{Binding Series}"></lvc:CartesianChart>
</Window>

MainWindowViewModel

其中第三个函数是其他三个函数叠加成的,这里主要是想验证下傅里叶变化波的叠加。

using System;
using System.Collections.Generic;
using System.Threading;
using LiveChartsCore;
using LiveChartsCore.Defaults;
using LiveChartsCore.SkiaSharpView;namespace AvaloniaApplication1.ViewModels;public class MainWindowViewModel : ViewModelBase
{public ISeries[] Series { get; set; }= new ISeries[]{new LineSeries<ObservablePoint>{Values = GenerateSinPoints(1000, 0, 2 * Math.PI),Fill = null},new LineSeries<ObservablePoint>{Values = GenerateSinPoints2(1000, 0, 2 * Math.PI),Fill = null},new LineSeries<ObservablePoint>{Values = GenerateSinPoints3(1000, 0, 2 * Math.PI),Fill = null},new LineSeries<ObservablePoint>{Values = GenerateSinPoints4(1000, 0, 2 * Math.PI),Fill = null}};static ObservablePoint[] GenerateSinPoints(int segement, double start, double end){int n = segement;var points = new ObservablePoint[n];double zoneLen = (end - start) / segement;for (int i = 0; i < n; i++){double x = start + (i) * zoneLen;double y = Math.Sin(x);points[i] = new ObservablePoint(x, y);}return points;}static ObservablePoint[] GenerateSinPoints2(int segement, double start, double end){int n = segement;var points = new ObservablePoint[n];double zoneLen = (end - start) / segement;for (int i = 0; i < n; i++){double x = start + (i) * zoneLen;double y = Math.Cos(x);points[i] = new ObservablePoint(x, y);}return points;}static ObservablePoint[] GenerateSinPoints3(int segement, double start, double end){int n = segement;var points = new ObservablePoint[n];double zoneLen = (end - start) / segement;for (int i = 0; i < n; i++){double x = start + (i) * zoneLen;double y = Math.Cos(x) + Math.Sin(x) + 5 * Math.Cos(2 * x - Math.PI / 4);points[i] = new ObservablePoint(x, y);}return points;}static ObservablePoint[] GenerateSinPoints4(int segement, double start, double end){int n = segement;var points = new ObservablePoint[n];double zoneLen = (end - start) / segement;for (int i = 0; i < n; i++){double x = start + (i) * zoneLen;double y = 5 * Math.Cos(2 * x - Math.PI / 4);points[i] = new ObservablePoint(x, y);}return points;}
}

写在最后

高中的时候,如果老师能把这些东西画出来,展现在我们面前,也许能更加有助于我们理解很多函数的特性。指数函数,高斯函数,椭圆方程,双曲线方程等等都可以画出来的,直观的图像给人的感受真的不一样。

用python的话比C#简单好多,思路大同小异,都是有限元的思想,差分取值,只要两点差的足够小,就足够逼近原函数。

这里说到了函数,就说说这段时间的姜萍事件吧。我真的希望是真的,但从月考成绩来看,只要她不是有意放水,那么简单的卷子,才80(150分制)多分,而阿里竞赛居然考到93(100分制)分,地狱级难度的卷子,确实太矛盾了,基本上可以确定是别人替她考的,只是用了她的名字。

安利个网站(可以在线画函数图像):https://www.desmos.com/calculator?lang=zh-CN

公众号

更多内容,欢迎关注我的微信公众号:半夏之夜的无情剑客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单小案例分析

一、容器和实例关系 <div class"app"><h1>Hello,{{name}}</h1> </div> <div class"app"><h1>Hello,{{name}}</h1> </div><script>//创建Vue实例new Vue({el:".app", //el用于指定当前V…

easyExcel 3.x以上版本导入数据后,再把错误信息导出,外加自定义RGB背景色、行高、宽度等

easyExcel 3.x以上版本导入数据后&#xff0c;再把错误信息导出&#xff0c;外加自定义RGB背景色 背景 由于项目中用的easypoi导入的数据量大了&#xff0c;会导致OOM的问题&#xff0c;所以要求更换为easyExcel框架做导入。话不多说&#xff0c;这里只做一个导入的示例&…

DP学习——享元模式

学而时习之&#xff0c;温故而知新。 享元模式 名词解析 有必要解释下“享元”两字&#xff0c;英文原文是flyweight pattern——轻量级模式&#xff0c;但是翻译过来的“享元”两字太牛逼了——褒贬不一&#xff0c;翻译的他妈都不认识。 享元的高雅在于: 享:共享/共用 元:…

VB中如何定义和使用数组

在VB&#xff08;Visual Basic&#xff09;中&#xff0c;数组是一种数据结构&#xff0c;用于存储相同类型的数据项集合。这些数据项可以通过索引&#xff08;通常是整数&#xff09;来访问。VB提供了多种方式来定义和使用数组。 定义数组 在VB中&#xff0c;你可以使用Dim语…

Retrieval-Augmented Evaluation方法评估模型幻觉

测试大模型的幻觉 Factuality prompt 1:建立factuality prompt测试集合 “Factuality prompt”是指用于引导语言模型生成与事实相符的文本的输入提示,它通过提供明确的问题或句子,帮助模型聚焦于生成准确的信息,从而提高生成内容的事实准确性。如果一个factuality promp…

DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)

前言 继续书接上文 Docker Compose V2 安装常用数据库MySQLMongo&#xff0c;部署安装好之后我本来是找了一个web端的在线连接数据库的工具&#xff0c;但是使用过程中并不丝滑&#xff0c;最终还是选择了使用 DBeaver &#xff0c;然后发现 mongo 还需要许可&#xff0c;又折…

PyQt5 + selenium,自动票务工具,演唱会门票,学习使用

PyQt5 selenium&#xff1b;在damai工具的基础上加入了UI界面&#xff0c;并将应用做了打包工作&#xff0c;主要是方便不会/不想折腾环境的用户使用&#xff0c;抢票的核心代码来自由于原作者不再维护&#xff0c;自己修改了部分代码。 安装教程 解压安装包到任意位置&…

SpringBoot整合elasticsearch-java

一、依赖 系统使用的是ElasticSearch8.2.0 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.1.0</version> </dependency> 二、配置 1、yml文件配置 elastics…

Mongodb文档和数组的通配符索引

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第97篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

新华三H3CNE网络工程师认证—VLAN间通信背景

VLAN间通信技术主要解决的是不同的VLAN之间如何通信。每一个广播域会有网段给IP进行命名&#xff0c;不同网段之间的通信本质上是不同广播域进行通信&#xff0c;通信会使用到网关地址。不同网段之间的通信&#xff0c;路由器的每个接口其实是对应一个广播域的&#xff0c;比如…

C# 控制台程序输出乱码

前面概要 首先有几个问题因为项目需要&#xff0c;和一个控制台程序做链接&#xff0c;控制台那边会输出用户选择的图片路径。但是我发现如果图片路径是中文&#xff0c;就会乱码&#xff0c;报错结果只需要把编码全部设置成utf-8就可以了注意Console 输出为utf-8 Console.Ou…

Python爬虫技术 第08节 Cookies和Session

在Web开发和爬虫技术中&#xff0c;Cookies和Session是两个关键概念&#xff0c;它们被用来维护客户端&#xff08;如浏览器&#xff09;和服务器之间的状态信息。这对于爬虫来说特别重要&#xff0c;因为许多现代网站依赖于这些机制来保持用户登录状态、个性化内容等。下面我将…

Boost搜索引擎项目相关介绍

Boost搜索引擎相关介绍&#xff1a; 首先&#xff0c;Boost库不具备搜索条件&#xff0c;所以我们这个项目借此实现搜索功能。 项目的核心就是以用户搜索的相关内容在目标数据中进行查找。 首先&#xff0c;我们面临的第一大难题就是目标数据&#xff0c;在这里目标数据就是Boo…

算法第十五天:leetcode19.删除链表的倒数第N个节点

一、删除链表的倒数第N个节点的题目描述与链接 19.删除链表的倒数第N个节点的链接如下表所示&#xff0c;您可直接复制下面网址进入力扣学习&#xff0c;在观看下面的内容之前您一定要先做一遍哦&#xff0c;以便让我印象更深刻&#xff01;&#xff01;!https://leetcode.cn/p…

用python写性能测试——用locust写性能脚本

前言&#xff1a; 由于版本不同&#xff0c;当前版本不需要通过继承TaskSet类&#xff0c;再赋值在HttpUser&#xff08;旧版本中的&#xff1a;HttpLoicust)类中&#xff0c;否则会报错空迭代器 TypeError: NoneType object is not iterable在命令行或者终端中运行 运行的命…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十六章 设备驱动IO控制

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【Qt】Qt容器和STL容器的区别

1、简述 Qt容器和STL容器略有不同,作为一个Qter,应该知道它们之间的异同。 Qt容器官网介绍:https://doc.qt.io/qt-5/containers.html STL容器官网介绍:https://zh.cppreference.com/w/cpp/container 2、Qt容器和STL容器的对应关系 注意:QList 与 std::list 无关,QSet …

Python - 开源库 ReportLab 库合并 CVS 和图像生成 PDF 文档

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/140281680 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Report…

电子邮件协议详解

电子邮件作为互联网通信的重要组成部分&#xff0c;已经成为日常交流不可或缺的一部分。为了确保电子邮件的有效传输和管理&#xff0c;计算机网络使用了多种协议。本文将深入探讨电子邮件协议中的三大核心协议&#xff1a;SMTP、POP3 和 IMAP。我们将详细介绍这些协议的工作原…

算法 —— 暴力枚举

目录 循环枚举 P2241 统计方形&#xff08;数据加强版&#xff09; P2089 烤鸡 P1618 三连击&#xff08;升级版&#xff09; 子集枚举 P1036 [NOIP2002 普及组] 选数 P1157 组合的输出 排列枚举 P1706 全排列问题 P1088 [NOIP2004 普及组] 火星人 循环枚举 顾名思…