如何用mathematica实现多元拟合/多元差值?高分追加

比如已知许多组y,x1,x2,x3(即原为一个矩阵)

拟合y=a*x1^c1*x2^c2*x3^c3

其中a,c1,c2,c3为常数

求a,c1,c2,c3

如何用mathematica实现,请给出思路和程序,描述个例子更好。

回答完美,再加100。
不会用mathematica的,用MATLAB或C/C++也可以吧。

不太懂matlab,我要求的式子不含+号啊。是一些数据的次方的乘积,

要求的是那些次方数。 再次求教~

应该要用到LOG吧,两边取对数。

这个我会,其实很简单,只要在程序上加上hold on 即可,程序如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r');
hold on;
Y=polyconf(p,x,y2);
plot(x,y2,'b')
我运行了,没有问题
要多组也是没有问题的,加上hold on 就行了
方程的话,求出p和S就行了!如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p1,S]=polyfit(x,y1,2);
[p2,S]=polyfit(x,y2,2);
p1,p2

p1 =

0.0001 0.0031 0.0308

p2 =

0.0001 0.0035 0.0355
方程就是:y1=0.0001x^2+0.0031x+0.0308
y2=0.0001x^2+0.0035x+0.0355

补充:你还要图中的散点?也简单,如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r+',x,y1,'r');
hold on;
Y=polyconf(p,x,y2);
plot(x,y2,'b*',x,y2,'b')
要是用cftool的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-03
只要在程序上加上hold on 即可,程序如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r');
hold on;
Y=polyconf(p,x,y2);
plot(x,y2,'b')
我运行了,没有问题
要多组也是没有问题的,加上hold on 就行了
方程的话,求出p和S就行了!如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p1,S]=polyfit(x,y1,2);
[p2,S]=polyfit(x,y2,2);
p1,p2

p1 =

0.0001 0.0031 0.0308

p2 =

0.0001 0.0035 0.0355
方程就是:y1=0.0001x^2+0.0031x+0.0308
y2=0.0001x^2+0.0035x+0.0355

补充:你还要图中的散点?也简单,如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r+',x,y1,'r');
hold on;
Y=polyconf(p,x,y2);
plot(x,y2,'b*',x,y2,'b')
要是用cftool的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!

如何用mathematica实现多元拟合\/多元差值
插值 拟合

mathematica 三元函数拟合
Fit[离散点,{你想要拟合的形式,比如可以是1,x,y代表弄成a+bx+cy的形式},{x,y}]

Mathematica如何进行数据拟合?
line = Fit[data1, {1, x}, x]若是选择二次函数,则 Fit[data1, {1, x, x^2}, x]你也可以自行搜索帮助文件

mathematica(最好)或者matlab如何解决多元多目标函数的规划问题。_百度...
拟牛顿法使用二次和三次线搜索法与 BFGS 公式的结合更新海赛矩阵的近似值。Nelder-Mead 法是只使用函数值(不要求导数)的直接搜索方法,用于处理非平滑目标函数。信赖域法用于可以提取稀疏性或结构的大规模问题。信赖域法基于内部映射牛顿法,可以在函数内计算海赛乘向量的乘积而无需另行排列海赛矩阵。

怎样用 mathematica 拟合二元函数?
Mathematica提供了进行数据拟合的函数:Fit[data,funs,vars] 对数据data用最小二乘法求函数表funs中各函数的一个线性组合作为所求的近似解析式,其中vars是自变量或自变量的表。例如:Fit[data,{1,x},x] 求形为y=a+bx的近似函数式。Fit[data,{1,x,x2},x] 求形为y=a+bx+c...

mathematica中如何曲线拟合
例如 data = Table[{x, 2 + x^2 + RandomReal[{-0.2, 0.2}]}, {x, -2, 2, 0.02}];y = Fit[data, {1, x, x^2}, x];data是离散的点,y是拟合出来的曲线,两个图画出来比较一下就很明白了 p1 = ListPlot[data];p2 = Plot[y, {x, -2, 2}, PlotStyle -> Red];...

如何用mathematica完成非线性函数的拟合
类似如下:Fit the best-fit parameters a, b, and c:In[2]:= FindFit[%, a x Log[b + c x], {a, b, c}, x]Out[2]= {a -> 1.42076, b -> 1.65558, c -> 0.534645}

...用Mathematica 利用非线性最小二乘法 实现曲线拟合 求解方程_百度...
把后两行改成:modelf = Function[{x}, Evaluate[model \/. fit]][x]Plot[modelf, {x, 0, 0.5}, Epilog -> Map[Point, data]]注意也只是把[x]换了个位置,还是笔误,呵呵.运行可得 1.82153*10^-7 Sin[1450.28 x]^2 图我昨天上传了一天都没通过,真没想通这也不和谐了?今天从略...

...Mathematica 利用非线性最小二乘法 实现曲线拟合 求解方程
同意一楼的

怎样用mathematica拟合一个椭圆函数
73.Caxa中圆弧拟合样条曲线命令怎么使用?

相似回答