原文章 https://blog.csdn.net/sunshineacm/article/details/79069561
/*
本实验根据数组x[], y[]列出的一组数据,用最小二乘法求它的拟合曲线。
近似解析表达式为y = a0 + a1 * x + a2 * x^2 + a3 * x^3;(三阶)
*/
#include <stdio.h>
#include <math.h>
#define maxn 5
#define rank_ 3 //阶数
int main()
{
// double x[maxn] = {0, 0.25, 0, 5, 0.75};
// double y[maxn] = {1, 1.283, 1.649, 2.212, 2.178};
double x[maxn] = {
0, 5, 10, 15, 20};//, 25, 30, 35, 40, 45, 50, 55};
double y[maxn] = {
0, 1.27, 2.16, 2.86, 3.44};//, 3.87, 4.15, 4.37, 4.51, 4.58, 4.02, 4.64};
double atemp[2 * rank_ + 1] = {
0}, b[rank_ + 1] = {
0}, a[rank_ + 1][rank_ + 1];
int i, j, k;
for (i = 0; i < maxn; i++)
{
for (j = 0; j < rank_ + 1; j++)
{
b[j] += pow(x[i], j) * y[i];
}
for (j = 0; j < (2 * rank_ + 1); j++)
{
atemp[j] += pow(x[i], j);
}
}
atemp[0] = maxn;
for (i = 0; i < rank_ + 1; i++)
{
//构建线性方程组系数矩阵,b[]不变
k = i;
for (j = 0; j < rank_ + 1; j++)
a[i][j] = atemp[k++];
}
//以下为高斯列主元消去法解线性方程组
for (k = 0; k < rank_ + 1 - 1; k++)
{
//n - 1列
int column = k;
double mainelement = a[k][k];
for (i = k; i < rank_ + 1; i++) //找主元素
if (fabs(a[i][k]) > mainelement)
{
mainelement = fabs(a[i][k]);
column = i;
}
for (j = k; j < rank_ + 1; j++)
{
//交换两行
double atemp = a[k][j];
a[k][j] = a[column][j];
a[column][j] = atemp;
}
double btemp = b[k];
b[k] = b[column];
b[column] = btemp;
for (i = k + 1; i < rank_ + 1; i++)
{
//消元过程
double Mik = a[i][k] / a[k][k];
for (j = k; j < rank_ + 1; j++)
a[i][j] -= Mik * a[k][j];
b[i] -= Mik * b[k];
}
}
b[rank_ + 1 - 1] /= a[rank_ + 1 - 1][rank_ + 1 - 1]; //回代过程
for (i = rank_ + 1 - 2; i >= 0; i--)
{
double sum = 0;
for (j = i + 1; j < rank_ + 1; j++)
sum += a[i][j] * b[j];
b[i] = (b[i] - sum) / a[i][i];
}
//高斯列主元消去法结束,输出
printf("P(x) = %f%+fx%+fx^2%+fx^3\n\n", b[0], b[1], b[2], b[3]);
return 0;
}
#Echarts做的图(要先下echarts.min.js,记得勾选散点图)
html部分
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>test</title>
<meta charset="utf-8" />
<meta name="renderer" content="webkit" />
</head>
<body>
<div id="Graph" style="width: 800px;height: 500px;">123</div>
</body>
<script src="echarts.min.js?ver="></script>
<script src="index.js?ver="></script>
</html>
js部分
draw();
function f1(x) {
//二阶拟合
let y = 0.230467 + 0.203691 * x - 0.002381 * x * x;
return y;
}
function f3(x) {
//三阶
let y = 0.017839 + 0.263399 * x - 0.005216 * x * x + 0.000034 * x * x * x;
return y;
}
function f4(x) {
//二阶,数据减少为5个
return (0.027714 + 0.259114 * x - 0.004486 * x * x) // + 0.000034 * x * x * x;
}
function draw() {
let x = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];
let y = [0, 1.27, 2.16, 2.86, 3.44, 3.87, 4.15, 4.37, 4.51, 4.58, 4.02, 4.64];
let data = [];
let data2 = []
let data3 = []
let data4 = []
for (let idx in x) {
let a = [];
a.push(x[idx]);
a.push(y[idx]);
data.push(a);
let b = [];
b.push(x[idx]);
b.push(f1(x[idx]))
data2.push(b);
let c = [];
c.push(x[idx]);
c.push(f3(x[idx]))
data3.push(c);
let c4 = [];
c4.push(x[idx]);
c4.push(f4(x[idx]))
data4.push(c4);
}
let option = {
tooltip: {
trigger: 'axis',
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data: ['原数据', '二阶', '三阶', '二阶5数据', "5"]
},
xAxis: {
},
yAxis: {
},
series: [{
symbolSize: 10,
data: data,
type: 'scatter',
name: '原数据'
},
{
symbolSize: 10,
data: data2,
type: 'scatter',
name: '二阶'
},
{
symbolSize: 10,
data: data3,
type: 'scatter',
name: '三阶'
},
{
symbolSize: 10,
data: data4,
type: 'scatter',
name: '二阶5数据'
},
]
};
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('Graph'));
myChart.setOption(option);
}
文章浏览阅读106次。BASE64编码算法不算是真正的加密算法。 MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。 BASE64 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The ..._base 64编码 和mad5 和雪花算法
文章浏览阅读1.1k次。IP地址(Internet Protocol Address)是互联网协议地址的简称,是互联网通信的基础,互联网上每一个网络设备的唯一标识符每个在线的设备都需要一个IP地址,这样才能在网络中找到它们并进行数据交换。IP地址有很多种类型,今天跟大家简单分享一下住宅IP、家庭宽带IP以及原生IP的区别。住宅IP通常是指由互联网服务提供商(ISP)分配给家庭的或小型办公室使用的互联网连接IP地址,并可能随着网络连接的变化而变化。此类IP地址主要用于日常网络活动,如浏览网页、发送接收电子邮件、上网冲浪等。
文章浏览阅读2.6w次,点赞14次,收藏30次。如何更改layui form表单位置,宽度,颜色等_layui-form-item 宽度
文章浏览阅读612次。写的非常好_pagraph: scaling gnn training on large graphs via computation-aware caching
文章浏览阅读2.7w次,点赞61次,收藏285次。很炫酷的html代码:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><title>star</title><script type="text/javascript">window.onload = function () {C = Math.cos; // cache Math objectsS = Math.si.._炫酷的html
文章浏览阅读204次。题干:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究竟演习什...
文章浏览阅读2.3k次。题目描述对数字,字符,数字串,字符串,以及数字与字符串组合进行倒序排列。字符范围:由 a 到 z, A 到 Z,数字范围:由 0 到 9符号的定义:“-”作为连接符使用时作为字符串的一部分,例如“20-years”作为一个整体字符串呈现;连续出现 2 个 “-” 及以上时视为字符串间隔符,如“out--standing”中的”–“视为间隔符,是 2 个独立整体字符串”out”和”standing”;除了 1,2 里面定义的字符以外其他的所有字符,都是非法字符,作为字符串的间隔符处理,倒序后
文章浏览阅读5w次,点赞36次,收藏138次。ArrayAdapter数组适配器用于绑定格式单一的数据,数据源可以是集合或者数组列表视图(ListView)以垂直的形式列出需要显示的列表项。实现过程:新建适配器->添加数据源到适配器->视图加载适配器第一种:直接用ListView组件创建列表每一行只有一行文字效果如图:activity_list布局:<?xml version="1.0" e..._arrayadapter
文章浏览阅读43次。近日,水滴直播平台登上了舆论的风口浪尖。有人认为水滴直播涉嫌侵犯隐私,但也有人表示这种互联网新生事物可以有效规避很多风险,值得鼓励,不应一棒子打死。记者采访时发现,很多商家、创业者对于水滴直播纷纷表示支持,并直言水滴直播为他们的经营带来了很大帮助。 邹志泉在北京丰台区经营着一家批发厂家直销男女内衣裤的店铺,平时就打开水滴直播,分享他在店铺的经营画面。面对水滴直播涉及隐私的提问,邹志泉明确表...
文章浏览阅读67次。springboot基于SpringBoot的电影社区网站。springboot基于springboot食品销售网站。ssm基于微信平台的校园汉服租赁系统的设计与实现。ssm基于SSM高校教师个人主页网站的设计与实现。ssm基于SSM框架的在线健康系统设计与实现。ssm基于HTML的武昌理工学院二手交易网站。ssm基于JavaEE的网上图书分享系统。ssm基于Javaee的项目任务跟踪系统。
文章浏览阅读61次。负载均衡是指将客户端的请求分发到多个后端服务器,以平衡服务器的负载。反向代理是指将客户端的请求转发到后端服务器,并将响应返回给客户端。通过配置反向代理,Nginx将转发所有来自客户端的请求到后端服务器,并将响应返回给客户端。通过这样的配置,Nginx将根据请求的URL路径选择是将请求转发到后端服务器还是直接返回静态资源文件。通过配置负载均衡,Nginx将按照指定的策略将客户端的请求分发到后端服务器上,从而实现负载均衡。配置反向代理:编辑Nginx配置文件(通常是nginx.conf),在。_php动静分离
文章浏览阅读9.5k次,点赞3次,收藏18次。(一) 语义标签(二)增强型表单(三)视频和音频(四)Canvas绘图(五)SVG绘图(六)地理定位(七)拖放API(八) WebWorker(九) WebStorage(十)Web..._谈谈html5的一些新特性