matlab 条件方程组的解,Matlab带约束条件的非线性方程组求解

调试2天了,一定要帮帮了,你的程序有2大毛病。

一是你分辨不清符号计算和数值计算的区别

具体就是你的问题属于数值计算,不需要用到syms这些符号计算方面的内容

二是你对函数输入参数把握不明确

fsolve的第一个输入参数是函数句柄类型,你传进去的是一个字符串。用C语言的思维来想一想,一个字符串类型的变量

MATALB如何能够将它识别为一个函数类型呢?程序稍加修改,你应该可以看懂

Editor:

clc; clear all;

w=0.2; c=0.0; k1=0.4; k3=0.1; F=0.05;

p=[w c k1 k3 F];

format long;

[x fval exitflag]=fsolve(@(x)numer2(x,p),[0.1383 0.02104 0.1335 0.00186],optimset('Display','iter')) %#ok

function y=numer2(x,p)

a1=x(1);a3=x(2);b1=x(3);b3=x(4);

w=p(1);c=p(2);k1=p(3);k3=p(4);F=p(5);

y=[-w^2*a1+c*w*b1+a1*k1+3*a1^3*k3/4+3*a1^2*a3/k3+3*a1*a3^2*k3/2+3*a1*b1^2*k3/4-3*a3*b1^2*k3/4+1.5*a1*b1*b3*k3+1.5*a1*b3^2*k3-F;

-c*w*a1-w^2*b1+b1*k1+0.75*a1^

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值