给定N个(x,y)数值 求解y=f(x)

zhoushunda960 2010-12-03 09:05:47
如题,需要近似求解y=f(x),例如y=a0+a1*x+a2*x*x+a3*x*x*x....。

这个问题我希望各位高手能给出一些解决的思路,以及需要的一些知识点。我们公司在做紫外气体分析这块,因为我也是刚来公司不久,算法这块上学学的那些都还给老师了,根本没有思路。请大家帮帮忙,急!!!
...全文
185 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglei8893 2010-12-06
  • 打赏
  • 举报
回复
这个可以采用最小二乘的方法求解:
如果最高阶的次数为n,转化为矩阵的形式:
(1, x, x^2, ..., x^n)(a0, a1, a2, ..., an)'=y
将所有的m个数据代入,则
1, x1, x1^2, ...,x1^n
1, x2, x2^2, ...,x2^n
..................... (a0, a1, a2, ..., an)' =(y1, y2, ..., ym)
1, xm, xm^2, ...,xm^n
记为Ax = b,其中A,X,b分别对应上面的矩阵
采用最小二乘的方法就可以得到最优解
x = (A'A)^(-1)A'b
gaoyx163 2010-12-04
  • 打赏
  • 举报
回复
你自己首先要明确你的问题是那种类型:
y=a0+a1*x+a2*x*x+a3*x*x*x....。(一种因子x,确定的最高次数n,多项式回归)
还是
y=a0+a1*x1+a2*x2+a3*x3+a4*x4...。(多种因子,几个因子你自己要定,线性回归)
再找常用的回归分析的书就能找到算法。

somebody 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yaoweijq 的回复:]
matlab曲线拟合可以秒杀
[/Quote]
顶……
用非线性回归效果很好。先用cftool试着找出最合适的模型。

function hhhh
clc;clear;
A=[...
25.0 500.7 0.068083799
50.0 455.7 0.061964824
75.0 427.0 0.058062277
100.0 389.3 0.052935935
150.0 357.7 0.048639055
200.0 333.7 0.045375602
250.0 309.0 0.042016964]
X=A(:,1);Y=A(:,2);Y1=A(:,3);
plotyy(X,Y,X,Y1)
a=Y./Y1
beta0=[1 1 1];
beta=nlinfit(X,Y,@fun,beta0)
x=25:250;
y=beta(1)*x.^beta(2)+beta(3);
figure
plot(X,Y,'o',x,y)
function yhat=fun(beta,x)
yhat=beta(1)*x.^beta(2)+beta(3);

结果:
beta =

-171.7423 0.2014 830.8742
pandm 2010-12-03
  • 打赏
  • 举报
回复
多项式插值行不行?
無_1024 2010-12-03
  • 打赏
  • 举报
回复
matlab曲线拟合
figo1688 2010-12-03
  • 打赏
  • 举报
回复
是不是根据这N个点来找出y关于x的规律?你可以把这些个点用matlab画出一个图形出来,就可以看出规律了啊
faithzzf 2010-12-03
  • 打赏
  • 举报
回复
可以看下数值分析的书,里面有关于这方面的内容。
tufaqing 2010-12-03
  • 打赏
  • 举报
回复
看错了,是求f(x)表达式吗?求系数就是要求多元一次方程了。
tufaqing 2010-12-03
  • 打赏
  • 举报
回复
这些求解问题都可以使用牛顿迭代法,无限逼近,可以控制精度。
hblac 2010-12-03
  • 打赏
  • 举报
回复
N个点(横坐标互不相同)唯一确定一个次数不超过N-1的多项式,这不就是解方程求系数吗?
yaoweijq 2010-12-03
  • 打赏
  • 举报
回复
matlab曲线拟合可以秒杀
try_best7 2010-12-03
  • 打赏
  • 举报
回复
这是高中的数列问题,用x*y=a0*x + a1*x*x + ... + a(n-1)*x(nci次方) + an*x(n+1次方),然后减去y,等到一个呈规律的数列。求出其通项公式就OK了。
kingbigeast 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cnmhx 的回复:]

hi, guy!
that's no so easy. if u want to be the best, u may take several courses, or read several special books. :((
the simplest way( but still not the best), find the orthogonal polynomials of x'……
[/Quote]
这货是老外?
cnmhx 2010-12-03
  • 打赏
  • 举报
回复
hi, guy!
that's no so easy. if u want to be the best, u may take several courses, or read several special books. :((
the simplest way( but still not the best), find the orthogonal polynomials of x's first, and then, project y's onto each basis, then you will get an approximation, usually much better than that derived from the LS method.
good luck!
yaoweijq 2010-12-03
  • 打赏
  • 举报
回复
...要写进自己的软件中?
看看matlab提供的jar包里面有没
这块我就不清楚了
[Quote=引用 11 楼 zhoushunda960 的回复:]
引用 10 楼 xiongchenghui 的回复:
引用 2 楼 yaoweijq 的回复:
matlab曲线拟合可以秒杀

顶……
用非线性回归效果很好。先用cftool试着找出最合适的模型。

function hhhh
clc;clear;
A=[...
25.0 500.7 0.068083799
50.0 455.7 0.061964824
75.0 427.0……
[/Quote]
zhoushunda960 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xiongchenghui 的回复:]
引用 2 楼 yaoweijq 的回复:
matlab曲线拟合可以秒杀

顶……
用非线性回归效果很好。先用cftool试着找出最合适的模型。

function hhhh
clc;clear;
A=[...
25.0 500.7 0.068083799
50.0 455.7 0.061964824
75.0 427.0 0.058062277
100.0 389.3……
[/Quote]

这个算法要自己实现,matlab怎么写进自己的软件中?

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧