matlab 非线性拟合 y= 1 / (a + b * x)

一、题目

已知:

  • y= 1 / (a + b * x)

  • x = 1.0 : 0.4 : 2.6;

  • y = [0.931, 0.473, 0.297, 0.224, 0.168];

  • 通过各种拟合方法求a, b的值,画出拟合曲线,并比较结果,分析误差

二、思路导图

在这里插入图片描述

三、流 程 图

在这里插入图片描述

四、源程序

  • 主程序mainProgram.m
clear; %清除所有变量

%初始样本数据如下:
x = 1.0 : 0.4 : 2.6;
y = [0.931, 0.473, 0.297, 0.224, 0.168];

%求出a, b预估值,以及定义基函数
syms a b; %定义变量
[a, b] = solve(0.931 == 1 / (a + b * 1.0), 0.473 == 1 / (a + b * 1.4), a, b); %求出a, b预估值
beta0 = double([a, b]); %将变量sym类型转化成double类型
fun = @(beta, x)(1 ./ (beta(1) + beta(2) * x)); %基函数模型

%非线性拟合
[ab_lsqcurvefit, res_lsqcurvefit, r_lsqcurvefit] = lsqcurvefit(fun, beta0', x', y'); %返回五个参数,这里取前三个,待定系数,残差平方和以及残差
[ab_nlinfit, r_nlinfit] = nlinfit(x', y', fun, beta0'); %多元非线性拟合, ab_nlinfit为待定系数最优值,r_nlinfit为各点拟合的残差

%线性拟合
ab_polyfit = polyfit(x', 1 ./ y',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值