多元曲线适合实验数据



最近,我解决了我很难工作的新挑战大约。我有数量描述塑料形成过程中物质行为的曲线并希望将数据放入优雅的电源法程中。材料对应变率敏感,所以我的曲线很少对于各种应变率。曲线是应力 - 应变曲线的形式。用数学语言:

f(B,C,x,y)=B^x*C^y

其中:

B = Strain,
C = Strain rate,
x = Strain coefficient,
y = Strain rate coefficient.

i具有C各种值的f(B)的曲线数量。

到目前为止我尝试过的所有内容都涉及线性功能或单个自变量。

我还考虑过简单的功能采用xy的最小值和最大值,创建每个值的矩阵,每个元素每个元素100个元素,然后计算第一个组合和标准偏差的功能。之后,迭代地从组合到组合并比较标准偏差。选择最低偏差作为解决方案的组合。

另一种可能性是使用fminuncfminsearch,但我不知道如何将各种曲线作为起点。

您可以帮助我编写代码查找xy

我可以在需要时提供曲线。我所有的数字都是自然的。

谢谢

您可以从技术上从单个f(b(中得出x和y,对于给定的c。

[x ylogC]=polyfit(log(B),log(f),1);
y=ylogC/log(C);

原因是,如果您获得预期功能的对数:

log(f(= log(b^x * c^y(

还原为:

log(f(= x log(b( y log(c(

这相对于日志(b(是线性的,因此,如果找到斜率,您将获得X,Y截距将为y*log(c(。

最适合我的解决方案是使用nlinfit。算法的外观:

betaWithoutNoise = [80;0.3;0.1]; # True values of our parameters
x=[0:0.1:1];
x21(1:11)=0.01;
x22(1:11)=0.1;
xmatrix=[[x;x21],[x;x22]];
realValues=betaWithoutNoise(1)*(xmatrix(1,:).^betaWithoutNoise(2)).*(xmatrix(2,:).^betaWithoutNoise(3))
#adding noise to the function values
noise=rand(size(realValues))-0.5;
noisyValues=realValues+noise;
#application of function model
modelfun=@(b,xmatrix) (b(1)*(xmatrix(1,:).^(b(2))).*(xmatrix(2,:).^b(3)));
beta0=[70,0.1,0.3];
[beta,R,J,covb,mse]=nlinfit(xmatrix,noisyValues,modelfun,beta0);

感谢大家的兴趣和帮助。

最新更新