本帖最后由 pengcsu 于 2016-6-12 12:45 编辑

小弟最近做实验过程中,得到x,y两列数据,数据处理需要得到整数的y对应的x值。但是实验实际测得的都是非整数的y。小弟的思路是对x,y做多项式拟合,得到y(x)表达式,然后求解不同的yn(n=1,2,3...)下,多项式y(x)-yn=0的根,获得整数的yn对应的xn的值。

但是实际编程计算的时候,发现y(x)多项式次数竟然高达20多次,这样一来,迭代初值的选取对于解就很关键了。

于是小弟就编了一个循环语句,从实验数据x,y中找出离yn最接近的y值,用此y对应的x值作为迭代初值来解上述多项式y(x)-yn=0,但此时又提示方程无解。请问高人。上述问题该如何求解?

function chengxu()

clear;clc;

[x]=[24.968

29.968

34.968

39.968

44.968

49.968

54.968

59.968

64.968

69.968

74.968

79.968

84.968

89.968

94.968

99.968

104.968

109.968

114.968

119.968

124.968

129.968

134.968

139.968

144.968

149.968

154.968

159.968

164.968

169.968

174.968

179.968

184.968

189.968

194.968

199.968

204.968

209.968

214.968

219.968

224.968

229.968

234.968

239.968

244.968

249.968

254.968

259.968

264.968

269.968

274.968

279.968

284.968

289.968

294.968

299.968

304.968

309.968

314.968

319.968

324.968

329.968

334.968

339.968

344.968

349.968

354.968

359.968

364.968

369.968

374.968

379.968

384.968

389.968

394.968

399.968

404.968

409.968

414.968

419.968

424.968

429.968

434.968

439.968

444.968

449.968

454.968

459.968

464.968

469.968

474.968

479.968

484.968

489.968

494.968

499.968

504.968

509.968

514.968

519.968

524.968

529.968

534.968

539.968

544.968

549.968

554.968

559.968

564.968

569.968

574.968

579.968

584.968

589.968

594.968

599.968

604.968

609.968

614.968

619.968

624.968

629.968

634.968

639.968

644.968

649.968

654.968

659.968

664.968

669.968

674.968

679.968

684.968

689.968

694.968

699.968

704.968

709.968

714.968

719.968

724.968

729.968

734.968

739.968

744.968

749.968

754.968

759.968

764.968

769.968

774.968

779.968

784.968

789.968

794.968

799.968

804.968

809.968

814.968

819.968

824.968

829.968

834.968

839.968

844.968

849.968

854.968

859.968

864.968

869.968

874.968

879.968

884.968

889.968

894.968

899.968

904.968

909.968

914.968

919.968

924.968

929.968

934.968

939.968

944.968

949.968

954.968

959.968

964.968

969.968

974.968

979.968

984.968

989.968

994.968

]

[y]=[0

0.05472

0.2531

0.36114

0.39585

0.42126

0.4101

0.40093

0.36866

0.34101

0.32258

0.30415

0.29032

0.26055

0.23502

0.22581

0.21198

0.21198

0.22118

0.2212

0.19355

0.18433

0.18433

0.17051

0.15669

0.14286

0.13825

0.12903

0.11521

0.1106

0.10138

0.07373

0.05069

0.04147

0.00921

0.00922

-0.01382

-0.01383

-0.03226

-0.04608

-0.06452

-0.08756

-0.07834

-0.08756

-0.1106

-0.11982

-0.13825

-0.13825

-0.14747

-0.17972

-0.18433

-0.19355

-0.21198

-0.23041

-0.23963

-0.23502

-0.24424

-0.24885

-0.25806

-0.25806

-0.25346

-0.26267

-0.26267

-0.26267

-0.26267

-0.26267

-0.26728

-0.26728

-0.26728

-0.26728

-0.2765

-0.28571

-0.28111

-0.29032

-0.28571

-0.29954

-0.29032

-0.28111

-0.2765

-0.25806

-0.26728

-0.25346

-0.25806

-0.25806

-0.26267

-0.26267

-0.24885

-0.23963

-0.25806

-0.23962

-0.2212

-0.21198

-0.20276

-0.19813

-0.18432

-0.17512

-0.1659

-0.14286

-0.12903

-0.11521

-0.09677

-0.08756

-0.0553

-0.03687

0.01382

0.03226

0.05991

0.09217

0.12903

0.17051

0.19354

0.24419

0.28571

0.32719

0.36871

0.42396

0.47926

0.54377

0.59908

0.66359

0.7235

0.81567

0.8894

0.96322

1.04772

1.12409

1.2212

1.30414

1.39631

1.4779

1.56222

1.67281

1.77875

1.88018

2.00889

2.12442

2.23502

2.341

2.45161

2.5847

2.7098

2.82949

2.9585

3.08756

3.23502

3.38249

3.52535

3.67725

3.82419

3.97678

4.13378

4.29493

4.47467

4.65437

4.82995

5.01374

5.20265

5.40514

5.63134

5.84319

6.08746

6.33656

6.59907

6.89275

7.2212

7.57655

7.95015

8.36406

8.80655

9.29196

9.78712

10.33527

10.91511

11.54455

12.2

12.87039

13.55301

14.27623

14.99236

15.75269

16.5345

17.34496

18.19364

19.04598

19.93502

20.84707

21.79669

22.75194

23.76727

24.74717

25.64362

26.56645

27.54137

28.50983

29.48142

]

m=[0:1:30];

%找出与m值最接近的x,作为迭代初值

for ii=1:length(m)

a=m(ii)

for i=1:195

b(i)=abs(y(i)-a)

[B,n]=min(b)

end

q(ii)=x(n);

end

r=zeros(101,1);

z=zeros(101,101);

%找出最佳拟合次数n

for n=1:100

p=polyfit(x,y,n)

z=polyval(p,x)

r(n)=XGXS(z,y)

[R,n]=max(r);

end

p=polyfit(x,y,n)

hold on

disp('biaozhun')

disp(R)

disp(n)

disp(p)

z=polyval(p,x)

plot(x,y,'ro',x,z);

%% 求解T

T=zeros(length(m),1);

s=zeros(length(m),1);

f=@(T) polyval(p,T);

for ii=1:length(m)

T(ii)=fsolve(@(T) f(T)-m(ii),q(ii));

options=optimset('display','iter','tolfun',1e-2);

end

%% 输出

format long

disp('r为:')

disp(q)

format long

disp(T)

end

%计算相关系数

function r=XGXS(X,Y)

X1=mean(X);

Y1=mean(Y);

fenzi=sum((X-X1).*(Y-Y1));

fenmu=sqrt(sum((X-X1).^2)*sum((Y-Y1).^2));

r=fenzi/fenmu;  %相关系数

end

matlab根号下是多项式,多项式求根相关推荐

  1. Matlab之代数方程求解:方程组求根

    Matlab之代数方程求解:方程组求根 目录 方程组求根 1.solve( )求方程组的解 2.求解指数方程和对数函数方程 方程组求根 1.solve( )求方程组的解 (1)如求 eq1 = 'w ...

  2. matlab多项式计算(求根、由根创建、导数、积分)

    1 matlab多项式求根 举例:求解多项式3x4-10x3+15x+1000的根 Matlab代码 %% 多项式求解 p = [3 -10 0 15 1000]; r = roots(p); 运行结 ...

  3. 【MATLAB实验】数学实验实验求根问题三种方法、积分画图及古典密码设计(二分法、牛顿法、不动点迭代法)

    目录 特征值与特征向量 求最简型 编程题 求积分问题(quad.trapz.int) 求根问题(二分法.不动点迭代法.牛顿法) 1.二分法: 2.不动点迭代法 3.牛顿切线法 画图题 画螺旋曲线图 画 ...

  4. 5.2 matlab多项式计算(多项式的四则运算、求导、求值、求根)

    1.多项式的表示 在MATLAB中创建多项式向量时,注意三点: (1)多项式系数向量的顺序是从高到低. (2)多项式系数向量包含0次项系数,所以其长度为多项式最高次数加1. (3)如果有的项没有,系数 ...

  5. MATLAB新手简明使用教程(七)——使用matlab建立多项式以及求导,商求导乘积求导等——新手来看,保证看懂。

    前期回顾 上一期中,我们学了下面的知识: 定积分的基本概念和一些简单的几何意义. 使用 int 函数计算不定积分. 使用 int 函数计算定积分. 本期内容 本期我打算给大家介绍一下使用matlab对 ...

  6. matlab二元多项式求值,matlab多项式代入求值

    Matlab 多项式运算与方程求根 ? Matlab多项式运算无论是在线性代数中,还是信号处理.自动控制等理论 中,多项式运算都有着十分重要的地位,因此,MATLAB 为多项式的操作提供了相应的函数库 ...

  7. python numpy 多项式函数 求导求根

    python numpy 多项式函数 求导求根 """求出多项式的 导函数与根 """import numpy as np import m ...

  8. 求多项式浮点java思路,求多项式函数实数根的方法

    第29卷 第5期 Vol. 29No. 5昭通师范高等专科学校学报Journal of Zhaotong Teacher πs College 2007年10月Oct. 2007●数学 求多项式函数实 ...

  9. [2021CCPC 威海G] Shinyruo and KFC (下降幂多项式乘法+下降幂转普通幂+多项式多点求值)

    题意 给定 n n n 个正整数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1​,a2​,⋯,an​,并给定正整数 m m m,对于每个 k ∈ [ 1 , m ...

最新文章

  1. 诺基亚 IoT安全白皮书
  2. rocketmq集群安装部署过程(4.0.0版本)、安装中的常见问题举例
  3. Strut2的属性驱动,模型驱动的理解
  4. 第一章:The Missing Code Library--2.合法化输入
  5. SSH中为什么action需要用多例而dao层和service层为什么就用单例就可以
  6. php中mimes函数,wordpress函数check_upload_mimes()用法示例
  7. JS中的基本数据类型与引用数据类型
  8. pynq 环境搭建_蚂蚁S9矿板ZYNQ7010开发板移植PYNQ_2.5
  9. python与excel-超简单:用Python让Excel飞起来
  10. JavaScript中的变量 函数 对象的定义和方法
  11. MATLAB验证泊松亮斑,北大附中2014届高三物理一轮复习单元训练:波粒二象性
  12. Forge 养号手机在线源安装方式;
  13. python球的表面积和体积代码_C语言求球的表面积和体积
  14. 无线局域网怎么设置,更加安全?
  15. 企业印章使用与管理办法
  16. 国内专业垂直搜索引擎汇总
  17. 官方解释:Windows Vista和OpenGL
  18. BTC系列 - 用docker搭BTC Testnet
  19. 和第三方接口对接总结
  20. 计算机学院副院长竞聘稿,继续教育学院副院长竞聘演讲稿

热门文章

  1. JAVA旅游信息管理平台SSM【数据库设计、毕业设计、源码、开题报告】
  2. Architect架构师简历模板
  3. web基础学习(四)HTML5的主结构元素、表单
  4. 箭杆织布机计算机控制系统,高速喷水织布机单片机控制系统设计 毕业设计论文.doc...
  5. POI设置excel样式
  6. 玲听预告 | 蚂蚁金服布局区块链的底层心法是什么?
  7. Aspose.Word企业案例:Progetto Adele 使用 Aspose API 从预定义模板自动生成 Word 和 PDF 文件
  8. JavaScript--ES6【Promise】对象详解
  9. 交通·未来系列学术活动第1期:时空交通数据预测方法及应用
  10. windows 7 下让 Delphi 2010 开发的程序具备UAC管理员权限